mirror of
https://github.com/kuhyx/diet-guard.git
synced 2026-11-11 12:47:39 +01:00
The phone now walks the panel on its own -- login, active order, delivery, menu -- parses the dishes and banks them, so the feature works with the PC switched off. Read-only: nothing here logs a meal. `package:http` has no cookie jar, so the `SESSION` cookie is read off the login response and replayed by hand. `Response.headers` folds duplicate `set-cookie` values into one comma-joined string, so the parser splits on both `,` and `;` and looks for the named cookie rather than assuming the header holds only it -- tested against both orderings and against a panel that sets no session cookie at all. Android-only, as decided: the panel sends no CORS headers, so a browser cannot call it. `refreshDelivery` checks `kIsWeb` first and returns the unsupported reason without touching the network. No `dart:io` anywhere -- `package:http` compiles for web, it is the panel that refuses, not the toolchain, so this needs no `_io`/`_web` seam. The idempotency guard is ported with its teeth: `addManualEntry` restamps `editedAt` unconditionally, so re-banking an unchanged dish republishes the whole curated bank to every peer. `bankDishes` compares the nutritional fields first and returns a write *count*, which is what the tests assert on -- "the entry exists" passes while this misbehaves. The comparison is numeric, not string, so `270 == 270.0` is a match exactly as in Python's `_matches`. Every failure becomes a reason string, never a throw, so a catering outage cannot break the caller: a rejected login, a delivery whose dishes all fail the unit check, and missing credentials each have a test. One test bug worth noting: the assertion that nothing is logged was missing an `await` and so was comparing a Future against `isEmpty` -- the single most important guarantee in this file was passing vacuously until the split forced it to run. Test files split three ways for the 250-line cap; block counts checked against the pre-split file (16 either side), not just a green suite. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QQpCiPaSbyRpwsLkH3dgsX |
||
|---|---|---|
| .. | ||
| app_settings_service_sync_test.dart | ||
| app_settings_service_test.dart | ||
| average_service_periods_test.dart | ||
| average_service_test.dart | ||
| background_sync_service_test.dart | ||
| budget_history_service_test.dart | ||
| budget_schedule_test.dart | ||
| day_status_service_streaks_test.dart | ||
| day_status_service_test.dart | ||
| due_slot_check_test.dart | ||
| foodbank_service_manual_test.dart | ||
| foodbank_service_test.dart | ||
| fuzzy_test.dart | ||
| indexeddb_stores_test.dart | ||
| kuchnia_bank_guard_test.dart | ||
| kuchnia_credential_service_test.dart | ||
| kuchnia_import_test.dart | ||
| kuchnia_orders_test.dart | ||
| log_storage_service_edit_test.dart | ||
| log_storage_service_test.dart | ||
| meal_schedule_history_test.dart | ||
| meal_schedule_service_test.dart | ||
| notification_service_test.dart | ||
| sync_device_id_test.dart | ||
| sync_health_test.dart | ||
| sync_merge_banks_test.dart | ||
| sync_merge_budget_test.dart | ||
| sync_merge_curated_test.dart | ||
| sync_merge_schedule_test.dart | ||
| sync_merge_test.dart | ||
| sync_merge_wire_test.dart | ||
| sync_service_budget_test.dart | ||
| sync_service_test_support.dart | ||
| sync_service_test.dart | ||
| sync_settings_test.dart | ||
| sync_state_factory_test.dart | ||