Skip to content

Commit df837d8

Browse files
authored
Merge pull request #158 from Wintus/fix/reset-page-title-on-wiki-change
Fix PageTitleInput reset on wiki site change
2 parents 10b88a9 + f306229 commit df837d8

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

src/components/SearchForm.tsx

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export function SearchForm({
2121
<WikiSelector selectedWiki={wikiUrl} onChange={setWikiUrl} />
2222

2323
<PageTitleInput
24+
key={wikiUrl.href}
2425
initialPageTitle={searchState.pageTitle}
2526
wikiUrl={wikiUrl}
2627
/>
@@ -328,6 +329,36 @@ if (import.meta.vitest) {
328329
expect(wikiSelector.value).toBe('https://ja.wikipedia.org/');
329330
});
330331

332+
it('resets page title input when wiki site changes', async () => {
333+
const { fireEvent } = await import('@testing-library/react');
334+
const user = userEvent.setup();
335+
await act(async () => renderWithQuery(<SearchForm {...defaultProps} />));
336+
const titleInput = screen.getByLabelText(
337+
/Wiki Article Title:/i
338+
) as HTMLInputElement;
339+
340+
// User types a different title
341+
await user.clear(titleInput);
342+
await user.type(titleInput, 'Albert Einstein');
343+
expect(titleInput.value).toBe('Albert Einstein');
344+
345+
// Switch wiki site
346+
const wikiSelector =
347+
screen.getByLabelText<HTMLSelectElement>(/Wiki Site:/i);
348+
await act(async () => {
349+
// use fireEvent due to warning of act unsupported
350+
fireEvent.change(wikiSelector, {
351+
target: { value: 'https://ja.wikipedia.org/' },
352+
});
353+
});
354+
355+
// PageTitleInput remounts → title resets to initialPageTitle
356+
const resetTitleInput = screen.getByLabelText(
357+
/Wiki Article Title:/i
358+
) as HTMLInputElement;
359+
expect(resetTitleInput.value).toBe('Initial Title');
360+
});
361+
331362
it('renders initial values from searchState', async () => {
332363
await act(async () =>
333364
renderWithQuery(

0 commit comments

Comments
 (0)