98 lines
2.6 KiB
TypeScript
98 lines
2.6 KiB
TypeScript
|
/**
|
||
|
* External dependencies
|
||
|
*/
|
||
|
import { registerPaymentMethodExtensionCallbacks } from '@woocommerce/blocks-registry';
|
||
|
|
||
|
/**
|
||
|
* Internal dependencies
|
||
|
*/
|
||
|
import { canMakePaymentExtensionsCallbacks } from '../extensions-config';
|
||
|
|
||
|
describe( 'registerPaymentMethodExtensionCallbacks', () => {
|
||
|
it( 'Logs an error to console if namespace is already registered', () => {
|
||
|
registerPaymentMethodExtensionCallbacks(
|
||
|
'woocommerce-marketplace-extension',
|
||
|
{
|
||
|
cod: () => false,
|
||
|
}
|
||
|
);
|
||
|
|
||
|
// eslint-disable-next-line no-console
|
||
|
expect( console ).not.toHaveErrored();
|
||
|
registerPaymentMethodExtensionCallbacks(
|
||
|
'woocommerce-marketplace-extension',
|
||
|
{
|
||
|
cod: () => false,
|
||
|
}
|
||
|
);
|
||
|
expect( console ).toHaveErrored();
|
||
|
|
||
|
// eslint-disable-next-line no-console
|
||
|
expect( console.error ).toHaveBeenCalledTimes( 1 );
|
||
|
} );
|
||
|
|
||
|
it( 'Does not overwrite a namespace if a second extensions tries to register with the same name', () => {
|
||
|
const firstCodCallback = jest.fn().mockReturnValue( false );
|
||
|
registerPaymentMethodExtensionCallbacks(
|
||
|
'overwrite-marketplace-extension',
|
||
|
{
|
||
|
cod: firstCodCallback,
|
||
|
}
|
||
|
);
|
||
|
|
||
|
// eslint-disable-next-line no-console
|
||
|
expect( console ).not.toHaveErrored();
|
||
|
registerPaymentMethodExtensionCallbacks(
|
||
|
'overwrite-marketplace-extension',
|
||
|
{
|
||
|
cod: () => false,
|
||
|
}
|
||
|
);
|
||
|
|
||
|
expect(
|
||
|
canMakePaymentExtensionsCallbacks[
|
||
|
'overwrite-marketplace-extension'
|
||
|
].cod
|
||
|
).toEqual( firstCodCallback );
|
||
|
} );
|
||
|
|
||
|
it( 'Logs an error if a supplied callback is not a function and does not register the callback for that method', () => {
|
||
|
registerPaymentMethodExtensionCallbacks(
|
||
|
'other-woocommerce-marketplace-extension',
|
||
|
{
|
||
|
cod: false,
|
||
|
cheque: () => true,
|
||
|
}
|
||
|
);
|
||
|
|
||
|
// eslint-disable-next-line no-console
|
||
|
expect( console ).toHaveErrored();
|
||
|
expect( canMakePaymentExtensionsCallbacks ).toHaveProperty(
|
||
|
'other-woocommerce-marketplace-extension'
|
||
|
);
|
||
|
expect(
|
||
|
canMakePaymentExtensionsCallbacks[
|
||
|
'other-woocommerce-marketplace-extension'
|
||
|
]
|
||
|
).not.toHaveProperty( 'cod' );
|
||
|
expect(
|
||
|
canMakePaymentExtensionsCallbacks[
|
||
|
'other-woocommerce-marketplace-extension'
|
||
|
]
|
||
|
).toHaveProperty( 'cheque' );
|
||
|
} );
|
||
|
|
||
|
it( 'Adds the namespace and callbacks to the canMakePaymentExtensionCallbacks object', () => {
|
||
|
// We are using a new namespace here because canMakePaymentExtensionsCallbacks cannot be reset between tests.
|
||
|
registerPaymentMethodExtensionCallbacks(
|
||
|
'third-woocommerce-marketplace-extension',
|
||
|
{
|
||
|
cod: () => false,
|
||
|
}
|
||
|
);
|
||
|
expect( canMakePaymentExtensionsCallbacks ).toHaveProperty(
|
||
|
'third-woocommerce-marketplace-extension'
|
||
|
);
|
||
|
} );
|
||
|
} );
|