Skip to content

Commit c8e6728

Browse files
authored
Merge pull request #47 from AhmedIkram05/AhmedIkram05/issue37
2 parents 520e6f0 + a163913 commit c8e6728

2 files changed

Lines changed: 43 additions & 1 deletion

File tree

frontend/src/components/ProjectForm.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const buildInitialState = (initialData) => {
3939
};
4040

4141
const ProjectForm = ({
42-
initialData = {},
42+
initialData = null,
4343
users = [],
4444
onSubmit,
4545
onCancel,

frontend/src/tests/components/ProjectForm.test.jsx

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,46 @@ describe('ProjectForm component', () => {
9292
expect(screen.getByLabelText(/Sam/i)).toBeChecked();
9393
expect(screen.getByLabelText(/Taylor/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(/Project Name/i), {
109+
target: { value: 'New Project' },
110+
});
111+
fireEvent.change(screen.getByLabelText(/Description/i), {
112+
target: { value: 'Initial scope' },
113+
});
114+
fireEvent.change(screen.getByLabelText(/Status/i), {
115+
target: { value: 'completed' },
116+
});
117+
fireEvent.change(screen.getByLabelText(/GitHub Repository URL/i), {
118+
target: { value: 'https://github.com/org/new' },
119+
});
120+
fireEvent.click(screen.getByLabelText(/Alex/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(/Status/i)).toHaveValue('completed');
134+
expect(screen.getByDisplayValue('https://github.com/org/new')).toBeInTheDocument();
135+
expect(screen.getByLabelText(/Alex/i)).toBeChecked();
136+
});
95137
});

0 commit comments

Comments
 (0)