296 lines
6.5 KiB
TypeScript
296 lines
6.5 KiB
TypeScript
/**
|
|
* Internal dependencies
|
|
*/
|
|
import reducer from '../reducers';
|
|
import { defaultState } from '../default-state';
|
|
import { STATUS } from '../constants';
|
|
import * as actions from '../actions';
|
|
|
|
describe.only( 'Checkout Store Reducer', () => {
|
|
it( 'should return the initial state', () => {
|
|
expect( reducer( undefined, {} ) ).toEqual( defaultState );
|
|
} );
|
|
|
|
it( 'should handle SET_IDLE', () => {
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.IDLE,
|
|
};
|
|
|
|
expect( reducer( defaultState, actions.__internalSetIdle() ) ).toEqual(
|
|
expectedState
|
|
);
|
|
} );
|
|
|
|
it( 'should handle SET_REDIRECT_URL', () => {
|
|
const expectedState = {
|
|
...defaultState,
|
|
redirectUrl: 'https://example.com',
|
|
status: STATUS.IDLE,
|
|
};
|
|
|
|
expect(
|
|
reducer(
|
|
defaultState,
|
|
actions.__internalSetRedirectUrl( 'https://example.com' )
|
|
)
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle SET_COMPLETE', () => {
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.COMPLETE,
|
|
redirectUrl: 'https://example.com',
|
|
};
|
|
|
|
expect(
|
|
reducer(
|
|
defaultState,
|
|
actions.__internalSetComplete( {
|
|
redirectUrl: 'https://example.com',
|
|
} )
|
|
)
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle SET_PROCESSING', () => {
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.PROCESSING,
|
|
};
|
|
|
|
expect(
|
|
reducer( defaultState, actions.__internalSetProcessing() )
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle SET_HAS_ERROR when status is PROCESSING', () => {
|
|
const initialState = { ...defaultState, status: STATUS.PROCESSING };
|
|
|
|
const expectedState = {
|
|
...defaultState,
|
|
hasError: true,
|
|
status: STATUS.IDLE,
|
|
};
|
|
|
|
expect(
|
|
reducer( initialState, actions.__internalSetHasError( true ) )
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle SET_HAS_ERROR when status is BEFORE_PROCESSING', () => {
|
|
const initialState = {
|
|
...defaultState,
|
|
status: STATUS.BEFORE_PROCESSING,
|
|
};
|
|
|
|
const expectedState = {
|
|
...defaultState,
|
|
hasError: true,
|
|
status: STATUS.IDLE,
|
|
};
|
|
|
|
expect(
|
|
reducer( initialState, actions.__internalSetHasError( true ) )
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle SET_HAS_ERROR when status is anything else', () => {
|
|
const initialState = { ...defaultState, status: STATUS.PRISTINE };
|
|
|
|
const expectedState = {
|
|
...defaultState,
|
|
hasError: false,
|
|
status: STATUS.IDLE,
|
|
};
|
|
|
|
expect(
|
|
reducer( initialState, actions.__internalSetHasError( false ) )
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle SET_BEFORE_PROCESSING', () => {
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.BEFORE_PROCESSING,
|
|
};
|
|
|
|
expect(
|
|
reducer( defaultState, actions.__internalSetBeforeProcessing() )
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle SET_AFTER_PROCESSING', () => {
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.AFTER_PROCESSING,
|
|
};
|
|
|
|
expect(
|
|
reducer( defaultState, actions.__internalSetAfterProcessing() )
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle INCREMENT_CALCULATING', () => {
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.IDLE,
|
|
calculatingCount: 1,
|
|
};
|
|
|
|
expect(
|
|
reducer( defaultState, actions.__internalIncrementCalculating() )
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle DECREMENT_CALCULATING', () => {
|
|
const initialState = {
|
|
...defaultState,
|
|
calculatingCount: 1,
|
|
};
|
|
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.IDLE,
|
|
calculatingCount: 0,
|
|
};
|
|
|
|
expect(
|
|
reducer( initialState, actions.__internalDecrementCalculating() )
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle SET_CUSTOMER_ID', () => {
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.IDLE,
|
|
customerId: 1,
|
|
};
|
|
|
|
expect(
|
|
reducer( defaultState, actions.__internalSetCustomerId( 1 ) )
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle SET_USE_SHIPPING_AS_BILLING', () => {
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.IDLE,
|
|
useShippingAsBilling: false,
|
|
};
|
|
|
|
expect(
|
|
reducer(
|
|
defaultState,
|
|
actions.__internalSetUseShippingAsBilling( false )
|
|
)
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle SET_SHOULD_CREATE_ACCOUNT', () => {
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.IDLE,
|
|
shouldCreateAccount: true,
|
|
};
|
|
|
|
expect(
|
|
reducer(
|
|
defaultState,
|
|
actions.__internalSetShouldCreateAccount( true )
|
|
)
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
it( 'should handle SET_ORDER_NOTES', () => {
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.IDLE,
|
|
orderNotes: 'test',
|
|
};
|
|
|
|
expect(
|
|
reducer( defaultState, actions.__internalSetOrderNotes( 'test' ) )
|
|
).toEqual( expectedState );
|
|
} );
|
|
|
|
describe( 'should handle SET_EXTENSION_DATA', () => {
|
|
it( 'should set data under a namespace', () => {
|
|
const mockExtensionData = {
|
|
extensionNamespace: {
|
|
testKey: 'test-value',
|
|
testKey2: 'test-value-2',
|
|
},
|
|
};
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.IDLE,
|
|
extensionData: mockExtensionData,
|
|
};
|
|
expect(
|
|
reducer(
|
|
defaultState,
|
|
actions.__internalSetExtensionData(
|
|
'extensionNamespace',
|
|
mockExtensionData.extensionNamespace
|
|
)
|
|
)
|
|
).toEqual( expectedState );
|
|
} );
|
|
it( 'should append data under a namespace', () => {
|
|
const mockExtensionData = {
|
|
extensionNamespace: {
|
|
testKey: 'test-value',
|
|
testKey2: 'test-value-2',
|
|
},
|
|
};
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.IDLE,
|
|
extensionData: mockExtensionData,
|
|
};
|
|
const firstState = reducer(
|
|
defaultState,
|
|
actions.__internalSetExtensionData( 'extensionNamespace', {
|
|
testKey: 'test-value',
|
|
} )
|
|
);
|
|
const secondState = reducer(
|
|
firstState,
|
|
actions.__internalSetExtensionData( 'extensionNamespace', {
|
|
testKey2: 'test-value-2',
|
|
} )
|
|
);
|
|
expect( secondState ).toEqual( expectedState );
|
|
} );
|
|
it( 'support replacing data under a namespace', () => {
|
|
const mockExtensionData = {
|
|
extensionNamespace: {
|
|
testKey: 'test-value',
|
|
},
|
|
};
|
|
const expectedState = {
|
|
...defaultState,
|
|
status: STATUS.IDLE,
|
|
extensionData: mockExtensionData,
|
|
};
|
|
const firstState = reducer(
|
|
defaultState,
|
|
actions.__internalSetExtensionData( 'extensionNamespace', {
|
|
testKeyOld: 'test-value',
|
|
} )
|
|
);
|
|
const secondState = reducer(
|
|
firstState,
|
|
actions.__internalSetExtensionData(
|
|
'extensionNamespace',
|
|
{ testKey: 'test-value' },
|
|
true
|
|
)
|
|
);
|
|
expect( secondState ).toEqual( expectedState );
|
|
} );
|
|
} );
|
|
} );
|