mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-23 23:46:35 +00:00
f3e05f48e1
- Found places: the strip shows only when the answer names one of them, the named ones first. A click on a card, or "Add to trip", opens the planner's place form filled in with the place on the day in focus, its Google details (photos, hours, description) loading beside it; "+ Day" and the day grid are gone. - Trip notes: remember_for_trip runs at once without a card. The assistant keeps lasting facts the user mentions (who travels, needs, likes, budget, pace) on its own and offers the unsure ones as a follow-up; the chat shows "Noted for this trip: ..." with the notes a tap away, and reads them again so the dialog never saves over the new note. - City walks: set_city_walk_visit checks a station off on its day (visited, skipped, or the mark taken back), with day_edit as in the day plan, a change card naming the station and its walk, and an undo that restores the status before while the station is as the change left it. - Card heads are a step smaller (32px tile, smaller title and count), and the dot beside "Working on it" in the header is gone.
50 lines
1.8 KiB
TypeScript
50 lines
1.8 KiB
TypeScript
/**
|
|
* FE-AI-REMEMBER-001 to FE-AI-REMEMBER-002
|
|
*
|
|
* A note the assistant kept on its own: a quiet line naming it, the trip
|
|
* notes read again while the answer is written, and the notes a tap away.
|
|
*/
|
|
import { fireEvent, render, screen } from '@testing-library/react';
|
|
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
|
|
import { useSettingsStore } from '../../store/settingsStore';
|
|
import AssistantRemembered from './AssistantRemembered';
|
|
import { type AssistantView, AssistantViewContext } from './assistantViewContext';
|
|
|
|
const SETTINGS = useSettingsStore.getState();
|
|
|
|
function renderLine(live: boolean) {
|
|
const view: AssistantView = { tripId: 4, variant: 'window', density: 'compact' };
|
|
return render(
|
|
<AssistantViewContext.Provider value={view}>
|
|
<AssistantRemembered note="We eat vegetarian" live={live} />
|
|
</AssistantViewContext.Provider>
|
|
);
|
|
}
|
|
|
|
afterEach(() => {
|
|
useSettingsStore.setState(SETTINGS, true);
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
describe('AssistantRemembered', () => {
|
|
it('FE-AI-REMEMBER-001: names the note, and reads the notes again only while the answer is written', () => {
|
|
const loadSettings = vi.fn(async () => {});
|
|
useSettingsStore.setState({ loadSettings });
|
|
const { unmount } = renderLine(false);
|
|
expect(screen.getByText('We eat vegetarian')).toBeInTheDocument();
|
|
expect(screen.getByText('Noted for this trip:')).toBeInTheDocument();
|
|
expect(loadSettings).not.toHaveBeenCalled();
|
|
unmount();
|
|
renderLine(true);
|
|
expect(loadSettings).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('FE-AI-REMEMBER-002: the pencil opens the trip notes', () => {
|
|
useSettingsStore.setState({ loadSettings: vi.fn(async () => {}) });
|
|
renderLine(false);
|
|
fireEvent.click(screen.getByRole('button', { name: 'Edit trip notes' }));
|
|
expect(screen.getByRole('dialog')).toBeInTheDocument();
|
|
});
|
|
});
|