Fix Greek lookup: auto-prepend G prefix and use search endpoint for English words

This commit is contained in:
Claude
2026-05-27 16:46:34 +00:00
parent 8e2343da30
commit ebdeeed3f0
2 changed files with 43 additions and 13 deletions
+7 -7
View File
@@ -289,18 +289,18 @@ async function goToStudyAndAddGreekWord(fetchMock) {
fireEvent.click(screen.getByRole('button', { name: /begin studying/i }));
await screen.findByText(/chunk editor/i);
fireEvent.click(screen.getByRole('button', { name: /add greek word/i }));
await screen.findByPlaceholderText(/G4102 or faith/i);
await screen.findByPlaceholderText(/G4102, 4102/i);
}
describe('Greek word lookup', () => {
test('adds a Greek word entry form', async () => {
await goToStudyAndAddGreekWord();
expect(screen.getByPlaceholderText(/G4102 or faith/i)).toBeInTheDocument();
expect(screen.getByPlaceholderText(/G4102, 4102/i)).toBeInTheDocument();
});
test('populates fields after a successful lookup', async () => {
await goToStudyAndAddGreekWord(buildFetchMock({ greekData: mockGreekDefinition }));
fireEvent.change(screen.getByPlaceholderText(/G4102 or faith/i), { target: { value: 'G4102' } });
fireEvent.change(screen.getByPlaceholderText(/G4102, 4102/i), { target: { value: 'G4102' } });
fireEvent.click(screen.getByRole('button', { name: /look up/i }));
await screen.findByDisplayValue('πίστις');
expect(screen.getByDisplayValue('pistis')).toBeInTheDocument();
@@ -309,7 +309,7 @@ describe('Greek word lookup', () => {
test('shows "No definition found." when the API returns an empty array', async () => {
await goToStudyAndAddGreekWord(buildFetchMock({ greekData: [] }));
fireEvent.change(screen.getByPlaceholderText(/G4102 or faith/i), { target: { value: 'G4102' } });
fireEvent.change(screen.getByPlaceholderText(/G4102, 4102/i), { target: { value: 'G4102' } });
fireEvent.click(screen.getByRole('button', { name: /look up/i }));
await screen.findByDisplayValue('No definition found.');
});
@@ -326,7 +326,7 @@ describe('Greek word lookup', () => {
return Promise.reject(new Error('Network error'));
}),
);
fireEvent.change(screen.getByPlaceholderText(/G4102 or faith/i), { target: { value: 'G4102' } });
fireEvent.change(screen.getByPlaceholderText(/G4102, 4102/i), { target: { value: 'G4102' } });
fireEvent.click(screen.getByRole('button', { name: /look up/i }));
await screen.findByDisplayValue('Lookup failed.');
});
@@ -343,10 +343,10 @@ describe('Greek word lookup', () => {
test('removes a Greek word entry', async () => {
await goToStudyAndAddGreekWord();
expect(screen.getByPlaceholderText(/G4102 or faith/i)).toBeInTheDocument();
expect(screen.getByPlaceholderText(/G4102, 4102/i)).toBeInTheDocument();
fireEvent.click(screen.getByRole('button', { name: /^delete$/i }));
await waitFor(() => {
expect(screen.queryByPlaceholderText(/G4102 or faith/i)).not.toBeInTheDocument();
expect(screen.queryByPlaceholderText(/G4102, 4102/i)).not.toBeInTheDocument();
});
});
});