浏览代码

developpment rebase

Vincent GUFFON 3 年之前
父节点
当前提交
a47392ce27

+ 3 - 5
components/Layout/Subheader.vue

@@ -29,17 +29,15 @@ Contient entre autres le breadcrumb, les commandes de changement d'année et les
 </template>
 
 <script lang="ts">
-import {computed, ComputedRef, defineComponent, ref, Ref, useContext} from '@nuxtjs/composition-api'
+import {defineComponent, ref, Ref, useContext} from '@nuxtjs/composition-api'
+import {UseAccess} from "~/composables/utils/useAccess";
 
 export default defineComponent({
   setup () {
     const {store} = useContext()
+    const {hasMenuOrIsTeacher} = UseAccess(store)
     const showDateTimeRange: Ref<boolean> = ref(false)
 
-    const hasMenuOrIsTeacher: ComputedRef<boolean> = computed(
-      () => store.state.profile.access.hasLateralMenu || store.state.profile.access.isTeacher
-    )
-
     return {
       showDateTimeRange,
       hasMenuOrIsTeacher

+ 12 - 0
composables/utils/useAccess.ts

@@ -0,0 +1,12 @@
+import {AccessStore} from "~/types/interfaces";
+import {computed, ComputedRef} from "@nuxtjs/composition-api";
+
+export function UseAccess(store: AccessStore){
+  const hasMenuOrIsTeacher: ComputedRef<boolean> = computed(
+    () => store.state.profile.access.hasLateralMenu || store.state.profile.access.isTeacher
+  )
+
+  return {
+    hasMenuOrIsTeacher
+  }
+}

+ 5 - 0
tests/unit/component/Layout/SubHeader.spec.js

@@ -1,10 +1,14 @@
 import { shallowMount } from '@vue/test-utils'
 import Vuetify from 'vuetify'
 import SubHeader from '~/components/Layout/Subheader'
+import {UseAccess} from "~/composables/utils/useAccess";
+jest.mock('~/composables/utils/useAccess', );
 
 let wrapper
 let vuetify
 beforeEach(() => {
+  UseAccess.mockReturnValue({hasMenuOrIsTeacher: true});
+
   vuetify = new Vuetify()
   wrapper = shallowMount(SubHeader, {
     stubs: [
@@ -19,6 +23,7 @@ beforeEach(() => {
 })
 
 describe('LayoutSubHeaderActivityYear', () => {
+
   it('should display by default', async () => {
     expect(wrapper.find('.activity-year').exists()).toBeTruthy()
   })

+ 3 - 3
tests/unit/composables/layout/menu.spec.ts

@@ -5,7 +5,7 @@ describe('constructMenu()', () => {
     const menuWithoutChildren = new BaseMenu({ baseURL_adminLegacy: 'base_url' }).constructMenu('children', {name:'icon'}, '/url', false)
     expect(menuWithoutChildren).toStrictEqual({
       title: 'children',
-      icon: 'icon',
+      icon: {name:'icon'},
       to: '/url',
       isExternalLink: false
     })
@@ -18,12 +18,12 @@ describe('constructMenu()', () => {
       children: [
         {
           title: 'children',
-          icon: 'icon',
+          icon: {name:'icon'},
           to: '/url',
           isExternalLink: false
         }
       ],
-      icon: 'icon',
+      icon: {name:'icon'},
       title: 'parent'
     })
   })

+ 37 - 0
tests/unit/composables/utils/useAccess.spec.ts

@@ -0,0 +1,37 @@
+import {createStore, mountComposition} from "~/tests/unit/Helpers";
+import {accessProfile as accessModule} from "~/tests/unit/fixture/state/profile";
+import {AccessStore} from "~/types/interfaces";
+import {UseAccess} from "~/composables/utils/useAccess";
+
+let store:AccessStore
+let useAccessMount:any
+
+beforeAll(() => {
+  store = createStore()
+  store.registerModule('profile', {})
+  store.registerModule(['profile', 'access'], accessModule)
+
+  const component = mountComposition(() => {
+    useAccessMount = UseAccess(store)
+  });
+})
+
+describe('hasMenuOrIsTeacher()', () => {
+  it('must to return false', () => {
+    const {hasMenuOrIsTeacher} = useAccessMount
+    expect(hasMenuOrIsTeacher.value).toBeFalsy()
+  })
+
+  it('must to return true because user have a lateral menu', () => {
+    store.commit('profile/access/setHasLateralMenu', true)
+    const {hasMenuOrIsTeacher} = useAccessMount
+    expect(hasMenuOrIsTeacher.value).toBeFalsy()
+  })
+
+  it('must to return true because user is a teacher', () => {
+    store.commit('profile/access/setHasLateralMenu', false)
+    store.commit('profile/access/setIsTeacher', true)
+    const {hasMenuOrIsTeacher} = useAccessMount
+    expect(hasMenuOrIsTeacher.value).toBeFalsy()
+  })
+})