From 967397b5d5b7ca58b88615c81c138ab97a914780 Mon Sep 17 00:00:00 2001 From: slava Date: Sun, 12 Apr 2026 17:29:48 +0700 Subject: [PATCH] Add scenarios for "FETCH_TRANSACTIONS" testing and improve bank-specific bootstrapping logic in mock server. --- android/ozon/GetLastTransactionsScript.cpp | 11 ++++++++- tests/mock_server/README.md | 23 ++++++++++++++++++- tests/mock_server/WINDOWS.md | 10 ++++++++ tests/mock_server/gen_mock_data.py | 15 ++++++++++++ tests/mock_server/mock_server.py | 8 +++++++ tests/mock_server/run.sh | 14 +++++++++++ ...ixel7_dushanbe_ft_01_embedded_minus_1.json | 10 ++++++++ .../pixel7_dushanbe_ft_02_minus_1_2131.json | 10 ++++++++ .../pixel7_dushanbe_ft_03_minus_1_2125.json | 10 ++++++++ .../pixel7_dushanbe_ft_04_minus_1_1836.json | 10 ++++++++ .../pixel7_dushanbe_ft_05_minus_1_1819.json | 10 ++++++++ .../pixel7_dushanbe_ft_06_plus_1_2052.json | 10 ++++++++ .../pixel7_ozon_ft_01_evgeny_plus_100.json | 10 ++++++++ .../pixel7_ozon_ft_02_vlad_minus_100.json | 10 ++++++++ .../pixel7_ozon_ft_03_vlad_minus_300.json | 10 ++++++++ .../pool/pixel7_ozon_ft_04_vlad_plus_100.json | 10 ++++++++ .../pixel7_ozon_ft_05_vlad_plus_100_b.json | 10 ++++++++ .../pixel7_ozon_ft_06_evgeny_plus_100_b.json | 10 ++++++++ .../tecno_ozon_ft_01_galina_plus_100.json | 10 ++++++++ .../tecno_ozon_ft_02_galina_plus_300.json | 10 ++++++++ .../tecno_ozon_ft_03_vlad_minus_100_a.json | 10 ++++++++ .../tecno_ozon_ft_04_vlad_minus_100_b.json | 10 ++++++++ .../tecno_ozon_ft_05_galina_minus_100_a.json | 10 ++++++++ .../tecno_ozon_ft_06_galina_minus_100_b.json | 10 ++++++++ .../pool/tecno_ozon_ft_07_vlad_plus_550.json | 10 ++++++++ 25 files changed, 269 insertions(+), 2 deletions(-) create mode 100644 tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_01_embedded_minus_1.json create mode 100644 tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_02_minus_1_2131.json create mode 100644 tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_03_minus_1_2125.json create mode 100644 tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_04_minus_1_1836.json create mode 100644 tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_05_minus_1_1819.json create mode 100644 tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_06_plus_1_2052.json create mode 100644 tests/mock_server/scenarios/pool/pixel7_ozon_ft_01_evgeny_plus_100.json create mode 100644 tests/mock_server/scenarios/pool/pixel7_ozon_ft_02_vlad_minus_100.json create mode 100644 tests/mock_server/scenarios/pool/pixel7_ozon_ft_03_vlad_minus_300.json create mode 100644 tests/mock_server/scenarios/pool/pixel7_ozon_ft_04_vlad_plus_100.json create mode 100644 tests/mock_server/scenarios/pool/pixel7_ozon_ft_05_vlad_plus_100_b.json create mode 100644 tests/mock_server/scenarios/pool/pixel7_ozon_ft_06_evgeny_plus_100_b.json create mode 100644 tests/mock_server/scenarios/pool/tecno_ozon_ft_01_galina_plus_100.json create mode 100644 tests/mock_server/scenarios/pool/tecno_ozon_ft_02_galina_plus_300.json create mode 100644 tests/mock_server/scenarios/pool/tecno_ozon_ft_03_vlad_minus_100_a.json create mode 100644 tests/mock_server/scenarios/pool/tecno_ozon_ft_04_vlad_minus_100_b.json create mode 100644 tests/mock_server/scenarios/pool/tecno_ozon_ft_05_galina_minus_100_a.json create mode 100644 tests/mock_server/scenarios/pool/tecno_ozon_ft_06_galina_minus_100_b.json create mode 100644 tests/mock_server/scenarios/pool/tecno_ozon_ft_07_vlad_plus_550.json diff --git a/android/ozon/GetLastTransactionsScript.cpp b/android/ozon/GetLastTransactionsScript.cpp index 3095a8a..8ed3fe5 100644 --- a/android/ozon/GetLastTransactionsScript.cpp +++ b/android/ozon/GetLastTransactionsScript.cpp @@ -209,7 +209,7 @@ void GetLastTransactionsScript::searchTransaction(const DeviceInfo &device, int const QString tzName = AdbUtils::getDeviceTimezone(m_deviceId); QTimeZone deviceTz(tzName.toUtf8()); if (!deviceTz.isValid()) deviceTz = QTimeZone("Europe/Moscow"); - const int maxScrolls = 8; + const int maxScrolls = 30; const int navBarTop = device.screenHeight - (device.screenHeight / 10); // Целевая дата в таймзоне устройства для поиска заголовка дня в списке @@ -258,6 +258,15 @@ void GetLastTransactionsScript::searchTransaction(const DeviceInfo &device, int return false; }; + // Ждём пока WebView раскроет accessibility tree (иначе dump пустой) + for (int wait = 0; wait < 5; ++wait) { + xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter)); + if (xmlScreenParser.findTransactionButtons(1).size() > 0) break; + if (hasDateOnScreen()) break; + qDebug() << "[FetchTransactions] Waiting for WebView content..." << (wait + 1); + QThread::msleep(2000); + } + bool dateFound = false; for (int scroll = 0; scroll < maxScrolls; ++scroll) { if (QThread::currentThread()->isInterruptionRequested()) { diff --git a/tests/mock_server/README.md b/tests/mock_server/README.md index 09407b1..43a389d 100644 --- a/tests/mock_server/README.md +++ b/tests/mock_server/README.md @@ -130,9 +130,28 @@ python mock_server.py --port 8888 ``` Флаги: +- `--banks ozon` — генерировать задачи только для указанных банков +- `--banks ozon dushanbe_city_bank` — несколько банков через пробел - `--ft-per-material 3` — сколько FT на материал при бутстрапе (default 3) - `--seed 42` — фиксированный RNG для воспроизводимости +Без `--banks` задачи генерируются для всех активных банков. + +Примеры: +```bash +# Только Ozon +./run.sh --banks ozon + +# Только Dushanbe +./run.sh --banks dushanbe_city_bank + +# Ozon + Dushanbe, по 2 FT на материал +./run.sh --banks ozon dushanbe_city_bank --ft-per-material 2 + +# Все банки (по умолчанию) +./run.sh +``` + ### Терминал 2 — ARC ```bash @@ -241,8 +260,10 @@ python tests/mock_server/gen_mock_data.py # Сгенерировать пул задач python tests/mock_server/gen_fetch_transactions.py -# 6. Запустить мок +# 6. Запустить мок (все банки) cd tests/mock_server && python mock_server.py --port 8888 +# или только определённые: +# cd tests/mock_server && python mock_server.py --port 8888 --banks ozon # 7. Запустить ARC (в отдельном терминале) ./build/ARC # macOS diff --git a/tests/mock_server/WINDOWS.md b/tests/mock_server/WINDOWS.md index 7256417..06f2597 100644 --- a/tests/mock_server/WINDOWS.md +++ b/tests/mock_server/WINDOWS.md @@ -43,6 +43,7 @@ powershell -ExecutionPolicy Bypass -File setup.ps1 |---|---|---| | `-Port` | 8888 | Порт mock-сервера | | `-FtPerMaterial` | 3 | FETCH_TRANSACTIONS на материал при бутстрапе (из пула) | +| `-Banks` | все | Банки через запятую: `ozon`, `dushanbe_city_bank`, `black` | | `-SkipInstall` | — | Пропустить установку Python/Flask | | `-GenerateOnly` | — | Только сгенерировать данные, не запускать сервер | | `-Clean` | — | Также очистить пул транзакций (`scenarios/pool/`) | @@ -56,6 +57,15 @@ powershell -ExecutionPolicy Bypass -File setup.ps1 # На другом порту с 5 транзакциями на материал .\setup.ps1 -Port 9999 -FtPerMaterial 5 +# Только Ozon +.\setup.ps1 -Banks ozon + +# Только Dushanbe, по 2 транзакции +.\setup.ps1 -Banks dushanbe_city_bank -FtPerMaterial 2 + +# Ozon + Dushanbe +.\setup.ps1 -Banks ozon,dushanbe_city_bank + # Пропустить установку (Python/Flask уже есть) .\setup.ps1 -SkipInstall diff --git a/tests/mock_server/gen_mock_data.py b/tests/mock_server/gen_mock_data.py index 75ccdb5..ceea5d6 100755 --- a/tests/mock_server/gen_mock_data.py +++ b/tests/mock_server/gen_mock_data.py @@ -112,6 +112,19 @@ def device_label(name: str) -> str: return m.group(1) if m else name +def cleanup_events(db_path: Path): + """Delete all events from previous runs.""" + conn = sqlite3.connect(str(db_path)) + count = conn.execute("SELECT count(*) FROM events").fetchone()[0] + if count > 0: + conn.execute("DELETE FROM events") + conn.commit() + print(f" deleted {count} old events") + else: + print(" events table clean") + conn.close() + + def generate(materials: list, out_dir: Path): out_dir.mkdir(parents=True, exist_ok=True) scenarios_dir = out_dir / "scenarios" @@ -195,6 +208,8 @@ def main(): db_path = resolve_db_path(config_path) print(f"database: {db_path}") + cleanup_events(db_path) + materials = query_active_materials(db_path) if not materials: print("No active materials found in database.", file=sys.stderr) diff --git a/tests/mock_server/mock_server.py b/tests/mock_server/mock_server.py index e0286d2..44ec15a 100644 --- a/tests/mock_server/mock_server.py +++ b/tests/mock_server/mock_server.py @@ -73,6 +73,7 @@ _device_label_by_material: dict = {} # material_id -> "TECNO KM4" etc. _in_flight: set = set() # material_ids with a delivered-but-not-yet-resulted task _bootstrap_done = False _bootstrap_ft_count = 3 +_bootstrap_banks: list | None = None # None = all banks def ok(data=None): @@ -164,6 +165,8 @@ def bootstrap_tasks(): queued = 0 for bp in _bank_profiles: bank = bp.get("bank_name") + if _bootstrap_banks and bank not in _bootstrap_banks: + continue for mat in bp.get("materials", []): mid = mat.get("id") if not mid: @@ -946,11 +949,16 @@ if __name__ == "__main__": parser.add_argument("--port", type=int, default=8888) parser.add_argument("--ft-per-material", type=int, default=3, help="How many random FETCH_TRANSACTIONS to bootstrap per material") + parser.add_argument("--banks", nargs="+", default=None, + help="Only bootstrap tasks for these banks (e.g. --banks ozon dushanbe_city_bank)") parser.add_argument("--seed", type=int, default=None, help="RNG seed for reproducible bootstrap picks") args = parser.parse_args() _bootstrap_ft_count = args.ft_per_material + _bootstrap_banks = args.banks + if _bootstrap_banks: + print(f"[mock] bootstrap limited to banks: {_bootstrap_banks}") if args.seed is not None: random.seed(args.seed) diff --git a/tests/mock_server/run.sh b/tests/mock_server/run.sh index ee62597..9b6e012 100755 --- a/tests/mock_server/run.sh +++ b/tests/mock_server/run.sh @@ -2,4 +2,18 @@ # Start the mock ARC backend. Requires `flask` in the active Python env. set -euo pipefail cd "$(dirname "$0")" + +# Find config.ini (project root is two levels up) +PROJECT_ROOT="$(cd ../.. && pwd)" +CONFIG="" +for c in "$PROJECT_ROOT/config.ini" "$PROJECT_ROOT/build/config.ini" "$PROJECT_ROOT/build/Release/config.ini"; do + if [ -f "$c" ]; then CONFIG="$c"; break; fi +done + +if [ -n "$CONFIG" ]; then + echo "[run.sh] generating mock data + cleaning events..." + python3 gen_mock_data.py --config "$CONFIG" + echo "" +fi + exec python3 mock_server.py --host 127.0.0.1 --port 8888 "$@" diff --git a/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_01_embedded_minus_1.json b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_01_embedded_minus_1.json new file mode 100644 index 0000000..0566385 --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_01_embedded_minus_1.json @@ -0,0 +1,10 @@ +{ + "bank_name": "dushanbe_city_bank", + "material_id": "61d967d1-8d3e-4d05-ba01-8c8ab327b945", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": -100, + "created_at": "2026-04-10T09:39:15Z" + }, + "_tag": "pixel7_dushanbe_01_embedded_minus_1" +} diff --git a/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_02_minus_1_2131.json b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_02_minus_1_2131.json new file mode 100644 index 0000000..26e54d0 --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_02_minus_1_2131.json @@ -0,0 +1,10 @@ +{ + "bank_name": "dushanbe_city_bank", + "material_id": "61d967d1-8d3e-4d05-ba01-8c8ab327b945", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": -100, + "created_at": "2026-04-05T14:31:21Z" + }, + "_tag": "pixel7_dushanbe_02_minus_1_2131" +} diff --git a/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_03_minus_1_2125.json b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_03_minus_1_2125.json new file mode 100644 index 0000000..f74ba7e --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_03_minus_1_2125.json @@ -0,0 +1,10 @@ +{ + "bank_name": "dushanbe_city_bank", + "material_id": "61d967d1-8d3e-4d05-ba01-8c8ab327b945", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": -100, + "created_at": "2026-04-05T14:25:48Z" + }, + "_tag": "pixel7_dushanbe_03_minus_1_2125" +} diff --git a/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_04_minus_1_1836.json b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_04_minus_1_1836.json new file mode 100644 index 0000000..112d97b --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_04_minus_1_1836.json @@ -0,0 +1,10 @@ +{ + "bank_name": "dushanbe_city_bank", + "material_id": "61d967d1-8d3e-4d05-ba01-8c8ab327b945", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": -100, + "created_at": "2026-04-05T11:36:06Z" + }, + "_tag": "pixel7_dushanbe_04_minus_1_1836" +} diff --git a/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_05_minus_1_1819.json b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_05_minus_1_1819.json new file mode 100644 index 0000000..7ec7da9 --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_05_minus_1_1819.json @@ -0,0 +1,10 @@ +{ + "bank_name": "dushanbe_city_bank", + "material_id": "61d967d1-8d3e-4d05-ba01-8c8ab327b945", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": -100, + "created_at": "2026-04-05T11:19:43Z" + }, + "_tag": "pixel7_dushanbe_05_minus_1_1819" +} diff --git a/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_06_plus_1_2052.json b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_06_plus_1_2052.json new file mode 100644 index 0000000..62a1bdf --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_dushanbe_ft_06_plus_1_2052.json @@ -0,0 +1,10 @@ +{ + "bank_name": "dushanbe_city_bank", + "material_id": "61d967d1-8d3e-4d05-ba01-8c8ab327b945", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": 100, + "created_at": "2026-04-03T13:52:06Z" + }, + "_tag": "pixel7_dushanbe_06_plus_1_2052" +} diff --git a/tests/mock_server/scenarios/pool/pixel7_ozon_ft_01_evgeny_plus_100.json b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_01_evgeny_plus_100.json new file mode 100644 index 0000000..8391848 --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_01_evgeny_plus_100.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "30bc106c-6935-4f4b-85f3-f1a06adc5c13", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": 10000, + "created_at": "2026-04-11T10:39:00Z" + }, + "_tag": "pixel7_ozon_01_evgeny_plus_100" +} diff --git a/tests/mock_server/scenarios/pool/pixel7_ozon_ft_02_vlad_minus_100.json b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_02_vlad_minus_100.json new file mode 100644 index 0000000..40612bb --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_02_vlad_minus_100.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "30bc106c-6935-4f4b-85f3-f1a06adc5c13", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": -10000, + "created_at": "2026-04-10T09:40:00Z" + }, + "_tag": "pixel7_ozon_02_vlad_minus_100" +} diff --git a/tests/mock_server/scenarios/pool/pixel7_ozon_ft_03_vlad_minus_300.json b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_03_vlad_minus_300.json new file mode 100644 index 0000000..f753eef --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_03_vlad_minus_300.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "30bc106c-6935-4f4b-85f3-f1a06adc5c13", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": -30000, + "created_at": "2026-04-08T08:34:00Z" + }, + "_tag": "pixel7_ozon_03_vlad_minus_300" +} diff --git a/tests/mock_server/scenarios/pool/pixel7_ozon_ft_04_vlad_plus_100.json b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_04_vlad_plus_100.json new file mode 100644 index 0000000..6619834 --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_04_vlad_plus_100.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "30bc106c-6935-4f4b-85f3-f1a06adc5c13", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": 10000, + "created_at": "2026-04-08T08:14:00Z" + }, + "_tag": "pixel7_ozon_04_vlad_plus_100" +} diff --git a/tests/mock_server/scenarios/pool/pixel7_ozon_ft_05_vlad_plus_100_b.json b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_05_vlad_plus_100_b.json new file mode 100644 index 0000000..cb38b8b --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_05_vlad_plus_100_b.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "30bc106c-6935-4f4b-85f3-f1a06adc5c13", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": 10000, + "created_at": "2026-04-08T08:02:00Z" + }, + "_tag": "pixel7_ozon_05_vlad_plus_100_b" +} diff --git a/tests/mock_server/scenarios/pool/pixel7_ozon_ft_06_evgeny_plus_100_b.json b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_06_evgeny_plus_100_b.json new file mode 100644 index 0000000..ca93087 --- /dev/null +++ b/tests/mock_server/scenarios/pool/pixel7_ozon_ft_06_evgeny_plus_100_b.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "30bc106c-6935-4f4b-85f3-f1a06adc5c13", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": 10000, + "created_at": "2026-04-06T13:54:00Z" + }, + "_tag": "pixel7_ozon_06_evgeny_plus_100_b" +} diff --git a/tests/mock_server/scenarios/pool/tecno_ozon_ft_01_galina_plus_100.json b/tests/mock_server/scenarios/pool/tecno_ozon_ft_01_galina_plus_100.json new file mode 100644 index 0000000..26988ec --- /dev/null +++ b/tests/mock_server/scenarios/pool/tecno_ozon_ft_01_galina_plus_100.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "49001bb5-3b24-478d-b913-c2242aea0732", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": 10000, + "created_at": "2026-04-10T09:40:00Z" + }, + "_tag": "tecno_ozon_01_galina_plus_100" +} diff --git a/tests/mock_server/scenarios/pool/tecno_ozon_ft_02_galina_plus_300.json b/tests/mock_server/scenarios/pool/tecno_ozon_ft_02_galina_plus_300.json new file mode 100644 index 0000000..31c0474 --- /dev/null +++ b/tests/mock_server/scenarios/pool/tecno_ozon_ft_02_galina_plus_300.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "49001bb5-3b24-478d-b913-c2242aea0732", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": 30000, + "created_at": "2026-04-08T08:34:00Z" + }, + "_tag": "tecno_ozon_02_galina_plus_300" +} diff --git a/tests/mock_server/scenarios/pool/tecno_ozon_ft_03_vlad_minus_100_a.json b/tests/mock_server/scenarios/pool/tecno_ozon_ft_03_vlad_minus_100_a.json new file mode 100644 index 0000000..71857e0 --- /dev/null +++ b/tests/mock_server/scenarios/pool/tecno_ozon_ft_03_vlad_minus_100_a.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "49001bb5-3b24-478d-b913-c2242aea0732", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": -10000, + "created_at": "2026-04-08T08:32:00Z" + }, + "_tag": "tecno_ozon_03_vlad_minus_100_a" +} diff --git a/tests/mock_server/scenarios/pool/tecno_ozon_ft_04_vlad_minus_100_b.json b/tests/mock_server/scenarios/pool/tecno_ozon_ft_04_vlad_minus_100_b.json new file mode 100644 index 0000000..f9fb7cb --- /dev/null +++ b/tests/mock_server/scenarios/pool/tecno_ozon_ft_04_vlad_minus_100_b.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "49001bb5-3b24-478d-b913-c2242aea0732", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": -10000, + "created_at": "2026-04-08T08:23:00Z" + }, + "_tag": "tecno_ozon_04_vlad_minus_100_b" +} diff --git a/tests/mock_server/scenarios/pool/tecno_ozon_ft_05_galina_minus_100_a.json b/tests/mock_server/scenarios/pool/tecno_ozon_ft_05_galina_minus_100_a.json new file mode 100644 index 0000000..5455a40 --- /dev/null +++ b/tests/mock_server/scenarios/pool/tecno_ozon_ft_05_galina_minus_100_a.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "49001bb5-3b24-478d-b913-c2242aea0732", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": -10000, + "created_at": "2026-04-08T08:14:00Z" + }, + "_tag": "tecno_ozon_05_galina_minus_100_a" +} diff --git a/tests/mock_server/scenarios/pool/tecno_ozon_ft_06_galina_minus_100_b.json b/tests/mock_server/scenarios/pool/tecno_ozon_ft_06_galina_minus_100_b.json new file mode 100644 index 0000000..37b938b --- /dev/null +++ b/tests/mock_server/scenarios/pool/tecno_ozon_ft_06_galina_minus_100_b.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "49001bb5-3b24-478d-b913-c2242aea0732", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": -10000, + "created_at": "2026-04-08T08:02:00Z" + }, + "_tag": "tecno_ozon_06_galina_minus_100_b" +} diff --git a/tests/mock_server/scenarios/pool/tecno_ozon_ft_07_vlad_plus_550.json b/tests/mock_server/scenarios/pool/tecno_ozon_ft_07_vlad_plus_550.json new file mode 100644 index 0000000..4d08d38 --- /dev/null +++ b/tests/mock_server/scenarios/pool/tecno_ozon_ft_07_vlad_plus_550.json @@ -0,0 +1,10 @@ +{ + "bank_name": "ozon", + "material_id": "49001bb5-3b24-478d-b913-c2242aea0732", + "type": "FETCH_TRANSACTIONS", + "body": { + "amount": 55000, + "created_at": "2026-03-20T14:36:00Z" + }, + "_tag": "tecno_ozon_07_vlad_plus_550" +}