fix(pwa): штрафы не прячутся за вкладкой «Не погашены»
Водитель, оплативший штраф сам, видел пустой экран: список открывался на «Не погашены», а там у него ноль (Морозов, штраф от 16.08 — оплачен им, парк его не выставлял). Выглядело как «приложение потеряло мои штрафы». Теперь вкладка выбирается по данным: есть непогашенные — открываем их, нет — открываем «Все». Заодно один запрос вместо двух: список короткий, фильтруем на месте, и переключение вкладок стало мгновенным. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -14,10 +14,8 @@ const FINE = {
|
||||
};
|
||||
|
||||
vi.mock("@/api/driver", () => ({
|
||||
getFines: vi.fn(async (status: string) => ({
|
||||
items: status === "open"
|
||||
? [FINE]
|
||||
: [FINE, { ...FINE, id: 13, settled: "paid" as const, amount: 500 }],
|
||||
getFines: vi.fn(async () => ({
|
||||
items: [FINE, { ...FINE, id: 13, settled: "paid" as const, amount: 500 }],
|
||||
open_count: 1, debt: -5156,
|
||||
})),
|
||||
getFine: vi.fn(async () => ({
|
||||
@@ -50,12 +48,22 @@ function wrap(path = "/fines") {
|
||||
describe("список штрафов", () => {
|
||||
beforeEach(() => vi.clearAllMocks());
|
||||
|
||||
it("нет непогашенных — открываем «Все», а не пустой экран", async () => {
|
||||
// Водитель оплатил штраф сам: долг нулевой, но штрафы у него есть. Раньше
|
||||
// список открывался на «Не погашены» и выглядел пустым (Морозов, 18.08.2026).
|
||||
vi.mocked(driver.getFines).mockResolvedValueOnce({
|
||||
items: [{ ...FINE, settled: "paid" as const }], open_count: 0, debt: 0,
|
||||
} as never);
|
||||
wrap();
|
||||
expect(await screen.findByText("погашен")).toBeInTheDocument();
|
||||
expect(screen.queryByText(/Непогашенных штрафов нет/)).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("долг берётся из баланса 1С, а не из сумм постановлений", async () => {
|
||||
wrap();
|
||||
// Парк гасит ГИБДД авансом: если считать по «оплачен/не оплачен» из
|
||||
// постановлений, экран покажет «долгов нет» при −5 156 ₽ на главном.
|
||||
expect(await screen.findByText(/Долг по штрафам −5 156 ₽ · не погашено: 1/)).toBeInTheDocument();
|
||||
expect(vi.mocked(driver.getFines).mock.calls[0][0]).toBe("open");
|
||||
});
|
||||
|
||||
it("закрытый в ГИБДД штраф остаётся непогашенным для водителя", async () => {
|
||||
|
||||
Reference in New Issue
Block a user