diff --git a/specs/048-backup-restore-ui-graph-safety/quickstart.md b/specs/048-backup-restore-ui-graph-safety/quickstart.md index 32a9359..9101ff9 100644 --- a/specs/048-backup-restore-ui-graph-safety/quickstart.md +++ b/specs/048-backup-restore-ui-graph-safety/quickstart.md @@ -18,7 +18,6 @@ ## Local setup (Sail) - `./vendor/bin/sail artisan migrate` ## Run the targeted tests (once implemented) - - `./vendor/bin/sail artisan test tests/Feature/Filament/BackupSetGraphSafetyTest.php` - `./vendor/bin/sail artisan test tests/Feature/Filament/RestoreWizardGraphSafetyTest.php` @@ -26,6 +25,10 @@ ## Run the targeted tests (once implemented) - `./vendor/bin/sail artisan test tests/Feature/Filament/BackupSetGraphSafetyTest.php tests/Feature/Filament/RestoreWizardGraphSafetyTest.php` +Or run via glob: + +- `./vendor/bin/sail artisan test tests/Feature/Filament/*GraphSafety*Test.php` + ## Formatting - `./vendor/bin/pint --dirty` diff --git a/specs/048-backup-restore-ui-graph-safety/tasks.md b/specs/048-backup-restore-ui-graph-safety/tasks.md index 86391fe..7d2a5a8 100644 --- a/specs/048-backup-restore-ui-graph-safety/tasks.md +++ b/specs/048-backup-restore-ui-graph-safety/tasks.md @@ -18,7 +18,6 @@ ## Format: `- [ ] T### [P?] [US#?] Description with file path` ## Phase 1: Setup (Shared Infrastructure) **Purpose**: Confirm scope, lock stable UI markers as concrete strings, and ensure the contracts/quickstart reflect the intended test approach. - - [x] T001 Confirm tenant-scoped admin URLs for target pages in specs/048-backup-restore-ui-graph-safety/contracts/admin-pages.openapi.yaml - [x] T002 Lock stable marker strings and record them in specs/048-backup-restore-ui-graph-safety/quickstart.md: - Backup Sets index marker: `Created by` @@ -31,12 +30,9 @@ ## Phase 2: Foundational (Blocking Prerequisites) **Purpose**: Shared test helpers and a clear boundary that fails-hard when Graph is touched. **⚠️ CRITICAL**: No user story work should be considered “done” unless the fail-hard Graph binding is used in the story’s feature tests. - - [x] T003 [P] Create a fail-hard Graph client test double in tests/Support/FailHardGraphClient.php (implements App\\Services\\Graph\\GraphClientInterface and throws on any method) - [x] T004 Add a reusable binding helper for tests (either a helper function in tests/Pest.php or a trait in tests/Support/) that binds GraphClientInterface to FailHardGraphClient - - **Checkpoint**: Foundation ready — both page-render tests can now be implemented. --- @@ -48,7 +44,6 @@ ## Phase 3: User Story 1 — Backup Sets index renders Graph-free (Priority: P1) **Independent Test**: A Pest feature test does an HTTP GET to the tenant-scoped Filament Backup Sets index route and asserts assertOk() + assertSee('Created by') — with Graph bound to fail-hard. ### Tests - - [x] T005 [P] [US1] Add Pest feature test in tests/Feature/Filament/BackupSetGraphSafetyTest.php: - bind GraphClientInterface to FailHardGraphClient (fail-hard on ANY invocation) - HTTP GET App\\Filament\\Resources\\BackupSetResource::getUrl('index', tenant: $tenant) @@ -70,7 +65,6 @@ ## Phase 4: User Story 2 — Restore wizard renders Graph-free + DB-only group m **Independent Test**: Pest feature tests that (a) render the Restore wizard create page without Graph, and (b) render the group mapping section (using query params to preselect a backup set with group assignments) and verify fallback labels use `…`. ### Tests - - [x] T008 [P] [US2] Add Pest feature test in tests/Feature/Filament/RestoreWizardGraphSafetyTest.php: - bind GraphClientInterface to FailHardGraphClient (fail-hard on ANY invocation) - HTTP GET App\\Filament\\Resources\\RestoreRunResource::getUrl('create', tenant: $tenant) @@ -85,7 +79,6 @@ ### Tests - assertSee('Use SKIP to omit the assignment.') helper text appears ### Implementation - - [x] T011 [US2] Remove Graph-dependent typeahead/search from group mapping controls in app/Filament/Resources/RestoreRunResource.php (no Graph/typeahead; remove getSearchResultsUsing paths) - [x] T012 [US2] Remove Graph-dependent option label resolution in app/Filament/Resources/RestoreRunResource.php (no Graph label resolution; remove getOptionLabelUsing paths) - [x] T013 [US2] Implement DB-only group mapping UX in app/Filament/Resources/RestoreRunResource.php: @@ -104,7 +97,6 @@ ### Implementation ## Phase 5: Polish & Cross-Cutting Concerns **Purpose**: Keep docs and tooling aligned with the guardrail. - - [x] T017 [P] Update specs/048-backup-restore-ui-graph-safety/quickstart.md with the final test file names and the exact `artisan test --filter=...` / file commands - [x] T018 [P] Update specs/048-backup-restore-ui-graph-safety/contracts/admin-pages.openapi.yaml if any page paths/markers changed during implementation - [x] T019 Run formatting (./vendor/bin/pint --dirty) and targeted tests (./vendor/bin/sail artisan test --filter=graph\-safety or the exact files)