You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.1 KiB
TypeScript

import { exampleMethod } from '../../src/methods/exampleMethod';
import { client } from '../../src/client';
/** SETUP */
const API_METHOD_NAME = 'exampleEndpoint';
const PARAMS_MOCK = { id: 1 };
const RESPONSE_MOCK = { data: "Hello, Vue Storefront Integrator!" };
const ERROR_MOCK = new Error('error');
jest.mock('../../src/client', () => ({
client: {
post: jest.fn(() => RESPONSE_MOCK)
}
}));
/** TESTS */
describe('[Integration Boilerplate SDK][unit] exampleMethod', () => {
beforeEach(() => {
jest.clearAllMocks();
})
it('makes a single call to API Middleware', async () => {
await exampleMethod(PARAMS_MOCK);
expect(client.post).toBeCalledTimes(1);
});
it('makes a call to API Middleware with the right params', async () => {
await exampleMethod(PARAMS_MOCK);
expect(client.post).toBeCalledWith(API_METHOD_NAME, PARAMS_MOCK);
});
it('throws an exception in case of network error', async () => {
expect.hasAssertions();
(client.post as jest.Mock).mockRejectedValueOnce(ERROR_MOCK);
try {
await exampleMethod(PARAMS_MOCK);
} catch (err) {
expect(err).toBe(ERROR_MOCK);
}
});
});