import { beforeEach, describe, expect, it, vi } from 'vitest'; import { mount } from '@vue/test-utils'; vi.mock('@inertiajs/vue3', async () => import('../../stubs/inertia.js')); import Edit from '../../../../resources/js/Pages/Prompts/Edit.vue'; import { inertiaMock, resetInertiaMock } from '../../stubs/inertia.js'; describe('Pages/Prompts/Edit', () => { beforeEach(() => { resetInertiaMock(); }); it('wires PromptForm for updating a prompt', () => { const wrapper = mount(Edit, { props: { initial: { name: 'Ada', description: null, body: 'Hi {{ name }}', tags: [] }, suggestedTags: ['chat'], promptId: 7, }, }); expect(inertiaMock.headCalls.at(-1).title).toBe('Ada — Edit'); expect(wrapper.find('h1').text()).toBe('Edit prompt'); expect(wrapper.find('#prompt-name').element.value).toBe('Ada'); expect(wrapper.find('button[type="submit"]').text()).toBe('Save changes'); expect(wrapper.find('a[data-inertia]').attributes('href')).toBe('/prompts/7'); }); it('submits the form via PUT to the prompt URL', async () => { const wrapper = mount(Edit, { props: { initial: { name: 'Ada', description: null, body: 'Hi {{ name }}', tags: [] }, suggestedTags: [], promptId: 7, }, }); await wrapper.find('#prompt-body').setValue('Hello {{ name }}!'); await wrapper.find('form').trigger('submit'); const submission = inertiaMock.formSubmissions[0]; expect(submission.method).toBe('put'); expect(submission.url).toBe('/prompts/7'); expect(submission.data.body).toBe('Hello {{ name }}!'); }); });