Files
specs/openspec/changes/group-account-rows-by-instrument/test-cases/grouping.md
T
codex-bot f3a6b78461
Specs security / security (push) Successful in 7s
Specs verify / verify (push) Successful in 9s
spec: plan grouping of all-account rows by instrument (WealthLedger/main#47) (#64)
2026-10-30 07:28:31 +03:00

70 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Test Cases — grouping
## TC-GRP-001 — Интерливинг трёх записей одной группы в серверном порядке
**Verifies:** `brokerage-account-ledger` — `All-accounts ledger groups same-day entries of one instrument` (new combination: порядок внутри группы из 3+ записей с интерливингом чужих записей)
**Risk / Priority:** Высокий / High
**Preconditions:** Режим «Все счета»; брокерский счёт и ИИС доступны; период подтверждённо полный.
**Test Data:** Серверный порядок записей одного дня: A1 (купон X, Брокерский, +200 RUB), B (перевод, без Instrument), A2 (купон X, ИИС, +100 RUB), C (купон Y, Брокерский, +50 RUB), A3 (купон X, Брокерский, +150 RUB).
**Steps:**
1. Открыть полный журнал в режиме «Все счета» за этот день.
2. Зафиксировать порядок групп и записей.
**Expected Results:** Группа X (A1+A2+A3) стоит на месте A1 — до B; внутри группы порядок A1, A2, A3; затем B, затем C. Относительный порядок B и C сохранён. Итог группы +450 RUB.
**Automation Candidate:** yes (E2E)
## TC-GRP-002 — Две разные группы, записи которых чередуются
**Verifies:** `brokerage-account-ledger` — `All-accounts ledger groups same-day entries of one instrument` / `All-accounts ledger grouping preserves order and limits` (new combination)
**Risk / Priority:** Высокий / High
**Preconditions:** Режим «Все счета», полный период.
**Test Data:** Порядок: X1 (купон X), Y1 (дивиденд Y), X2, Y2, X3. X — облигация, Y — акция; купоны X по 100 RUB (Брокерский, ИИС, Брокерский), дивиденды Y по 50 RUB (ИИС, Брокерский).
**Steps:**
1. Открыть журнал «Все счета» за день.
**Expected Results:** Две группы: группа X на месте X1 с итогом +300 RUB, группа Y на месте Y1 с итогом +100 RUB; порядок групп X → Y; внутри каждой — серверный порядок записей.
**Automation Candidate:** yes (E2E)
## TC-GRP-003 — Одна и та же бумага: figi-only identity против instrumentUid — не смешивать разные идентичности
**Verifies:** `brokerage-account-ledger` — `All-accounts ledger groups same-day entries of one instrument` (new combination: строгость identity-ключа)
**Risk / Priority:** Средний / High
**Preconditions:** Режим «Все счета», полный период.
**Test Data:** В один день: купон облигации Z на счёте 1 (+100 RUB, identity по figi), купон облигации Z на счёте 2 (+100 RUB, identity по instrumentUid без figi); и купон облигации W на двух счетах (+100 RUB и +50 RUB), где обе записи имеют одинаковый identity.
**Steps:**
1. Открыть журнал «Все счета» за день.
**Expected Results:** Облигация W образует группу с итогом +150 RUB. Две записи облигации Z показаны отдельно: равенство identity не доказано, ключ строится по первому непустому идентификатору (design D2), а группировка без доказанного равенства не выполняется.
**Automation Candidate:** yes (E2E со stubbed API, отложено до появления QA repo)
## TC-GRP-004 — Граница дня около полуночи местного времени
**Verifies:** `brokerage-account-ledger` — `All-accounts ledger groups same-day entries of one instrument` (new combination: экранный день в местном времени)
**Risk / Priority:** Средний / Medium
**Preconditions:** Режим «Все счета», полный период.
**Test Data:** Купон X +100 RUB с execution time 23:59:30 Europe/Moscow и купон X +100 RUB с execution time 00:00:30 следующего календарного дня Europe/Moscow.
**Steps:**
1. Открыть журнал «Все счета», охватывающий оба момента.
**Expected Results:** Экранный день определяется так же, как дата, которую строка показывает на этом экране (spec: «как на экране», design D2 — локальная timezone браузера). При timezone браузера Europe/Moscow записи показаны в разных днях и группу не образуют. Oracle — дата, показанная в строке, а не UTC-дата `occurredAt`.
**Automation Candidate:** yes (E2E с фиксированной timezone браузера, отложено до появления QA repo)
## TC-GRP-005 — Прогноз: неизвестная сумма + известные суммы в двух валютах в одной группе
**Verifies:** `brokerage-account-upcoming-events` — `All-accounts upcoming event group shows each event and a forecast total` (new combination)
**Risk / Priority:** Высокий / High
**Preconditions:** Режим «Все счета», страница «Будущие события».
**Test Data:** Дивиденд D: событие на Брокерском 10 USD (известно), событие на ИИС 200 RUB (известно), событие на третьем счёте без суммы; все — одна дата реестра, один точный тип.
**Steps:**
1. Открыть «Будущие события» в режиме «Все счета».
**Expected Results:** Одна группа из трёх событий; строка без суммы показывает «неизвестно»; итог группы скрыт, потому что у одного события сумма неизвестна (прогноз полный, но не полностью известен по суммам); известные 10 USD и 200 RUB показаны отдельными строками, без конвертации и без общего итога. Дата в заголовке обозначена как дата реестра.
**Automation Candidate:** yes (E2E)
## TC-GRP-006 — «Выплаты» в `all`: отрицательная корректировка и дубли operation IDs внутри одной группы, аналитические итоги не меняются
**Verifies:** `brokerage-account-income-analytics` — `Income payments remain traceable to exact Ledger Entries` / Scenario: Отрицательная корректировка и повторяющиеся IDs сохраняются (new combination: то же внутри группы `all`)
**Risk / Priority:** Высокий / High
**Preconditions:** Режим «Все счета», раздел «Выплаты», период подтверждённо полный.
**Test Data:** За один день по облигации X: купон +200 RUB (Брокерский, opId=77), купон +100 RUB (ИИС, opId=77 — дубликат), корректировка −50 RUB (Брокерский, тот же тип). Аналитические итоги страницы зафиксированы до.
**Steps:**
1. Открыть «Выплаты» в режиме «Все счета» за период.
2. Сравнить аналитические итоги с зафиксированными.
**Expected Results:** Одна группа из трёх карточек; обе записи opId=77 — отдельные карточки; корректировка со знаком «−»; итог группы +250 RUB; валютные заголовки групп и receipt count отсутствуют; аналитические итоги страницы не пересчитаны и не изменились.
**Automation Candidate:** yes (E2E)