From fd446df69b4308a34f194a6f2bddd6e87ebe68c0 Mon Sep 17 00:00:00 2001 From: Dominik Seeger <dominik.seeger@gmx.net> Date: Sat, 29 Dec 2018 18:09:40 +0100 Subject: [PATCH] Added first tests for AutoLogout component --- frontend/src/components/AutoLogout.vue | 2 + .../AutoLogout.spec.ts} | 43 +++++++++++++++---- 2 files changed, 36 insertions(+), 9 deletions(-) rename frontend/tests/unit/{autologout.spec.ts => components/AutoLogout.spec.ts} (51%) diff --git a/frontend/src/components/AutoLogout.vue b/frontend/src/components/AutoLogout.vue index fd45c04d..44af1434 100644 --- a/frontend/src/components/AutoLogout.vue +++ b/frontend/src/components/AutoLogout.vue @@ -15,10 +15,12 @@ </v-card-text> <v-card-actions> <v-btn flat color="grey lighten-0" + id="logout-btn" @click="logout" >Logout now</v-btn> <v-spacer/> <v-btn flat color="blue darken-2" + id="continue-btn" @click="continueWork" >Continue</v-btn> </v-card-actions> diff --git a/frontend/tests/unit/autologout.spec.ts b/frontend/tests/unit/components/AutoLogout.spec.ts similarity index 51% rename from frontend/tests/unit/autologout.spec.ts rename to frontend/tests/unit/components/AutoLogout.spec.ts index 823f4815..e33bdabf 100644 --- a/frontend/tests/unit/autologout.spec.ts +++ b/frontend/tests/unit/components/AutoLogout.spec.ts @@ -1,33 +1,58 @@ import Vuex from 'vuex' import { mount, createLocalVue } from '@vue/test-utils' -import AutoLogout from '../../src/components/AutoLogout.vue' +import AutoLogout from '@/components/AutoLogout.vue' import sinon from 'sinon' import { Authentication } from '@/store/modules/authentication' - import chai from 'chai' chai.should() -const localVue = createLocalVue(); -localVue.use(Vuex); +let localVue = createLocalVue() +localVue.use(Vuex) describe('Auto Logout Unit Tests', () => { + let store: any = null + let consoleTemp = { + warn: console.warn, + error: console.error, + } + + before(function() { + console.warn = function() {} + console.error = function() {} + }) + + after(function() { + console.warn = consoleTemp.warn + console.error = consoleTemp.error + }) + + beforeEach(() => { + store = new Vuex.Store({ + state: {} + }) + }) + afterEach(() => { sinon.restore() }) - + it('should be hidden by default', () => { - let store = new Vuex.Store({}) - let wrapper = mount(AutoLogout, { localVue, store }) + let wrapper = mount(AutoLogout, { localVue: localVue, store }) wrapper.vm.$data.logoutDialog.should.equal(false) wrapper.html().should.contain('<div class="v-dialog v-dialog--persistent" style="max-width: 30%; display: none;">') }) it('should be visible when logoutDialog is set to true', () => { + let store = new Vuex.Store({}) + let wrapper = mount(AutoLogout, { localVue, store }) + wrapper.vm.$data.logoutDialog = true + wrapper.html().should.contain('<div class="v-dialog v-dialog--active v-dialog--persistent" style="max-width: 30%;">') + }) + it('should get a refresh token from the server when user clicks button', () => { let spy = sinon.spy() sinon.replace(Authentication, 'refreshJWT', spy) let store = new Vuex.Store({}) let wrapper = mount(AutoLogout, { localVue, store }) - // @ts-ignore - wrapper.vm.continueWork() + wrapper.find('#continue-btn').trigger('click') spy.called.should.equal(true) }) }) -- GitLab