import { describe, it, expect, vi } from 'vitest'
import { mount } from '@vue/test-utils'
import Form from '../Form/index.vue'
// Мокаем анимации
vi.mock('animate.css', () => ({
default: {}
}))
describe('Form', () => {
it('рендерит форму с типом 0 (простое сообщение)', async () => {
const wrapper = mount(Form, {
props: {
formType: 0,
formMessage: 'Тестовое сообщение',
isVisible: true
},
global: {
stubs: {
Teleport: {
template: '
'
}
}
}
})
// Ждем рендеринга
await wrapper.vm.$nextTick()
await new Promise(resolve => setTimeout(resolve, 0))
const form = wrapper.find('form')
expect(form.exists()).toBe(true)
expect(form.text()).toContain('Тестовое сообщение')
expect(form.find('button[type="submit"]').exists()).toBe(true)
})
it('рендерит форму с типом -1 (произвольный контент)', async () => {
const wrapper = mount(Form, {
props: {
formType: -1,
isVisible: true
},
slots: {
default: 'Произвольный контент
'
},
global: {
stubs: {
Teleport: {
template: '
'
}
}
}
})
// Ждем рендеринга
await wrapper.vm.$nextTick()
await new Promise(resolve => setTimeout(resolve, 0))
const content = wrapper.find('.w-\\[440px\\]')
expect(content.exists()).toBe(true)
expect(content.text()).toContain('Произвольный контент')
expect(content.find('button').exists()).toBe(true)
})
it('эмитит isClosed при закрытии формы', async () => {
const wrapper = mount(Form, {
props: {
formType: 0,
formMessage: 'Тестовое сообщение',
isVisible: true
},
global: {
stubs: {
Teleport: {
template: '
'
}
}
}
})
// Ждем рендеринга
await wrapper.vm.$nextTick()
await new Promise(resolve => setTimeout(resolve, 0))
const form = wrapper.find('form')
expect(form.exists()).toBe(true)
await form.trigger('submit')
expect(wrapper.emitted('isClosed')).toBeTruthy()
})
it('закрывает форму при клике на кнопку Ок в типе -1', async () => {
const wrapper = mount(Form, {
props: {
formType: -1,
isVisible: true
},
global: {
stubs: {
Teleport: {
template: '
'
}
}
}
})
// Ждем рендеринга
await wrapper.vm.$nextTick()
await new Promise(resolve => setTimeout(resolve, 0))
const button = wrapper.find('button')
expect(button.exists()).toBe(true)
await button.trigger('click')
expect(wrapper.vm.isVisible).toBe(false)
})
})