49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
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 }}!');
|
|
});
|
|
});
|