Files
2022-01-21 11:34:23 +01:00

76 lines
1.7 KiB
JavaScript

import actions from '../src/store/actions';
import getters from '../src/store/getters';
import mutations from '../src/store/mutations';
import trueState from '../src/store/state';
const countries = [
{
name: 'Colombia',
capital: 'Bogotá',
},
{
name: 'Romania',
capital: 'Bucharest',
},
];
const state = { countries };
let url = '';
let mockError = false;
jest.mock('axios', () => ({
get: (_url) => {
return new Promise((resolve) => {
if (mockError) throw Error();
url = _url;
resolve(true);
});
},
}));
const commit = jest.fn();
commit.mockReturnValue('SET_COUNTRIES', countries);
describe('actions', () => {
actions.getCountries({ commit });
it('url check', () => {
expect.assertions(2);
expect(url).toBeDefined();
expect(url).toBe('https://restcountries.eu/rest/v2/all');
});
it('commit', () => {
expect.assertions(2);
expect(commit).toBeCalled();
expect(commit).toHaveBeenCalledTimes(1);
});
});
describe('getters', () => {
const testGetters = getters.allCountries(state);
it('returns countries', () => {
expect.assertions(2);
expect(testGetters).toBeDefined();
expect(testGetters).toEqual(state.countries);
});
});
describe('mutations', () => {
it('adds countries to the state', () => {
expect.assertions(2);
mutations.SET_COUNTRIES(state, countries);
expect(mutations).toBeDefined();
expect(state).toEqual({
countries,
});
});
});
describe('state', () => {
it('state exists and has countries', () => {
expect.assertions(3);
expect(trueState).toBeDefined();
expect(trueState).toHaveProperty('countries');
expect(trueState).not.toHaveProperty('cats');
});
});