fix(web): тесты смены метки и сброса, hideDone без флажка (#112)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
3ba8f06637
commit
e79b073180
@ -79,4 +79,38 @@ describe("AgileToolbar", () => {
|
||||
render(<Harness page="sprint" />);
|
||||
expect(assignee().value).toBe("");
|
||||
});
|
||||
|
||||
it("смена метки и страницы без размонтирования: q сброшен, чужие значения не протекают, прежние данные целы", () => {
|
||||
const r = render(<Harness />);
|
||||
fireEvent.change(assignee(), { target: { value: "ivanov" } });
|
||||
fireEvent.click(screen.getByLabelText("Скрыть выполненные"));
|
||||
fireEvent.change(search(), { target: { value: "abc" } });
|
||||
const before = localStorage.getItem(AGILE_KEY);
|
||||
r.rerender(<Harness label="STOCKS" />);
|
||||
expect(search().value).toBe("");
|
||||
expect(assignee().value).toBe("");
|
||||
expect((screen.getByLabelText("Скрыть выполненные") as HTMLInputElement).checked).toBe(false);
|
||||
expect(localStorage.getItem(AGILE_KEY)).toBe(before);
|
||||
r.rerender(<Harness label="STOCKS" page="kanban" />);
|
||||
expect(assignee().value).toBe("");
|
||||
expect(localStorage.getItem(AGILE_KEY)).toBe(before);
|
||||
r.rerender(<Harness />);
|
||||
expect(assignee().value).toBe("ivanov");
|
||||
expect(search().value).toBe("");
|
||||
});
|
||||
|
||||
it("сброс сохраняет collapsed, hiddenColumns и epicsPanel", () => {
|
||||
localStorage.setItem(AGILE_KEY, JSON.stringify({ AWPCA: { backlog: {
|
||||
assignee: "ivanov", epic: "E-1", hideDone: true, collapsed: ["E-1"], hiddenColumns: ["Done"], epicsPanel: false } } }));
|
||||
render(<Harness />);
|
||||
fireEvent.click(screen.getByText("Сбросить фильтры"));
|
||||
expect(stored().AWPCA.backlog).toEqual({
|
||||
assignee: "", epic: "", hideDone: false, collapsed: ["E-1"], hiddenColumns: ["Done"], epicsPanel: false });
|
||||
});
|
||||
|
||||
it("showHideDone=false: сохранённый hideDone не показывает «Сбросить фильтры»", () => {
|
||||
localStorage.setItem(AGILE_KEY, JSON.stringify({ AWPCA: { backlog: { hideDone: true } } }));
|
||||
render(<Harness showHideDone={false} />);
|
||||
expect(screen.queryByText("Сбросить фильтры")).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
@ -19,7 +19,7 @@ export function AgileToolbar({ filter, setQ, set, onReset, assignees, showHideDo
|
||||
<Checkbox label="Скрыть выполненные" checked={filter.hideDone} onChange={(e) => set({ hideDone: e.target.checked })} />
|
||||
)}
|
||||
{children}
|
||||
{hasFilters(filter) && <Button variant="ghost" onClick={onReset}>Сбросить фильтры</Button>}
|
||||
{hasFilters({ ...filter, hideDone: filter.hideDone && showHideDone }) && <Button variant="ghost" onClick={onReset}>Сбросить фильтры</Button>}
|
||||
</Panel>
|
||||
);
|
||||
}
|
||||
|
||||
@ -13,6 +13,7 @@ export function useAgileView(label: string, page: AgilePage) {
|
||||
setState(cur);
|
||||
}
|
||||
const ref = useRef(cur);
|
||||
// ref обновляется при рендере: set/reset в одном событии должны видеть актуальный вид, а не замыкание прошлого рендера
|
||||
ref.current = cur;
|
||||
|
||||
const commit = useCallback((next: typeof state) => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user