-
Notifications
You must be signed in to change notification settings - Fork 168
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
User management -> app template component -> add test (#7461)
Add tests
- Loading branch information
Jan
authored
Aug 18, 2022
1 parent
d1c1142
commit cde454b
Showing
2 changed files
with
120 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
119 changes: 119 additions & 0 deletions
119
packages/web-app-user-management/tests/unit/components/AppTemplate.spec.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
import Vuex from 'vuex' | ||
import { mount, createLocalVue } from '@vue/test-utils' | ||
import AppTemplate from '../../../src/components/AppTemplate' | ||
import stubs from 'tests/unit/stubs' | ||
import DesignSystem from 'owncloud-design-system' | ||
|
||
const localVue = createLocalVue() | ||
localVue.use(Vuex) | ||
localVue.use(DesignSystem) | ||
|
||
const stubSelectors = { | ||
ocBreadcrumb: 'oc-breadcrumb-stub', | ||
appLoadingSpinner: 'app-loading-spinner-stub', | ||
sideBar: 'side-bar-stub' | ||
} | ||
|
||
const elSelectors = { | ||
userManagementWrapper: '#user-management-wrapper' | ||
} | ||
|
||
afterEach(() => jest.clearAllMocks()) | ||
|
||
describe('AppTemplate', () => { | ||
describe('loading is true', () => { | ||
it('should show app loading spinner component', () => { | ||
const wrapper = getWrapper({ propsData: { loading: true } }) | ||
expect(wrapper.find(stubSelectors.appLoadingSpinner).exists()).toBeTruthy() | ||
}) | ||
it('should not show side bar component', () => { | ||
const wrapper = getWrapper({ propsData: { loading: true } }) | ||
expect(wrapper.find(stubSelectors.sideBar).exists()).toBeFalsy() | ||
}) | ||
it('should not show user management wrapper', () => { | ||
const wrapper = getWrapper({ propsData: { loading: true } }) | ||
expect(wrapper.find(elSelectors.userManagementWrapper).exists()).toBeFalsy() | ||
}) | ||
}) | ||
describe('loading is false', () => { | ||
it('should not show app loading spinner component', () => { | ||
const wrapper = getWrapper({ propsData: { loading: false } }) | ||
expect(wrapper.find(stubSelectors.appLoadingSpinner).exists()).toBeFalsy() | ||
}) | ||
it('should show side bar component', () => { | ||
const wrapper = getWrapper({ propsData: { loading: false } }) | ||
expect(wrapper.find(stubSelectors.sideBar).exists()).toBeTruthy() | ||
}) | ||
it('should show user management wrapper', () => { | ||
const wrapper = getWrapper({ propsData: { loading: false } }) | ||
expect(wrapper.find(elSelectors.userManagementWrapper).exists()).toBeTruthy() | ||
}) | ||
}) | ||
describe('sideBarOpen is true', () => { | ||
it('should show side bar component', () => { | ||
const wrapper = getWrapper({ propsData: { sideBarOpen: true } }) | ||
expect(wrapper.find(stubSelectors.sideBar).exists()).toBeTruthy() | ||
}) | ||
}) | ||
describe('sideBarOpen is false', () => { | ||
it('should not side bar component', () => { | ||
const wrapper = getWrapper({ propsData: { sideBarOpen: false } }) | ||
expect(wrapper.find(stubSelectors.sideBar).exists()).toBeFalsy() | ||
}) | ||
}) | ||
describe('property propagation', () => { | ||
describe('oc breadcrumb component', () => { | ||
it('receives correct props', () => { | ||
const wrapper = getWrapper({ | ||
propsData: { breadcrumbs: [{ text: 'User management' }, { text: 'Users' }] } | ||
}) | ||
expect(wrapper.find(stubSelectors.ocBreadcrumb).props().items).toEqual([ | ||
{ text: 'User management' }, | ||
{ text: 'Users' } | ||
]) | ||
}) | ||
}) | ||
describe('side bar component', () => { | ||
it('receives correct props', () => { | ||
const wrapper = getWrapper({ | ||
propsData: { | ||
sideBarActivePanel: 'DetailsPanel', | ||
sideBarAvailablePanels: [{ app: 'DetailsPanel' }] | ||
} | ||
}) | ||
expect(wrapper.find(stubSelectors.sideBar).props().sidebarActivePanel).toEqual( | ||
'DetailsPanel' | ||
) | ||
expect(wrapper.find(stubSelectors.sideBar).props().availablePanels).toEqual([ | ||
{ app: 'DetailsPanel' } | ||
]) | ||
}) | ||
}) | ||
}) | ||
}) | ||
|
||
function getWrapper({ propsData = {} } = {}) { | ||
return mount(AppTemplate, { | ||
localVue, | ||
mocks: { | ||
$gettext: jest.fn(), | ||
$gettextInterpolate: jest.fn() | ||
}, | ||
propsData: { | ||
loading: false, | ||
breadcrumbs: [], | ||
sideBarOpen: true, | ||
sideBarAvailablePanels: [], | ||
sideBarActivePanel: '', | ||
...propsData | ||
}, | ||
directives: { | ||
'oc-tooltip': jest.fn() | ||
}, | ||
stubs: { | ||
...stubs, | ||
'app-loading-spinner': true, | ||
'side-bar': true | ||
} | ||
}) | ||
} |