@cnamts/synapse 1.0.12 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{DateFilter-DoCcOfDW.js → DateFilter-_EFzsvvM.js} +1 -1
- package/dist/{NumberFilter-9uR8uo6p.js → NumberFilter-CUxEbKJh.js} +1 -1
- package/dist/{PeriodFilter-CxN5ini7.js → PeriodFilter-D5ueqtKy.js} +1 -1
- package/dist/{SelectFilter-bfxipgvt.js → SelectFilter-BciBNydy.js} +1 -1
- package/dist/{TextFilter-yCnWcmW2.js → TextFilter-DMN_WAQB.js} +1 -1
- package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordion.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +44 -62
- package/dist/components/Amelipro/AmeliproCard/AmeliproCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +5 -5
- package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +24 -32
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +36 -48
- package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +44 -62
- package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +44 -62
- package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +0 -4
- package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +12 -16
- package/dist/components/Captcha/Captcha.d.ts +68 -0
- package/dist/components/Captcha/CaptchaAlert.d.ts +13 -0
- package/dist/components/Captcha/CaptchaBase.d.ts +55 -0
- package/dist/components/Captcha/CaptchaBtn.d.ts +12 -0
- package/dist/components/Captcha/CaptchaForm.d.ts +16 -0
- package/dist/components/Captcha/CaptchaImg.d.ts +12 -0
- package/dist/components/Captcha/CaptchaInformation.d.ts +20 -0
- package/dist/components/Captcha/captchaApi.d.ts +41 -0
- package/dist/components/Captcha/icons/volumeUp.d.ts +2 -0
- package/dist/components/Captcha/locales.d.ts +35 -0
- package/dist/components/Captcha/types.d.ts +2 -0
- package/dist/components/ChipList/ChipList.d.ts +2 -2
- package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +2 -2
- package/dist/components/Customs/SyForm/SyForm.d.ts +6 -3
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +13 -17
- package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +56 -64
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +47 -64
- package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +18 -17
- package/dist/components/DatePicker/tests/setup.d.ts +448 -512
- package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +4 -4
- package/dist/components/NirField/NirField.d.ts +29 -34
- package/dist/components/NirField/locales.d.ts +1 -3
- package/dist/components/PasswordField/PasswordField.d.ts +2 -0
- package/dist/components/PeriodField/PeriodField.d.ts +112 -128
- package/dist/components/PhoneField/PhoneField.d.ts +13 -17
- package/dist/components/SearchListField/SearchListField.d.ts +2 -2
- package/dist/components/SyTextArea/SyTextArea.d.ts +0 -4
- package/dist/components/Tables/common/SyTablePagination.d.ts +2 -2
- package/dist/components/index.d.ts +1 -0
- package/dist/composables/validation/useFormValidation.d.ts +10 -0
- package/dist/composables/validation/useValidatable.d.ts +10 -2
- package/dist/design-system-v3.js +126 -125
- package/dist/design-system-v3.umd.cjs +155 -155
- package/dist/main-DISHlqcd.js +34217 -0
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.vue +6 -7
- package/src/components/Amelipro/AmeliproFooter/__tests__/AmeliproFooter.spec.ts +787 -0
- package/src/components/Amelipro/AmeliproFooter/__tests__/__snapshots__/AmeliproFooter.spec.ts.snap +318 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/AmeliproHeaderBrandSection.spec.ts +167 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +100 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/AmeliproHeaderBar.spec.ts +312 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/__snapshots__/AmeliproHeaderBar.spec.ts.snap +98 -0
- package/src/components/Amelipro/AmeliproHeader/__tests__/AmeliproHeader.spec.ts +361 -0
- package/src/components/Amelipro/AmeliproHeader/__tests__/__snapshots__/AmeliproHeader.spec.ts.snap +22 -0
- package/src/components/Amelipro/AmeliproMenu/__tests__/AmeliproMenu.spec.ts +168 -0
- package/src/components/Amelipro/AmeliproMenu/__tests__/__snapshots__/AmeliproMenu.spec.ts.snap +295 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/AmeliproDropdownMenuBtn.spec.ts +128 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +67 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/AmeliproDropdownMenu.spec.ts +266 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +134 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/AmeliproMessagingMenuBtn.spec.ts +72 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +71 -0
- package/src/components/Amelipro/AmeliproPageLayout/tests/__snapshots__/AmeliproPageLayout.spec.ts.snap +12 -0
- package/src/components/Captcha/Captcha.mdx +72 -0
- package/src/components/Captcha/Captcha.stories.ts +276 -0
- package/src/components/Captcha/Captcha.vue +325 -0
- package/src/components/Captcha/CaptchaAlert.vue +60 -0
- package/src/components/Captcha/CaptchaBase.vue +219 -0
- package/src/components/Captcha/CaptchaBtn.vue +35 -0
- package/src/components/Captcha/CaptchaForm.vue +58 -0
- package/src/components/Captcha/CaptchaImg.vue +41 -0
- package/src/components/Captcha/CaptchaInformation.vue +64 -0
- package/src/components/Captcha/captchaApi.ts +111 -0
- package/src/components/Captcha/icons/volumeUp.vue +11 -0
- package/src/components/Captcha/locales.ts +35 -0
- package/src/components/Captcha/readme.md +5 -0
- package/src/components/Captcha/tests/Captcha.spec.ts +298 -0
- package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +716 -0
- package/src/components/Captcha/types.ts +2 -0
- package/src/components/Customs/Selects/SySelect/SySelect.vue +2 -2
- package/src/components/Customs/SyCheckbox/SyCheckbox.vue +4 -0
- package/src/components/Customs/SyForm/SyForm.stories.ts +133 -23
- package/src/components/Customs/SyForm/SyForm.vue +17 -1
- package/src/components/Customs/SyTextField/SyTextField.vue +2 -2
- package/src/components/DatePicker/CalendarMode/DatePicker.vue +1 -1
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +110 -6
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +28 -3
- package/src/components/NirField/NirField.stories.ts +74 -0
- package/src/components/NirField/NirField.vue +34 -9
- package/src/components/NirField/locales.ts +1 -3
- package/src/components/PasswordField/PasswordField.vue +39 -7
- package/src/components/PhoneField/PhoneField.vue +43 -10
- package/src/components/index.ts +1 -0
- package/src/composables/validation/useFormValidation.ts +46 -8
- package/src/composables/validation/useValidatable.ts +19 -8
- package/dist/main-DMXtXK3y.js +0 -33458
- package/src/components/Amelipro/AmeliproFooter/tests/AmeliproFooter.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproFooter/tests/__snapshots__/AmeliproFooter.spec.ts.snap +0 -432
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/AmeliproHeaderBrandSection.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +0 -131
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/AmeliproHeaderBar.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/__snapshots__/AmeliproHeaderBar.spec.ts.snap +0 -172
- package/src/components/Amelipro/AmeliproHeader/tests/AmeliproHeader.spec.ts +0 -159
- package/src/components/Amelipro/AmeliproHeader/tests/__snapshots__/AmeliproHeader.spec.ts.snap +0 -841
- package/src/components/Amelipro/AmeliproMenu/tests/AmeliproMenu.spec.ts +0 -85
- package/src/components/Amelipro/AmeliproMenu/tests/__snapshots__/AmeliproMenu.spec.ts.snap +0 -537
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/AmeliproDropdownMenuBtn.spec.ts +0 -16
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +0 -56
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/AmeliproDropdownMenu.spec.ts +0 -28
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +0 -300
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/AmeliproMessagingMenuBtn.spec.ts +0 -16
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +0 -89
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
import { VueWrapper, mount, shallowMount } from '@vue/test-utils'
|
|
2
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
3
|
+
import AmeliproHeader from '../AmeliproHeader.vue'
|
|
4
|
+
import AmeliproHeaderBar from '../AmeliproHeaderBar/AmeliproHeaderBar.vue'
|
|
5
|
+
import type { AmeliproHeaderInfos } from '../types'
|
|
6
|
+
import type { AmeliproMenuItem } from '@/components/Amelipro/AmeliproMenu/types'
|
|
7
|
+
import type { ComponentProps } from 'vue-component-type-helpers'
|
|
8
|
+
import { DisplayTestComponent } from '@tests/helpers/utils'
|
|
9
|
+
import type { ExpectedPropOptions } from '@tests/types'
|
|
10
|
+
import type { IServiceMenuInfos } from '@/components/Amelipro/ServiceMenu/types'
|
|
11
|
+
import type { PropType } from 'vue'
|
|
12
|
+
import type { RouteLocationRaw } from 'vue-router'
|
|
13
|
+
import type { StructureMenuInfosForHeader } from '@/components/Amelipro/StructureMenu/types'
|
|
14
|
+
import TestHelper from '@tests/helpers/TestHelper'
|
|
15
|
+
import type { UserInformationSummaryInfos } from '@/components/Amelipro/UserInformationSummary/types'
|
|
16
|
+
import UserMenu from '@/components/Amelipro/UserMenu/UserMenu.vue'
|
|
17
|
+
import type { UserMenuInfos } from '@/components/Amelipro/UserMenu/types'
|
|
18
|
+
|
|
19
|
+
// TODO: corriger le warning "[Vue warn]: Unable to locate target #service-menu-infos-unique-id-service-menu at <VOverlay ref=Ref< undefined > id="v-menu-10" class="v-menu" ... > "
|
|
20
|
+
|
|
21
|
+
const expectedPropOptions: ExpectedPropOptions<typeof AmeliproHeader> = {
|
|
22
|
+
ameliproHeaderInfos: {
|
|
23
|
+
type: Object as PropType<AmeliproHeaderInfos>,
|
|
24
|
+
default: undefined,
|
|
25
|
+
},
|
|
26
|
+
backBtnHref: {
|
|
27
|
+
type: String,
|
|
28
|
+
default: undefined,
|
|
29
|
+
},
|
|
30
|
+
backBtnLabel: {
|
|
31
|
+
type: String,
|
|
32
|
+
default: 'Retour',
|
|
33
|
+
},
|
|
34
|
+
backBtnTo: {
|
|
35
|
+
type: [Array, Object, String] as PropType<RouteLocationRaw>,
|
|
36
|
+
default: undefined,
|
|
37
|
+
},
|
|
38
|
+
backoffice: {
|
|
39
|
+
type: Boolean,
|
|
40
|
+
default: false,
|
|
41
|
+
},
|
|
42
|
+
headerTitle: {
|
|
43
|
+
type: String,
|
|
44
|
+
default: undefined,
|
|
45
|
+
},
|
|
46
|
+
homeHref: {
|
|
47
|
+
type: String,
|
|
48
|
+
default: undefined,
|
|
49
|
+
},
|
|
50
|
+
homeLink: {
|
|
51
|
+
type: [Array, Object, String] as PropType<RouteLocationRaw>,
|
|
52
|
+
default: undefined,
|
|
53
|
+
},
|
|
54
|
+
noRightPart: {
|
|
55
|
+
type: Boolean,
|
|
56
|
+
default: false,
|
|
57
|
+
},
|
|
58
|
+
noSubPart: {
|
|
59
|
+
type: Boolean,
|
|
60
|
+
default: false,
|
|
61
|
+
},
|
|
62
|
+
serviceHomeHref: {
|
|
63
|
+
type: String,
|
|
64
|
+
default: undefined,
|
|
65
|
+
},
|
|
66
|
+
serviceHomeTo: {
|
|
67
|
+
type: [Array, Object, String] as PropType<RouteLocationRaw>,
|
|
68
|
+
default: undefined,
|
|
69
|
+
},
|
|
70
|
+
serviceName: {
|
|
71
|
+
type: String,
|
|
72
|
+
default: undefined,
|
|
73
|
+
},
|
|
74
|
+
serviceSubTitle: {
|
|
75
|
+
type: String,
|
|
76
|
+
default: undefined,
|
|
77
|
+
},
|
|
78
|
+
subMenu: {
|
|
79
|
+
type: Boolean,
|
|
80
|
+
default: false,
|
|
81
|
+
},
|
|
82
|
+
subMenuItems: {
|
|
83
|
+
type: Array as PropType<AmeliproMenuItem[]>,
|
|
84
|
+
default: () => [],
|
|
85
|
+
},
|
|
86
|
+
uniqueId: {
|
|
87
|
+
type: String,
|
|
88
|
+
default: undefined,
|
|
89
|
+
},
|
|
90
|
+
unlogged: {
|
|
91
|
+
type: Boolean,
|
|
92
|
+
default: false,
|
|
93
|
+
},
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const serviceMenuInfosData = (): IServiceMenuInfos => ({
|
|
97
|
+
icon: 'service-menu-infos-icon',
|
|
98
|
+
messageToDisplay: 'Service menu infos message to display',
|
|
99
|
+
servicesContact: [],
|
|
100
|
+
servicesPatient: [],
|
|
101
|
+
servicesPs: [],
|
|
102
|
+
uniqueId: 'service-menu-infos-unique-id',
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
const structureMenuInfosData = (): StructureMenuInfosForHeader => ({
|
|
106
|
+
structuresTabs: [],
|
|
107
|
+
uniqueId: 'structure-menu-infos-unique-id',
|
|
108
|
+
userAdeli: 'structure-menu-infos-user-adeli',
|
|
109
|
+
userName: 'structure-menu-infos-user-name',
|
|
110
|
+
userProfession: 'structure-menu-infos-user-profession',
|
|
111
|
+
userRpps: 'structure-menu-infos-user-rpps',
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
const userInformationSummaryInfosData = (): UserInformationSummaryInfos => ({
|
|
115
|
+
adresseLigne2: '01630 SAINT GENIS POUILLY',
|
|
116
|
+
categorieSpecialite: 'Médecin Radiologue',
|
|
117
|
+
nomCabinet: 'Cabinet : 110 R GERMAINE TILLION',
|
|
118
|
+
userName: 'SAN SOPHIE LE BERQUIER',
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
const userMenuInfosData = (): UserMenuInfos => ({
|
|
122
|
+
userMenuDetailsInfos: {
|
|
123
|
+
adeli: '011006277',
|
|
124
|
+
email: 'sophieberquier@cpam.fr',
|
|
125
|
+
userName: 'SAN SOPHIE LE BERQUIER',
|
|
126
|
+
},
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
const ameliproHeaderInfosData = (): AmeliproHeaderInfos => ({
|
|
130
|
+
backoffice: true,
|
|
131
|
+
headerTitle: 'Amelipro header infos header title',
|
|
132
|
+
homeHref: '/amelipro-header-infos/home-href',
|
|
133
|
+
homeLink: '/amelipro-header-infos/home-link',
|
|
134
|
+
serviceMenuInfos: serviceMenuInfosData(),
|
|
135
|
+
signatureInfos: {
|
|
136
|
+
clickFn: vi.fn(),
|
|
137
|
+
href: '/amelipro-header-infos/signature-href',
|
|
138
|
+
to: '/amelipro-header-infos/signature-to',
|
|
139
|
+
},
|
|
140
|
+
structureMenuInfos: structureMenuInfosData(),
|
|
141
|
+
userInformationSummaryInfos: userInformationSummaryInfosData(),
|
|
142
|
+
userMenuInfos: userMenuInfosData(),
|
|
143
|
+
})
|
|
144
|
+
|
|
145
|
+
// Values pour les props "required"
|
|
146
|
+
const requiredPropValues = (): ComponentProps<typeof AmeliproHeader> => ({})
|
|
147
|
+
|
|
148
|
+
// Valeurs pour les props "modified"
|
|
149
|
+
const modifiedPropValues = (): ComponentProps<typeof AmeliproHeader> => ({
|
|
150
|
+
ameliproHeaderInfos: ameliproHeaderInfosData(),
|
|
151
|
+
backBtnHref: '#modified-back-btn-href',
|
|
152
|
+
backBtnLabel: 'Modified back btn label',
|
|
153
|
+
backBtnTo: '/modified-back-btn-to',
|
|
154
|
+
backoffice: true,
|
|
155
|
+
headerTitle: 'Modified header title',
|
|
156
|
+
homeHref: '#modified-home-href',
|
|
157
|
+
homeLink: '/modified-home-link',
|
|
158
|
+
noRightPart: true,
|
|
159
|
+
noSubPart: true,
|
|
160
|
+
serviceHomeHref: '#modified-service-home-href',
|
|
161
|
+
serviceHomeTo: '/modified-service-home-to',
|
|
162
|
+
serviceName: 'Modified service name',
|
|
163
|
+
serviceSubTitle: 'Modified service sub title',
|
|
164
|
+
subMenu: true,
|
|
165
|
+
subMenuItems: [
|
|
166
|
+
{
|
|
167
|
+
id: 'modified-sub-menu-items-id-1',
|
|
168
|
+
name: 'Modified sub menu items 1',
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
uniqueId: 'modified-unique-id',
|
|
172
|
+
unlogged: true,
|
|
173
|
+
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
const testHelper = new TestHelper(AmeliproHeader)
|
|
177
|
+
testHelper.setExpectedPropOptions(expectedPropOptions)
|
|
178
|
+
.setRequiredPropValues(requiredPropValues)
|
|
179
|
+
.setModifiedPropValues(modifiedPropValues)
|
|
180
|
+
|
|
181
|
+
const displayWrapper = mount(DisplayTestComponent)
|
|
182
|
+
|
|
183
|
+
describe('AmeliproHeader', () => {
|
|
184
|
+
describe('Snapshots', () => {
|
|
185
|
+
testHelper.snapshots()
|
|
186
|
+
})
|
|
187
|
+
|
|
188
|
+
describe('Properties', () => {
|
|
189
|
+
testHelper.properties()
|
|
190
|
+
})
|
|
191
|
+
|
|
192
|
+
describe('Setting props should update props of inner components', () => {
|
|
193
|
+
let vueWrapper: VueWrapper<InstanceType<typeof AmeliproHeader>>
|
|
194
|
+
|
|
195
|
+
describe('AmeliproHeaderBar', () => {
|
|
196
|
+
beforeEach(() => {
|
|
197
|
+
vueWrapper = shallowMount(AmeliproHeader, { props: requiredPropValues() })
|
|
198
|
+
})
|
|
199
|
+
|
|
200
|
+
it('prop uniqueId sets prop uniqueId', async () => {
|
|
201
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('uniqueId')).toBe(testHelper.default('uniqueId'))
|
|
202
|
+
|
|
203
|
+
const { uniqueId } = modifiedPropValues()
|
|
204
|
+
await vueWrapper.setProps({ uniqueId })
|
|
205
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('uniqueId')).toBe(testHelper.modified('uniqueId'))
|
|
206
|
+
})
|
|
207
|
+
|
|
208
|
+
it('prop homeHref & ameliproHeaderInfos.homeHref sets prop homeHref', async () => {
|
|
209
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeHref')).toBe(testHelper.default('homeHref'))
|
|
210
|
+
|
|
211
|
+
const { homeHref, ameliproHeaderInfos } = modifiedPropValues()
|
|
212
|
+
await vueWrapper.setProps({ homeHref })
|
|
213
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeHref')).toBe(testHelper.modified('homeHref'))
|
|
214
|
+
|
|
215
|
+
await vueWrapper.setProps({ ameliproHeaderInfos })
|
|
216
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeHref')).toBe('/amelipro-header-infos/home-href')
|
|
217
|
+
})
|
|
218
|
+
|
|
219
|
+
it('prop homeLink & ameliproHeaderInfos.homeLink sets prop homeLink', async () => {
|
|
220
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeLink')).toBe(testHelper.default('homeLink'))
|
|
221
|
+
|
|
222
|
+
const { homeLink, ameliproHeaderInfos } = modifiedPropValues()
|
|
223
|
+
await vueWrapper.setProps({ homeLink })
|
|
224
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeLink')).toBe(testHelper.modified('homeLink'))
|
|
225
|
+
|
|
226
|
+
await vueWrapper.setProps({ ameliproHeaderInfos })
|
|
227
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('homeLink')).toBe('/amelipro-header-infos/home-link')
|
|
228
|
+
})
|
|
229
|
+
|
|
230
|
+
it('display width sets prop innerWidth', async () => {
|
|
231
|
+
displayWrapper.vm.setWidth(1)
|
|
232
|
+
await vueWrapper.vm.$nextTick()
|
|
233
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('innerWidth')).toBe('100%')
|
|
234
|
+
|
|
235
|
+
displayWrapper.vm.setWidth(1072)
|
|
236
|
+
await vueWrapper.vm.$nextTick()
|
|
237
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('innerWidth')).toBe('980px')
|
|
238
|
+
|
|
239
|
+
displayWrapper.vm.setWidth(1240)
|
|
240
|
+
await vueWrapper.vm.$nextTick()
|
|
241
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('innerWidth')).toBe('1144px')
|
|
242
|
+
})
|
|
243
|
+
|
|
244
|
+
it('prop serviceSubTitle sets prop serviceSubTitle', async () => {
|
|
245
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('serviceSubTitle')).toBe(testHelper.default('serviceSubTitle'))
|
|
246
|
+
|
|
247
|
+
const { serviceSubTitle } = modifiedPropValues()
|
|
248
|
+
await vueWrapper.setProps({ serviceSubTitle })
|
|
249
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('serviceSubTitle')).toBe(testHelper.modified('serviceSubTitle'))
|
|
250
|
+
})
|
|
251
|
+
|
|
252
|
+
it('prop headerTitle & ameliproHeaderInfos.headerTitle sets prop serviceTitle', async () => {
|
|
253
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('serviceTitle')).toBe(testHelper.default('headerTitle'))
|
|
254
|
+
|
|
255
|
+
const { headerTitle, ameliproHeaderInfos } = modifiedPropValues()
|
|
256
|
+
await vueWrapper.setProps({ headerTitle })
|
|
257
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('serviceTitle')).toBe(testHelper.modified('headerTitle'))
|
|
258
|
+
|
|
259
|
+
await vueWrapper.setProps({ ameliproHeaderInfos })
|
|
260
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('serviceTitle')).toBe('Amelipro header infos header title')
|
|
261
|
+
})
|
|
262
|
+
|
|
263
|
+
it('prop headerTitle & ameliproHeaderInfos.headerTitle sets prop themeAmelipro', async () => {
|
|
264
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('themeAmelipro')).toBe(true)
|
|
265
|
+
|
|
266
|
+
const { headerTitle, ameliproHeaderInfos } = modifiedPropValues()
|
|
267
|
+
await vueWrapper.setProps({ headerTitle })
|
|
268
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('themeAmelipro')).toBe(false)
|
|
269
|
+
|
|
270
|
+
await vueWrapper.setProps({ ameliproHeaderInfos })
|
|
271
|
+
expect(vueWrapper.findComponent(AmeliproHeaderBar).props('themeAmelipro')).toBe(false)
|
|
272
|
+
})
|
|
273
|
+
})
|
|
274
|
+
})
|
|
275
|
+
|
|
276
|
+
describe('Events', () => {
|
|
277
|
+
let vueWrapper: VueWrapper<InstanceType<typeof AmeliproHeader>>
|
|
278
|
+
const buttonFinder = () => vueWrapper.find('.navigation-bar-left-btn')
|
|
279
|
+
|
|
280
|
+
beforeEach(() => {
|
|
281
|
+
vueWrapper = mount(AmeliproHeader, { props: requiredPropValues() })
|
|
282
|
+
})
|
|
283
|
+
|
|
284
|
+
it('test backBtnEvent', async () => {
|
|
285
|
+
expect(vueWrapper.emitted('back-btn-click')).toStrictEqual(undefined)
|
|
286
|
+
await buttonFinder().trigger('click')
|
|
287
|
+
expect(vueWrapper.emitted('back-btn-click')).toStrictEqual([[]])
|
|
288
|
+
})
|
|
289
|
+
})
|
|
290
|
+
|
|
291
|
+
// describe('Slots', () => {
|
|
292
|
+
// describe.todo('#default #rightPart AmeliproIconBtn')
|
|
293
|
+
// describe.todo('#default #rightPart AmeliproIconBtn #prepend')
|
|
294
|
+
// describe.todo('#default #rightPart nav')
|
|
295
|
+
// describe.todo('#default #rightPart nav infos')
|
|
296
|
+
// describe.todo('#default #rightPart nav infos #userInformationSummary UserInformationSummary')
|
|
297
|
+
// describe.todo('#default #rightPart nav list')
|
|
298
|
+
// describe.todo('#default #rightPart nav list item')
|
|
299
|
+
// describe.todo('#default #rightPart nav list item #userMenu')
|
|
300
|
+
// describe.todo('#default #rightPart nav list item #userMenu UserMenu')
|
|
301
|
+
// describe.todo('#default #rightPart nav list item #userMenu UserMenu #complementaryInfo')
|
|
302
|
+
// describe.todo('#default #rightPart nav list item #userMenu UserMenu #complementaryInfo')
|
|
303
|
+
// })
|
|
304
|
+
|
|
305
|
+
describe('Computed', () => {
|
|
306
|
+
let vueWrapper: VueWrapper<InstanceType<typeof AmeliproHeader>>
|
|
307
|
+
let slotWrapper: VueWrapper<InstanceType<typeof AmeliproHeader>>
|
|
308
|
+
|
|
309
|
+
beforeEach(() => {
|
|
310
|
+
vueWrapper = mount(AmeliproHeader, { props: requiredPropValues() })
|
|
311
|
+
slotWrapper = mount(AmeliproHeader, {
|
|
312
|
+
props: requiredPropValues(),
|
|
313
|
+
slots: {
|
|
314
|
+
notificationMenu: '<span id="notif-slot">Test notification slot</span>',
|
|
315
|
+
serviceMenu: '<span id="service-slot">Test service slot</span>',
|
|
316
|
+
structureMenu: '<span id="structure-slot">Test structure menu slot</span>',
|
|
317
|
+
userMenu: '<span id="usermenu-slot">Test user menu slot</span>',
|
|
318
|
+
},
|
|
319
|
+
stubs: { AmeliproHeaderBar },
|
|
320
|
+
})
|
|
321
|
+
})
|
|
322
|
+
|
|
323
|
+
it('Tests innerWidth', async () => {
|
|
324
|
+
displayWrapper.vm.setWidth(1072)
|
|
325
|
+
await vueWrapper.vm.$nextTick()
|
|
326
|
+
expect(vueWrapper.find('.header-bar-content__container').attributes('style')).toStrictEqual('width: 980px; max-width: 980px;')
|
|
327
|
+
displayWrapper.vm.setWidth(1071)
|
|
328
|
+
await vueWrapper.vm.$nextTick()
|
|
329
|
+
expect(vueWrapper.find('.header-bar-content__container').attributes('style')).toStrictEqual('width: 100%; max-width: 100%;')
|
|
330
|
+
displayWrapper.vm.setWidth(1240)
|
|
331
|
+
await vueWrapper.vm.$nextTick()
|
|
332
|
+
expect(vueWrapper.find('.header-bar-content__container').attributes('style')).toStrictEqual('width: 1144px; max-width: 1144px;')
|
|
333
|
+
displayWrapper.vm.setWidth(1072)
|
|
334
|
+
})
|
|
335
|
+
|
|
336
|
+
it('Tests hasUserMenu', async () => {
|
|
337
|
+
// Default slot content
|
|
338
|
+
expect(vueWrapper.findComponent(UserMenu).exists()).toBeFalsy()
|
|
339
|
+
|
|
340
|
+
const { ameliproHeaderInfos } = modifiedPropValues()
|
|
341
|
+
await vueWrapper.setProps({ ameliproHeaderInfos })
|
|
342
|
+
expect(vueWrapper.findComponent(UserMenu).exists()).toBeTruthy()
|
|
343
|
+
|
|
344
|
+
// Custom slot content
|
|
345
|
+
expect(slotWrapper.find('#usermenu-slot').exists()).toBeTruthy()
|
|
346
|
+
})
|
|
347
|
+
|
|
348
|
+
it('Tests hasStructureMenu', () => {
|
|
349
|
+
expect(slotWrapper.find('#structure-slot').exists()).toBeTruthy()
|
|
350
|
+
})
|
|
351
|
+
|
|
352
|
+
it('Tests hasServiceMenu', () => {
|
|
353
|
+
expect(slotWrapper.find('#service-slot').exists()).toBeTruthy()
|
|
354
|
+
})
|
|
355
|
+
|
|
356
|
+
it('Tests hasNotificationMenu', () => {
|
|
357
|
+
expect(vueWrapper.find('#notif-slot').exists()).toBeFalsy()
|
|
358
|
+
expect(slotWrapper.find('#notif-slot').exists()).toBeTruthy()
|
|
359
|
+
})
|
|
360
|
+
})
|
|
361
|
+
})
|
package/src/components/Amelipro/AmeliproHeader/__tests__/__snapshots__/AmeliproHeader.spec.ts.snap
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
+
|
|
3
|
+
exports[`AmeliproHeader > Snapshots > renders the component with all properties filled in 1`] = `
|
|
4
|
+
<amelipro-header-bar-stub
|
|
5
|
+
homehref="/amelipro-header-infos/home-href"
|
|
6
|
+
homelink="/amelipro-header-infos/home-link"
|
|
7
|
+
innerwidth="100%"
|
|
8
|
+
servicesubtitle="Modified service sub title"
|
|
9
|
+
servicetitle="Amelipro header infos header title"
|
|
10
|
+
style="z-index: 1;"
|
|
11
|
+
themeamelipro="false"
|
|
12
|
+
uniqueid="modified-unique-id"
|
|
13
|
+
></amelipro-header-bar-stub>
|
|
14
|
+
`;
|
|
15
|
+
|
|
16
|
+
exports[`AmeliproHeader > Snapshots > renders the component with only required properties filled in 1`] = `
|
|
17
|
+
<amelipro-header-bar-stub
|
|
18
|
+
innerwidth="100%"
|
|
19
|
+
style="z-index: 1;"
|
|
20
|
+
themeamelipro="true"
|
|
21
|
+
></amelipro-header-bar-stub>
|
|
22
|
+
`;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { VueWrapper, mount, shallowMount } from '@vue/test-utils'
|
|
2
|
+
import { beforeEach, describe, expect, it } from 'vitest'
|
|
3
|
+
import AmeliproMenu from '../AmeliproMenu.vue'
|
|
4
|
+
import type { AmeliproMenuItem } from '../types'
|
|
5
|
+
import type { ComponentProps } from 'vue-component-type-helpers'
|
|
6
|
+
import type { ExpectedPropOptions } from '@tests/types'
|
|
7
|
+
import type { PropType } from 'vue'
|
|
8
|
+
import type { RouteLocationRaw } from 'vue-router'
|
|
9
|
+
import TestHelper from '@tests/helpers/TestHelper'
|
|
10
|
+
import { attachToApp } from '@tests/helpers/utils'
|
|
11
|
+
|
|
12
|
+
const expectedPropOptions: ExpectedPropOptions<typeof AmeliproMenu> = {
|
|
13
|
+
homeHref: {
|
|
14
|
+
type: String,
|
|
15
|
+
default: undefined,
|
|
16
|
+
},
|
|
17
|
+
homeTo: {
|
|
18
|
+
type: [Array, Object, String] as PropType<RouteLocationRaw>,
|
|
19
|
+
default: undefined,
|
|
20
|
+
},
|
|
21
|
+
items: {
|
|
22
|
+
type: Array as PropType<AmeliproMenuItem[]>,
|
|
23
|
+
default: () => [],
|
|
24
|
+
},
|
|
25
|
+
menuHeader: {
|
|
26
|
+
type: String,
|
|
27
|
+
default: 'Titre du service',
|
|
28
|
+
},
|
|
29
|
+
uniqueId: {
|
|
30
|
+
type: String,
|
|
31
|
+
required: true,
|
|
32
|
+
},
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const requiredPropValues = (): ComponentProps<typeof AmeliproMenu> => ({ uniqueId: 'required-unique-id' })
|
|
36
|
+
|
|
37
|
+
const modifiedPropValues = (): ComponentProps<typeof AmeliproMenu> => ({
|
|
38
|
+
homeHref: 'modified-home-href',
|
|
39
|
+
homeTo: 'modified-home-to',
|
|
40
|
+
items: [
|
|
41
|
+
{
|
|
42
|
+
actif: false,
|
|
43
|
+
children: [
|
|
44
|
+
{
|
|
45
|
+
actif: false,
|
|
46
|
+
children: [
|
|
47
|
+
{
|
|
48
|
+
id: 'modified-subsubmenu-1-1-1',
|
|
49
|
+
name: 'Modified SubSubMenu 1.1.1',
|
|
50
|
+
to: '/modified/test',
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
id: 'modified-submenu-1-1',
|
|
54
|
+
name: 'Modified SubMenu 1.1',
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
id: 'modified-menu-1',
|
|
58
|
+
name: 'Modified Menu 1',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
menuHeader: 'Modified menu header',
|
|
62
|
+
uniqueId: 'modified-unique-id',
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
const testHelper = new TestHelper(AmeliproMenu)
|
|
66
|
+
testHelper
|
|
67
|
+
.setExpectedPropOptions(expectedPropOptions)
|
|
68
|
+
.setRequiredPropValues(requiredPropValues)
|
|
69
|
+
.setModifiedPropValues(modifiedPropValues)
|
|
70
|
+
.setMountOptions({
|
|
71
|
+
global: {
|
|
72
|
+
stubs: {
|
|
73
|
+
VNavigationDrawer: { template: '<div><slot /></div>' },
|
|
74
|
+
VDivider: true,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
describe('AmeliproMenu', () => {
|
|
80
|
+
describe('Snapshots', () => {
|
|
81
|
+
testHelper.snapshots()
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
describe('Properties', () => {
|
|
85
|
+
testHelper.properties()
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
describe('Setting props should update attributes of inner tags', () => {
|
|
89
|
+
let wrapper: VueWrapper<InstanceType<typeof AmeliproMenu>>
|
|
90
|
+
|
|
91
|
+
beforeEach(() => {
|
|
92
|
+
wrapper = shallowMount(AmeliproMenu, {
|
|
93
|
+
autoAttach: attachToApp(),
|
|
94
|
+
global: {
|
|
95
|
+
stubs: {
|
|
96
|
+
VNavigationDrawer: true,
|
|
97
|
+
VDivider: true,
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
props: requiredPropValues(),
|
|
101
|
+
})
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
it('prop uniqueId sets attribute id on root container', async () => {
|
|
105
|
+
expect(wrapper.find('.amelipro-menu').attributes('id')).toBe(`${testHelper.default('uniqueId')}-container`)
|
|
106
|
+
const { uniqueId } = modifiedPropValues()
|
|
107
|
+
await wrapper.setProps({ uniqueId })
|
|
108
|
+
expect(wrapper.find('.amelipro-menu').attributes('id')).toBe(`${testHelper.modified('uniqueId')}-container`)
|
|
109
|
+
})
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
describe('Public functions', () => {
|
|
113
|
+
let wrapper: VueWrapper<InstanceType<typeof AmeliproMenu>>
|
|
114
|
+
|
|
115
|
+
describe('test setFocus', () => {
|
|
116
|
+
beforeEach(() => {
|
|
117
|
+
wrapper = mount(AmeliproMenu, {
|
|
118
|
+
autoAttach: attachToApp(),
|
|
119
|
+
global: {
|
|
120
|
+
stubs: {
|
|
121
|
+
VNavigationDrawer: { template: '<div><slot /></div>' },
|
|
122
|
+
VDivider: true,
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
props: modifiedPropValues(),
|
|
126
|
+
})
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
it('setFocus on close button', async () => {
|
|
130
|
+
await wrapper.find('.amelipro-menu__btn--open').trigger('click')
|
|
131
|
+
expect(wrapper.find(`#${testHelper.modified('uniqueId')}-close-menu-btn`).exists()).toBe(true)
|
|
132
|
+
await wrapper.find(`#${testHelper.modified('uniqueId')}-close-menu-btn`).trigger('keydown', { key: 'Tab', shiftKey: true })
|
|
133
|
+
expect(wrapper.find(`#${testHelper.modified('uniqueId')}-return-home-menu-btn`).exists()).toBe(true)
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
it('setFocus on home button', async () => {
|
|
137
|
+
await wrapper.find('.amelipro-menu__btn--open').trigger('click')
|
|
138
|
+
expect(wrapper.find(`#${testHelper.modified('uniqueId')}-return-home-menu-btn`).exists()).toBe(true)
|
|
139
|
+
await wrapper.find(`#${testHelper.modified('uniqueId')}-return-home-menu-btn`).trigger('keydown', { key: 'Tab' })
|
|
140
|
+
expect(wrapper.find(`#${testHelper.modified('uniqueId')}-close-menu-btn`).exists()).toBe(true)
|
|
141
|
+
})
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
|
|
145
|
+
describe('Events', () => {
|
|
146
|
+
let wrapper: VueWrapper<InstanceType<typeof AmeliproMenu>>
|
|
147
|
+
|
|
148
|
+
beforeEach(() => {
|
|
149
|
+
wrapper = mount(AmeliproMenu, {
|
|
150
|
+
autoAttach: true,
|
|
151
|
+
global: {
|
|
152
|
+
stubs: {
|
|
153
|
+
VNavigationDrawer: true,
|
|
154
|
+
VDivider: true,
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
props: modifiedPropValues(),
|
|
158
|
+
})
|
|
159
|
+
})
|
|
160
|
+
|
|
161
|
+
it('Escape key emits escape event', async () => {
|
|
162
|
+
await wrapper.find('.amelipro-menu__btn--open').trigger('click')
|
|
163
|
+
expect(wrapper.emitted('escape')).toBeUndefined()
|
|
164
|
+
await window.dispatchEvent(new KeyboardEvent('keydown', { code: 'Escape' }))
|
|
165
|
+
expect(wrapper.emitted('escape')).toStrictEqual([[]])
|
|
166
|
+
})
|
|
167
|
+
})
|
|
168
|
+
})
|