11import { render , fireEvent } from '@testing-library/vue'
22import 'jest-dom/extend-expect'
3- import Signup from './components/Signup'
4-
5- test ( 'signup form submits' , async ( ) => {
6- const fakeUser = {
7- username : 'jackiechan' ,
8- about : 'Lorem ipsum dolor sit amet' ,
9- selected : 'None of the above' ,
10- rememberMe : true
3+ import Form from './components/Form'
4+
5+ test ( 'Review form submits' , async ( ) => {
6+ const fakeReview = {
7+ title : 'An Awesome Movie' ,
8+ review : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' ,
9+ rating : '3' ,
10+ genre : 'Action' ,
11+ recommend : true
1112 }
1213
1314 const {
@@ -17,31 +18,34 @@ test('signup form submits', async () => {
1718 getByDisplayValue,
1819 getByPlaceholderText,
1920 emitted
20- } = render ( Signup )
21+ } = render ( Form )
2122
2223 const submitButton = getByText ( 'Submit' )
2324
24- // Initially the form should be disabled
25+ // Initially the submit button should be disabled
2526 expect ( submitButton ) . toBeDisabled ( )
2627
27- // We are gonna showcase several ways of targetting DOM elements.
28+ // In this test we showcase several ways of targetting DOM elements.
2829 // However, `getByLabelText` should be your top preference when handling
2930 // form elements.
30- //
3131 // Read 'What queries should I use?' for additional context:
3232 // https://testing-library.com/docs/guide-which-query
33- const userNameInput = getByLabelText ( / u s e r n a m e / i)
34- await fireEvent . update ( userNameInput , fakeUser . username )
3533
36- const aboutMeTextarea = getByPlaceholderText ( 'I was born in...' )
37- await fireEvent . update ( aboutMeTextarea , fakeUser . about )
34+ const titleInput = getByLabelText ( / t i t l e o f t h e m o v i e / i )
35+ await fireEvent . update ( titleInput , fakeReview . title )
3836
39- const rememberMeInput = getByTestId ( 'remember-input' )
40- await fireEvent . update ( rememberMeInput , fakeUser . rememberMe )
37+ const reviewTextarea = getByPlaceholderText ( 'Write an awesome review' )
38+ await fireEvent . update ( reviewTextarea , fakeReview . review )
39+
40+ const ratingSelect = getByLabelText ( 'Wonderful' )
41+ await fireEvent . update ( ratingSelect , fakeReview . rating )
4142
4243 // Get the Select element by using the initially displayed value.
43- const preferenceSelect = getByDisplayValue ( 'Dogs' )
44- await fireEvent . update ( preferenceSelect , fakeUser . selected )
44+ const genreSelect = getByDisplayValue ( 'Comedy' )
45+ await fireEvent . update ( genreSelect , fakeReview . genre )
46+
47+ const recommendInput = getByTestId ( 'recommend-checkbox' )
48+ await fireEvent . update ( recommendInput , fakeReview . recommend )
4549
4650 // NOTE: in jsdom, it's not possible to trigger a form submission
4751 // by clicking on the submit button. This is really unfortunate.
@@ -54,5 +58,5 @@ test('signup form submits', async () => {
5458
5559 // Assert event has been emitted.
5660 expect ( emitted ( ) . submit ) . toHaveLength ( 1 )
57- expect ( emitted ( ) . submit [ 0 ] ) . toEqual ( [ fakeUser ] )
61+ expect ( emitted ( ) . submit [ 0 ] ) . toEqual ( [ fakeReview ] )
5862} )
0 commit comments