@datametria/vue-components 2.3.1 → 2.4.1
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/README.md +625 -594
- package/dist/index.es.js +1962 -1887
- package/dist/index.umd.js +6 -6
- package/dist/src/components/DatametriaForm.vue.d.ts +1 -1
- package/dist/src/components/DatametriaInput.vue.d.ts +9 -1
- package/dist/src/components/DatametriaSelect.vue.d.ts +10 -1
- package/dist/vue-components.css +1 -1
- package/package.json +103 -102
- package/src/components/DatametriaAlert.vue +151 -133
- package/src/components/DatametriaAutocomplete.vue +250 -229
- package/src/components/DatametriaAvatar.vue +256 -238
- package/src/components/DatametriaBadge.vue +101 -96
- package/src/components/DatametriaBreadcrumb.vue +132 -128
- package/src/components/DatametriaButton.vue +191 -173
- package/src/components/DatametriaCard.vue +84 -66
- package/src/components/DatametriaCheckbox.vue +197 -193
- package/src/components/DatametriaChip.vue +159 -141
- package/src/components/DatametriaContainer.vue +70 -52
- package/src/components/DatametriaDataTable.vue +318 -300
- package/src/components/DatametriaDatePicker.vue +396 -378
- package/src/components/DatametriaDialog.vue +297 -293
- package/src/components/DatametriaDivider.vue +105 -98
- package/src/components/DatametriaDropdown.vue +356 -350
- package/src/components/DatametriaEmpty.vue +155 -151
- package/src/components/DatametriaFileUpload.vue +413 -395
- package/src/components/DatametriaFloatingBar.vue +144 -126
- package/src/components/DatametriaForm.vue +174 -156
- package/src/components/DatametriaFormItem.vue +183 -179
- package/src/components/DatametriaGrid.vue +55 -37
- package/src/components/DatametriaInput.vue +314 -263
- package/src/components/DatametriaMenu.vue +618 -600
- package/src/components/DatametriaModal.vue +147 -129
- package/src/components/DatametriaNavbar.vue +277 -223
- package/src/components/DatametriaPagination.vue +375 -371
- package/src/components/DatametriaPasswordInput.vue +446 -426
- package/src/components/DatametriaPopconfirm.vue +240 -234
- package/src/components/DatametriaProgress.vue +228 -224
- package/src/components/DatametriaRadio.vue +151 -147
- package/src/components/DatametriaResult.vue +135 -131
- package/src/components/DatametriaSelect.vue +311 -211
- package/src/components/DatametriaSidebar.vue +294 -222
- package/src/components/DatametriaSkeleton.vue +257 -234
- package/src/components/DatametriaSlider.vue +409 -391
- package/src/components/DatametriaSortableTable.vue +826 -802
- package/src/components/DatametriaSpinner.vue +114 -110
- package/src/components/DatametriaSteps.vue +318 -312
- package/src/components/DatametriaSwitch.vue +146 -142
- package/src/components/DatametriaTabPane.vue +94 -76
- package/src/components/DatametriaTable.vue +118 -100
- package/src/components/DatametriaTabs.vue +315 -297
- package/src/components/DatametriaTextarea.vue +213 -195
- package/src/components/DatametriaTimePicker.vue +317 -299
- package/src/components/DatametriaToast.vue +176 -176
- package/src/components/DatametriaTooltip.vue +421 -400
- package/src/components/DatametriaTree.vue +126 -122
- package/src/components/DatametriaTreeNode.vue +176 -172
- package/src/components/DatametriaUpload.vue +379 -361
- package/src/components/__tests__/DatametriaAlert.test.js +35 -35
- package/src/components/__tests__/DatametriaAlert.test.ts +190 -190
- package/src/components/__tests__/DatametriaAvatar.test.ts +151 -151
- package/src/components/__tests__/DatametriaBadge.test.js +29 -29
- package/src/components/__tests__/DatametriaBadge.test.ts +167 -167
- package/src/components/__tests__/DatametriaBreadcrumb.test.ts +187 -0
- package/src/components/__tests__/DatametriaButton.test.js +30 -30
- package/src/components/__tests__/DatametriaButton.test.ts +283 -283
- package/src/components/__tests__/DatametriaCard.test.ts +201 -201
- package/src/components/__tests__/DatametriaCheckbox.test.ts +204 -0
- package/src/components/__tests__/DatametriaChip.test.js +38 -38
- package/src/components/__tests__/DatametriaContainer.test.ts +52 -52
- package/src/components/__tests__/DatametriaDialog.test.ts +338 -0
- package/src/components/__tests__/DatametriaDivider.test.ts +54 -54
- package/src/components/__tests__/DatametriaDropdown.test.ts +357 -0
- package/src/components/__tests__/DatametriaEmpty.test.ts +261 -0
- package/src/components/__tests__/DatametriaFileUpload.test.ts +290 -290
- package/src/components/__tests__/DatametriaFloatingBar.test.ts +137 -137
- package/src/components/__tests__/DatametriaForm.test.ts +96 -0
- package/src/components/__tests__/DatametriaFormItem.test.ts +58 -0
- package/src/components/__tests__/DatametriaGrid.test.ts +31 -31
- package/src/components/__tests__/DatametriaInput.test.ts +72 -72
- package/src/components/__tests__/DatametriaMenu.test.ts +366 -366
- package/src/components/__tests__/DatametriaModal.test.ts +86 -86
- package/src/components/__tests__/DatametriaNavbar.test.js +48 -48
- package/src/components/__tests__/DatametriaNavbar.test.ts +203 -203
- package/src/components/__tests__/DatametriaPasswordInput.test.js +305 -305
- package/src/components/__tests__/DatametriaRadio.test.ts +195 -0
- package/src/components/__tests__/DatametriaSelect.test.ts +77 -77
- package/src/components/__tests__/DatametriaSidebar.test.ts +169 -169
- package/src/components/__tests__/DatametriaSlider.test.ts +261 -261
- package/src/components/__tests__/DatametriaSortableTable.test.js +168 -168
- package/src/components/__tests__/DatametriaSpinner.test.ts +156 -156
- package/src/components/__tests__/DatametriaSteps.test.ts +211 -0
- package/src/components/__tests__/DatametriaSwitch.test.ts +129 -0
- package/src/components/__tests__/DatametriaTabPane.test.ts +205 -0
- package/src/components/__tests__/DatametriaTable.test.ts +97 -97
- package/src/components/__tests__/DatametriaTabs.test.ts +232 -232
- package/src/components/__tests__/DatametriaToast.test.js +48 -48
- package/src/components/__tests__/DatametriaToast.test.ts +99 -99
- package/src/components/__tests__/DatametriaTree.test.ts +376 -0
- package/src/components/__tests__/index.test.ts +48 -0
- package/src/composables/useAccessibilityScale.ts +94 -94
- package/src/composables/useBreakpoints.ts +82 -82
- package/src/composables/useHapticFeedback.ts +439 -439
- package/src/composables/useRipple.ts +218 -218
- package/src/composables/useTheme.ts +5 -1
- package/src/index.ts +84 -84
- package/src/stories/Variants.stories.js +95 -95
- package/src/styles/design-tokens.css +623 -623
- package/src/theme/ThemeProvider.vue +96 -96
- package/src/theme/__tests__/ThemeProvider.test.ts +208 -208
- package/src/theme/__tests__/constants.test.ts +31 -31
- package/src/theme/__tests__/presets.test.ts +166 -166
- package/src/theme/__tests__/tokens.test.ts +155 -155
- package/src/theme/__tests__/types.test.ts +153 -153
- package/src/theme/__tests__/useTheme.test.ts +146 -146
- package/src/theme/constants.ts +14 -14
- package/src/theme/index.ts +12 -12
- package/src/theme/presets/datametria.ts +94 -94
- package/src/theme/presets/default.ts +94 -94
- package/src/theme/presets/index.ts +8 -8
- package/src/theme/tokens/colors.ts +28 -28
- package/src/theme/tokens/index.ts +47 -47
- package/src/theme/tokens/spacing.ts +21 -21
- package/src/theme/tokens/typography.ts +35 -35
- package/src/theme/types.ts +111 -111
- package/src/theme/useTheme.ts +28 -28
- package/src/types/index.ts +55 -55
|
@@ -1,152 +1,152 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest'
|
|
2
|
-
import { mount } from '@vue/test-utils'
|
|
3
|
-
import DatametriaAvatar from '../DatametriaAvatar.vue'
|
|
4
|
-
import { datametriaTheme } from '../../theme/presets'
|
|
5
|
-
import { THEME_INJECTION_KEY } from '../../theme/constants'
|
|
6
|
-
|
|
7
|
-
const createWrapper = (props = {}, themeProps = {}) => {
|
|
8
|
-
return mount(DatametriaAvatar, {
|
|
9
|
-
props,
|
|
10
|
-
global: {
|
|
11
|
-
plugins: [{
|
|
12
|
-
install(app) {
|
|
13
|
-
app.provide(THEME_INJECTION_KEY, datametriaTheme)
|
|
14
|
-
}
|
|
15
|
-
}]
|
|
16
|
-
}
|
|
17
|
-
})
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
describe('DatametriaAvatar', () => {
|
|
21
|
-
it('renders correctly', () => {
|
|
22
|
-
const wrapper = createWrapper()
|
|
23
|
-
expect(wrapper.find('.dm-avatar').exists()).toBe(true)
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
it('applies theme colors correctly', () => {
|
|
27
|
-
const wrapper = createWrapper()
|
|
28
|
-
expect(wrapper.find('.dm-avatar').exists()).toBe(true)
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
it('displays image when src is provided', () => {
|
|
32
|
-
const src = 'https://example.com/avatar.jpg'
|
|
33
|
-
const wrapper = createWrapper({ src })
|
|
34
|
-
|
|
35
|
-
const img = wrapper.find('.dm-avatar__image')
|
|
36
|
-
expect(img.exists()).toBe(true)
|
|
37
|
-
expect(img.attributes('src')).toBe(src)
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
it('displays initials when name is provided and no src', () => {
|
|
41
|
-
const name = 'John Doe'
|
|
42
|
-
const wrapper = createWrapper({ name })
|
|
43
|
-
|
|
44
|
-
expect(wrapper.find('.dm-avatar__initials').text()).toBe('JD')
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
it('displays single initial for single name', () => {
|
|
48
|
-
const name = 'John'
|
|
49
|
-
const wrapper = createWrapper({ name })
|
|
50
|
-
|
|
51
|
-
expect(wrapper.find('.dm-avatar__initials').text()).toBe('J')
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
it('supports different sizes', () => {
|
|
55
|
-
const sizes = ['sm', 'md', 'lg', 'xl']
|
|
56
|
-
|
|
57
|
-
sizes.forEach(size => {
|
|
58
|
-
const wrapper = createWrapper({ size })
|
|
59
|
-
expect(wrapper.find(`.dm-avatar--${size}`).exists()).toBe(true)
|
|
60
|
-
})
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
it('supports different variants', () => {
|
|
64
|
-
const variants = ['circular', 'rounded', 'square']
|
|
65
|
-
|
|
66
|
-
variants.forEach(variant => {
|
|
67
|
-
const wrapper = createWrapper({ variant })
|
|
68
|
-
expect(wrapper.find(`.dm-avatar--${variant}`).exists()).toBe(true)
|
|
69
|
-
})
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
it('shows fallback icon when no src or name', () => {
|
|
73
|
-
const wrapper = createWrapper()
|
|
74
|
-
expect(wrapper.find('.dm-avatar__icon').exists()).toBe(true)
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
it('handles image load error', async () => {
|
|
78
|
-
const wrapper = createWrapper({ src: 'invalid-url.jpg', name: 'John Doe' })
|
|
79
|
-
const img = wrapper.find('.dm-avatar__image')
|
|
80
|
-
|
|
81
|
-
await img.trigger('error')
|
|
82
|
-
expect(wrapper.find('.dm-avatar__initials').exists()).toBe(true)
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
it('supports custom background color', () => {
|
|
86
|
-
const backgroundColor = '#ff0000'
|
|
87
|
-
const wrapper = createWrapper({ backgroundColor })
|
|
88
|
-
|
|
89
|
-
const avatar = wrapper.find('.dm-avatar')
|
|
90
|
-
const style = avatar.attributes('style')
|
|
91
|
-
// Aceita tanto HEX quanto RGB
|
|
92
|
-
expect(style).toMatch(/background-color: (#ff0000|rgb\(255, 0, 0\))/)
|
|
93
|
-
})
|
|
94
|
-
|
|
95
|
-
it('supports custom text color', () => {
|
|
96
|
-
const textColor = '#ffffff'
|
|
97
|
-
const wrapper = createWrapper({ textColor, name: 'John Doe' })
|
|
98
|
-
|
|
99
|
-
const initials = wrapper.find('.dm-avatar__initials')
|
|
100
|
-
const style = initials.attributes('style')
|
|
101
|
-
// Aceita tanto HEX quanto RGB
|
|
102
|
-
expect(style).toMatch(/color: (#ffffff|rgb\(255, 255, 255\))/)
|
|
103
|
-
})
|
|
104
|
-
|
|
105
|
-
it('supports clickable avatar', async () => {
|
|
106
|
-
const wrapper = createWrapper({ clickable: true })
|
|
107
|
-
const avatar = wrapper.find('.dm-avatar')
|
|
108
|
-
|
|
109
|
-
expect(avatar.classes()).toContain('dm-avatar--clickable')
|
|
110
|
-
|
|
111
|
-
await avatar.trigger('click')
|
|
112
|
-
const avatarComponent = wrapper.findComponent(DatametriaAvatar)
|
|
113
|
-
expect(avatarComponent.emitted('click')).toBeTruthy()
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
it('supports badge/status indicator', () => {
|
|
117
|
-
const wrapper = createWrapper({ badge: true, status: 'online' })
|
|
118
|
-
|
|
119
|
-
expect(wrapper.find('.dm-avatar__badge').exists()).toBe(true)
|
|
120
|
-
expect(wrapper.find('.dm-avatar__badge--online').exists()).toBe(true)
|
|
121
|
-
})
|
|
122
|
-
|
|
123
|
-
it('supports different status types', () => {
|
|
124
|
-
const statuses = ['online', 'offline', 'away', 'busy']
|
|
125
|
-
|
|
126
|
-
statuses.forEach(status => {
|
|
127
|
-
const wrapper = createWrapper({ badge: true, status })
|
|
128
|
-
expect(wrapper.find(`.dm-avatar__badge--${status}`).exists()).toBe(true)
|
|
129
|
-
})
|
|
130
|
-
})
|
|
131
|
-
|
|
132
|
-
it('supports alt text for accessibility', () => {
|
|
133
|
-
const alt = 'User avatar'
|
|
134
|
-
const wrapper = createWrapper({ src: 'avatar.jpg', alt })
|
|
135
|
-
|
|
136
|
-
const img = wrapper.find('.dm-avatar__image')
|
|
137
|
-
expect(img.attributes('alt')).toBe(alt)
|
|
138
|
-
})
|
|
139
|
-
|
|
140
|
-
it('generates alt text from name when not provided', () => {
|
|
141
|
-
const name = 'John Doe'
|
|
142
|
-
const wrapper = createWrapper({ src: 'avatar.jpg', name })
|
|
143
|
-
|
|
144
|
-
const img = wrapper.find('.dm-avatar__image')
|
|
145
|
-
expect(img.attributes('alt')).toBe(`${name} avatar`)
|
|
146
|
-
})
|
|
147
|
-
|
|
148
|
-
it('supports loading state', () => {
|
|
149
|
-
const wrapper = createWrapper({ loading: true })
|
|
150
|
-
expect(wrapper.find('.dm-avatar--loading').exists()).toBe(true)
|
|
151
|
-
})
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { mount } from '@vue/test-utils'
|
|
3
|
+
import DatametriaAvatar from '../DatametriaAvatar.vue'
|
|
4
|
+
import { datametriaTheme } from '../../theme/presets'
|
|
5
|
+
import { THEME_INJECTION_KEY } from '../../theme/constants'
|
|
6
|
+
|
|
7
|
+
const createWrapper = (props = {}, themeProps = {}) => {
|
|
8
|
+
return mount(DatametriaAvatar, {
|
|
9
|
+
props,
|
|
10
|
+
global: {
|
|
11
|
+
plugins: [{
|
|
12
|
+
install(app) {
|
|
13
|
+
app.provide(THEME_INJECTION_KEY, datametriaTheme)
|
|
14
|
+
}
|
|
15
|
+
}]
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
describe('DatametriaAvatar', () => {
|
|
21
|
+
it('renders correctly', () => {
|
|
22
|
+
const wrapper = createWrapper()
|
|
23
|
+
expect(wrapper.find('.dm-avatar').exists()).toBe(true)
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
it('applies theme colors correctly', () => {
|
|
27
|
+
const wrapper = createWrapper()
|
|
28
|
+
expect(wrapper.find('.dm-avatar').exists()).toBe(true)
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it('displays image when src is provided', () => {
|
|
32
|
+
const src = 'https://example.com/avatar.jpg'
|
|
33
|
+
const wrapper = createWrapper({ src })
|
|
34
|
+
|
|
35
|
+
const img = wrapper.find('.dm-avatar__image')
|
|
36
|
+
expect(img.exists()).toBe(true)
|
|
37
|
+
expect(img.attributes('src')).toBe(src)
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
it('displays initials when name is provided and no src', () => {
|
|
41
|
+
const name = 'John Doe'
|
|
42
|
+
const wrapper = createWrapper({ name })
|
|
43
|
+
|
|
44
|
+
expect(wrapper.find('.dm-avatar__initials').text()).toBe('JD')
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
it('displays single initial for single name', () => {
|
|
48
|
+
const name = 'John'
|
|
49
|
+
const wrapper = createWrapper({ name })
|
|
50
|
+
|
|
51
|
+
expect(wrapper.find('.dm-avatar__initials').text()).toBe('J')
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
it('supports different sizes', () => {
|
|
55
|
+
const sizes = ['sm', 'md', 'lg', 'xl']
|
|
56
|
+
|
|
57
|
+
sizes.forEach(size => {
|
|
58
|
+
const wrapper = createWrapper({ size })
|
|
59
|
+
expect(wrapper.find(`.dm-avatar--${size}`).exists()).toBe(true)
|
|
60
|
+
})
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
it('supports different variants', () => {
|
|
64
|
+
const variants = ['circular', 'rounded', 'square']
|
|
65
|
+
|
|
66
|
+
variants.forEach(variant => {
|
|
67
|
+
const wrapper = createWrapper({ variant })
|
|
68
|
+
expect(wrapper.find(`.dm-avatar--${variant}`).exists()).toBe(true)
|
|
69
|
+
})
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
it('shows fallback icon when no src or name', () => {
|
|
73
|
+
const wrapper = createWrapper()
|
|
74
|
+
expect(wrapper.find('.dm-avatar__icon').exists()).toBe(true)
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
it('handles image load error', async () => {
|
|
78
|
+
const wrapper = createWrapper({ src: 'invalid-url.jpg', name: 'John Doe' })
|
|
79
|
+
const img = wrapper.find('.dm-avatar__image')
|
|
80
|
+
|
|
81
|
+
await img.trigger('error')
|
|
82
|
+
expect(wrapper.find('.dm-avatar__initials').exists()).toBe(true)
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
it('supports custom background color', () => {
|
|
86
|
+
const backgroundColor = '#ff0000'
|
|
87
|
+
const wrapper = createWrapper({ backgroundColor })
|
|
88
|
+
|
|
89
|
+
const avatar = wrapper.find('.dm-avatar')
|
|
90
|
+
const style = avatar.attributes('style')
|
|
91
|
+
// Aceita tanto HEX quanto RGB
|
|
92
|
+
expect(style).toMatch(/background-color: (#ff0000|rgb\(255, 0, 0\))/)
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
it('supports custom text color', () => {
|
|
96
|
+
const textColor = '#ffffff'
|
|
97
|
+
const wrapper = createWrapper({ textColor, name: 'John Doe' })
|
|
98
|
+
|
|
99
|
+
const initials = wrapper.find('.dm-avatar__initials')
|
|
100
|
+
const style = initials.attributes('style')
|
|
101
|
+
// Aceita tanto HEX quanto RGB
|
|
102
|
+
expect(style).toMatch(/color: (#ffffff|rgb\(255, 255, 255\))/)
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
it('supports clickable avatar', async () => {
|
|
106
|
+
const wrapper = createWrapper({ clickable: true })
|
|
107
|
+
const avatar = wrapper.find('.dm-avatar')
|
|
108
|
+
|
|
109
|
+
expect(avatar.classes()).toContain('dm-avatar--clickable')
|
|
110
|
+
|
|
111
|
+
await avatar.trigger('click')
|
|
112
|
+
const avatarComponent = wrapper.findComponent(DatametriaAvatar)
|
|
113
|
+
expect(avatarComponent.emitted('click')).toBeTruthy()
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
it('supports badge/status indicator', () => {
|
|
117
|
+
const wrapper = createWrapper({ badge: true, status: 'online' })
|
|
118
|
+
|
|
119
|
+
expect(wrapper.find('.dm-avatar__badge').exists()).toBe(true)
|
|
120
|
+
expect(wrapper.find('.dm-avatar__badge--online').exists()).toBe(true)
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
it('supports different status types', () => {
|
|
124
|
+
const statuses = ['online', 'offline', 'away', 'busy']
|
|
125
|
+
|
|
126
|
+
statuses.forEach(status => {
|
|
127
|
+
const wrapper = createWrapper({ badge: true, status })
|
|
128
|
+
expect(wrapper.find(`.dm-avatar__badge--${status}`).exists()).toBe(true)
|
|
129
|
+
})
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
it('supports alt text for accessibility', () => {
|
|
133
|
+
const alt = 'User avatar'
|
|
134
|
+
const wrapper = createWrapper({ src: 'avatar.jpg', alt })
|
|
135
|
+
|
|
136
|
+
const img = wrapper.find('.dm-avatar__image')
|
|
137
|
+
expect(img.attributes('alt')).toBe(alt)
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
it('generates alt text from name when not provided', () => {
|
|
141
|
+
const name = 'John Doe'
|
|
142
|
+
const wrapper = createWrapper({ src: 'avatar.jpg', name })
|
|
143
|
+
|
|
144
|
+
const img = wrapper.find('.dm-avatar__image')
|
|
145
|
+
expect(img.attributes('alt')).toBe(`${name} avatar`)
|
|
146
|
+
})
|
|
147
|
+
|
|
148
|
+
it('supports loading state', () => {
|
|
149
|
+
const wrapper = createWrapper({ loading: true })
|
|
150
|
+
expect(wrapper.find('.dm-avatar--loading').exists()).toBe(true)
|
|
151
|
+
})
|
|
152
152
|
})
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { describe, it, expect, vi } from 'vitest'
|
|
2
|
-
import { mount } from '@vue/test-utils'
|
|
3
|
-
import DatametriaBadge from '../DatametriaBadge.vue'
|
|
4
|
-
|
|
5
|
-
describe('DatametriaBadge', () => {
|
|
6
|
-
it('renders with primary variant', () => {
|
|
7
|
-
const wrapper = mount(DatametriaBadge, {
|
|
8
|
-
props: { label: 'Test', variant: 'primary' }
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
expect(wrapper.classes()).toContain('dm-badge--primary')
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
it('validates invalid variant in development', () => {
|
|
15
|
-
const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {})
|
|
16
|
-
const originalEnv = process.env.NODE_ENV
|
|
17
|
-
process.env.NODE_ENV = 'development'
|
|
18
|
-
|
|
19
|
-
mount(DatametriaBadge, {
|
|
20
|
-
props: { label: 'Test', variant: 'invalid' }
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
expect(consoleSpy).toHaveBeenCalledWith(
|
|
24
|
-
expect.stringContaining('[DatametriaBadge] Invalid variant "invalid"')
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
process.env.NODE_ENV = originalEnv
|
|
28
|
-
consoleSpy.mockRestore()
|
|
29
|
-
})
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest'
|
|
2
|
+
import { mount } from '@vue/test-utils'
|
|
3
|
+
import DatametriaBadge from '../DatametriaBadge.vue'
|
|
4
|
+
|
|
5
|
+
describe('DatametriaBadge', () => {
|
|
6
|
+
it('renders with primary variant', () => {
|
|
7
|
+
const wrapper = mount(DatametriaBadge, {
|
|
8
|
+
props: { label: 'Test', variant: 'primary' }
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
expect(wrapper.classes()).toContain('dm-badge--primary')
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
it('validates invalid variant in development', () => {
|
|
15
|
+
const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {})
|
|
16
|
+
const originalEnv = process.env.NODE_ENV
|
|
17
|
+
process.env.NODE_ENV = 'development'
|
|
18
|
+
|
|
19
|
+
mount(DatametriaBadge, {
|
|
20
|
+
props: { label: 'Test', variant: 'invalid' }
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
expect(consoleSpy).toHaveBeenCalledWith(
|
|
24
|
+
expect.stringContaining('[DatametriaBadge] Invalid variant "invalid"')
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
process.env.NODE_ENV = originalEnv
|
|
28
|
+
consoleSpy.mockRestore()
|
|
29
|
+
})
|
|
30
30
|
})
|