mirror of
https://github.com/IT4Change/gradido.git
synced 2026-02-06 09:56:05 +00:00
* fix(admin): update test files predeploy * fix(admin): update test files predeploy * fix(admin): update test files predeploy
126 lines
2.9 KiB
JavaScript
126 lines
2.9 KiB
JavaScript
import { mount } from '@vue/test-utils'
|
|
import { describe, it, expect, beforeEach, vi } from 'vitest'
|
|
import InputAmount from './InputAmount'
|
|
import { useRoute } from 'vue-router'
|
|
import { useI18n } from 'vue-i18n'
|
|
import { ref } from 'vue'
|
|
import { BFormInput } from 'bootstrap-vue-next'
|
|
|
|
vi.mock('vue-router', () => ({
|
|
useRoute: vi.fn(() => ({
|
|
params: {},
|
|
path: '/some-path',
|
|
})),
|
|
}))
|
|
|
|
vi.mock('vue-i18n', () => ({
|
|
useI18n: vi.fn(() => ({
|
|
t: (key) => key,
|
|
n: (num) => num,
|
|
})),
|
|
}))
|
|
|
|
vi.mock('vee-validate', () => ({
|
|
useField: vi.fn(() => ({
|
|
value: ref(''),
|
|
meta: { valid: true },
|
|
errorMessage: ref(''),
|
|
})),
|
|
}))
|
|
|
|
// Mock toast
|
|
const mockToastError = vi.fn()
|
|
vi.mock('@/composables/useToast', () => ({
|
|
useAppToast: vi.fn(() => ({
|
|
toastError: mockToastError,
|
|
})),
|
|
}))
|
|
|
|
describe('InputAmount', () => {
|
|
let wrapper
|
|
|
|
const createWrapper = (propsData = {}) => {
|
|
return mount(InputAmount, {
|
|
props: {
|
|
name: 'amount',
|
|
label: 'Amount',
|
|
placeholder: 'Enter amount',
|
|
typ: 'TransactionForm',
|
|
modelValue: '12,34',
|
|
...propsData,
|
|
},
|
|
global: {
|
|
mocks: {
|
|
$route: useRoute(),
|
|
...useI18n(),
|
|
},
|
|
components: {
|
|
BFormInput,
|
|
},
|
|
directives: {
|
|
focus: {},
|
|
},
|
|
stubs: {
|
|
BFormGroup: true,
|
|
BFormInvalidFeedback: true,
|
|
BInputGroup: true,
|
|
},
|
|
},
|
|
})
|
|
}
|
|
|
|
beforeEach(() => {
|
|
vi.clearAllMocks()
|
|
})
|
|
|
|
describe('mount in a TransactionForm', () => {
|
|
beforeEach(() => {
|
|
wrapper = createWrapper()
|
|
})
|
|
|
|
it('renders the component input-amount', () => {
|
|
expect(wrapper.find('div.input-amount').exists()).toBe(true)
|
|
})
|
|
|
|
it('normalizes the amount correctly', async () => {
|
|
await wrapper.vm.normalizeAmount('12,34')
|
|
expect(wrapper.vm.value).toBe('12.34')
|
|
})
|
|
|
|
it('does not normalize invalid input', async () => {
|
|
await wrapper.vm.normalizeAmount('12m34')
|
|
expect(wrapper.vm.value).toBe('12m34')
|
|
})
|
|
})
|
|
|
|
describe('mount in a ContributionForm', () => {
|
|
beforeEach(() => {
|
|
wrapper = createWrapper({
|
|
typ: 'ContributionForm',
|
|
modelValue: '12.34',
|
|
})
|
|
})
|
|
|
|
it('renders the component input-amount', () => {
|
|
expect(wrapper.find('div.input-amount').exists()).toBe(true)
|
|
})
|
|
|
|
it('normalizes the amount correctly', async () => {
|
|
await wrapper.vm.normalizeAmount('12.34')
|
|
expect(wrapper.vm.value).toBe('12.34')
|
|
})
|
|
|
|
it('does not normalize invalid input', async () => {
|
|
await wrapper.vm.normalizeAmount('12m34')
|
|
expect(wrapper.vm.value).toBe('12m34')
|
|
})
|
|
})
|
|
|
|
it('emits update:modelValue when value changes', async () => {
|
|
wrapper = createWrapper()
|
|
await wrapper.vm.normalizeAmount('15.67')
|
|
expect(wrapper.emitted('update:modelValue')).toBeTruthy()
|
|
expect(wrapper.emitted('update:modelValue')[0]).toEqual(['15.67'])
|
|
})
|
|
})
|