Skip to content
Snippets Groups Projects

Load frontend courses through API

15 files
+ 304
251
Compare changes
  • Side-by-side
  • Inline

Files

+ 103
0
import * as types from '@/store/types';
import { shallowMount, createLocalVue } from '@vue/test-utils';
import App from '../App.vue';
const localVue = createLocalVue();
// Mock components
const routerView = {
name: 'router-view',
render: h => h('div'),
};
const routerLink = {
name: 'router-link',
render: h => h('div'),
};
localVue.component('router-view', routerView);
localVue.component('router-link', routerLink);
describe('The App', () => {
let $router;
let $http;
let $store;
let getters;
beforeEach(() => {
$router = {
push: jest.fn(),
};
$http = {
get: jest.fn().mockResolvedValue(),
};
getters = {
[types.GET_USER_REGISTERED]: jest.fn().mockReturnValue(false),
[types.GET_USER_FULL_NAME]: jest.fn().mockReturnValue('first_name last_name'),
};
$store = {
dispatch: jest.fn().mockReturnValue(Promise.resolve()),
getters,
};
});
const createWrapper = () => shallowMount(App, {
localVue,
// store,
mocks: {
$router,
$http,
$store,
},
});
it('should always go to home', () => {
// createStore();
createWrapper();
expect($router.push).toBeCalled();
expect($router.push).toBeCalledWith('/');
});
it('should go to login when clicking home without a registered user', () => {
getters[types.GET_USER_REGISTERED].mockReturnValue(false);
const wrapper = createWrapper();
// Router trigger on startup
expect($router.push).toBeCalled();
expect($router.push).toBeCalledWith('/');
// Click home
wrapper.vm.homePage();
expect($router.push).toHaveBeenCalledTimes(2);
expect($router.push.mock.calls[1]).toEqual([{ name: 'login' }]);
});
it('should go to dash when clicking home with a registered user', () => {
getters[types.GET_USER_REGISTERED].mockReturnValue(true);
const wrapper = createWrapper();
// Router trigger on startup
expect($router.push).toBeCalled();
expect($router.push).toBeCalledWith('/');
// Click home
wrapper.vm.homePage();
expect($router.push).toHaveBeenCalledTimes(2);
expect($router.push.mock.calls[1]).toEqual([{ name: 'dash' }]);
});
it('should load the courses on startup', () => {
const mockReturn = {
json: jest.fn().mockResolvedValue({ name: 'course_list' }),
};
$http.get.mockResolvedValue(mockReturn);
createWrapper();
// Use timeout as I cannot figure out how to correctly wait for the promises
setTimeout(() => {
expect(mockReturn.json).toBeCalled();
expect($store.dispatch).toBeCalled();
}, 100);
});
});
Loading