@@ -92,4 +92,46 @@ describe('ProjectForm component', () => {
9292 expect ( screen . getByLabelText ( / S a m / i) ) . toBeChecked ( ) ;
9393 expect ( screen . getByLabelText ( / T a y l o r / i) ) . toBeChecked ( ) ;
9494 } ) ;
95+
96+ test ( 'preserves user input when re-rendered without initialData' , ( ) => {
97+ const onSubmit = jest . fn ( ) ;
98+
99+ const { rerender } = render (
100+ < ProjectForm
101+ onSubmit = { onSubmit }
102+ users = { [
103+ { id : 1 , name : 'Alex' , role : 'developer' } ,
104+ ] }
105+ />
106+ ) ;
107+
108+ fireEvent . change ( screen . getByLabelText ( / P r o j e c t N a m e / i) , {
109+ target : { value : 'New Project' } ,
110+ } ) ;
111+ fireEvent . change ( screen . getByLabelText ( / D e s c r i p t i o n / i) , {
112+ target : { value : 'Initial scope' } ,
113+ } ) ;
114+ fireEvent . change ( screen . getByLabelText ( / S t a t u s / i) , {
115+ target : { value : 'completed' } ,
116+ } ) ;
117+ fireEvent . change ( screen . getByLabelText ( / G i t H u b R e p o s i t o r y U R L / i) , {
118+ target : { value : 'https://github.com/org/new' } ,
119+ } ) ;
120+ fireEvent . click ( screen . getByLabelText ( / A l e x / i) ) ;
121+
122+ rerender (
123+ < ProjectForm
124+ onSubmit = { onSubmit }
125+ users = { [
126+ { id : 1 , name : 'Alex' , role : 'developer' } ,
127+ ] }
128+ />
129+ ) ;
130+
131+ expect ( screen . getByDisplayValue ( 'New Project' ) ) . toBeInTheDocument ( ) ;
132+ expect ( screen . getByDisplayValue ( 'Initial scope' ) ) . toBeInTheDocument ( ) ;
133+ expect ( screen . getByLabelText ( / S t a t u s / i) ) . toHaveValue ( 'completed' ) ;
134+ expect ( screen . getByDisplayValue ( 'https://github.com/org/new' ) ) . toBeInTheDocument ( ) ;
135+ expect ( screen . getByLabelText ( / A l e x / i) ) . toBeChecked ( ) ;
136+ } ) ;
95137} ) ;
0 commit comments