48 lines
1.7 KiB
JavaScript
48 lines
1.7 KiB
JavaScript
import queryString from 'query-string';
|
|
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
|
|
import * as utils from './utils';
|
|
|
|
jest.mock('query-string', () => ({
|
|
stringifyUrl: jest.fn((url, options) => ({ url, options })),
|
|
stringify: jest.fn((data) => data),
|
|
}));
|
|
jest.mock('@edx/frontend-platform/auth', () => ({
|
|
getAuthenticatedHttpClient: jest.fn(),
|
|
}));
|
|
|
|
describe('lms service utils', () => {
|
|
describe('get', () => {
|
|
it('forwards arguments to authenticatedHttpClient().get', () => {
|
|
const get = jest.fn((...args) => ({ get: args }));
|
|
getAuthenticatedHttpClient.mockReturnValue({ get });
|
|
const args = ['some', 'args', 'for', 'the', 'test'];
|
|
expect(utils.get(...args)).toEqual(get(...args));
|
|
});
|
|
});
|
|
describe('post', () => {
|
|
it('forwards arguments to authenticatedHttpClient().post', () => {
|
|
const post = jest.fn((...args) => ({ post: args }));
|
|
getAuthenticatedHttpClient.mockReturnValue({ post });
|
|
const url = 'some url';
|
|
const body = {
|
|
some: 'body',
|
|
for: 'the',
|
|
test: 'yay',
|
|
};
|
|
const expectedUrl = utils.post(url, body);
|
|
expect(queryString.stringify).toHaveBeenCalledWith(body);
|
|
expect(expectedUrl).toEqual(post(url, body));
|
|
});
|
|
});
|
|
describe('stringifyUrl', () => {
|
|
it('forwards url and query to stringifyUrl with options to skip null and ""', () => {
|
|
const url = 'here.com';
|
|
const query = { some: 'set', of: 'queryParams' };
|
|
const options = { skipNull: true, skipEmptyString: true };
|
|
expect(utils.stringifyUrl(url, query)).toEqual(
|
|
queryString.stringifyUrl({ url, query }, options),
|
|
);
|
|
});
|
|
});
|
|
});
|