diff --git a/AGENTS.md b/AGENTS.md
deleted file mode 100644
index a5325d82..00000000
--- a/AGENTS.md
+++ /dev/null
@@ -1,198 +0,0 @@
-
-=== foundation rules ===
-
-# Laravel Boost Guidelines
-
-The Laravel Boost guidelines are specifically curated by Laravel maintainers for this application. These guidelines should be followed closely to ensure the best experience when building Laravel applications.
-
-## Foundational Context
-
-This application is a Laravel application and its main Laravel ecosystems package & versions are below. You are an expert with them all. Ensure you abide by these specific packages & versions.
-
-- php - 8.3
-- filament/filament (FILAMENT) - v5
-- laravel/breeze (BREEZE) - v2
-- laravel/fortify (FORTIFY) - v1
-- laravel/framework (LARAVEL) - v13
-- laravel/horizon (HORIZON) - v5
-- laravel/octane (OCTANE) - v2
-- laravel/prompts (PROMPTS) - v0
-- livewire/flux (FLUXUI_FREE) - v2
-- livewire/livewire (LIVEWIRE) - v4
-- laravel/boost (BOOST) - v2
-- laravel/mcp (MCP) - v0
-- laravel/pail (PAIL) - v1
-- laravel/pint (PINT) - v1
-- laravel/sail (SAIL) - v1
-- phpunit/phpunit (PHPUNIT) - v12
-- tailwindcss (TAILWINDCSS) - v4
-
-## Skills Activation
-
-This project has domain-specific skills available in `**/skills/**`. You MUST activate the relevant skill whenever you work in that domain—don't wait until you're stuck.
-
-## Conventions
-
-- You must follow all existing code conventions used in this application. When creating or editing a file, check sibling files for the correct structure, approach, and naming.
-- Use descriptive names for variables and methods. For example, `isRegisteredForDiscounts`, not `discount()`.
-- Check for existing components to reuse before writing a new one.
-
-## Verification Scripts
-
-- Do not create verification scripts or tinker when tests cover that functionality and prove they work. Unit and feature tests are more important.
-
-## Application Structure & Architecture
-
-- Stick to existing directory structure; don't create new base folders without approval.
-- Do not change the application's dependencies without approval.
-
-## Frontend Bundling
-
-- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `npm run build`, `npm run dev`, or `composer run dev`. Ask them.
-
-## Documentation Files
-
-- You must only create documentation files if explicitly requested by the user.
-
-## Replies
-
-- Be concise in your explanations - focus on what's important rather than explaining obvious details.
-
-=== boost rules ===
-
-# Laravel Boost
-
-## Tools
-
-- Laravel Boost is an MCP server with tools designed specifically for this application. Prefer Boost tools over manual alternatives like shell commands or file reads.
-- Use `database-query` to run read-only queries against the database instead of writing raw SQL in tinker.
-- Use `database-schema` to inspect table structure before writing migrations or models.
-- Use `get-absolute-url` to resolve the correct scheme, domain, and port for project URLs. Always use this before sharing a URL with the user.
-- Use `browser-logs` to read browser logs, errors, and exceptions. Only recent logs are useful, ignore old entries.
-
-## Searching Documentation (IMPORTANT)
-
-- Always use `search-docs` before making code changes. Do not skip this step. It returns version-specific docs based on installed packages automatically.
-- Pass a `packages` array to scope results when you know which packages are relevant.
-- Use multiple broad, topic-based queries: `['rate limiting', 'routing rate limiting', 'routing']`. Expect the most relevant results first.
-- Do not add package names to queries because package info is already shared. Use `test resource table`, not `filament 4 test resource table`.
-
-### Search Syntax
-
-1. Use words for auto-stemmed AND logic: `rate limit` matches both "rate" AND "limit".
-2. Use `"quoted phrases"` for exact position matching: `"infinite scroll"` requires adjacent words in order.
-3. Combine words and phrases for mixed queries: `middleware "rate limit"`.
-4. Use multiple queries for OR logic: `queries=["authentication", "middleware"]`.
-
-## Artisan
-
-- Run Artisan commands directly via the command line (e.g., `php artisan route:list`). Use `php artisan list` to discover available commands and `php artisan [command] --help` to check parameters.
-- Inspect routes with `php artisan route:list`. Filter with: `--method=GET`, `--name=users`, `--path=api`, `--except-vendor`, `--only-vendor`.
-- Read configuration values using dot notation: `php artisan config:show app.name`, `php artisan config:show database.default`. Or read config files directly from the `config/` directory.
-
-## Tinker
-
-- Execute PHP in app context for debugging and testing code. Do not create models without user approval, prefer tests with factories instead. Prefer existing Artisan commands over custom tinker code.
-- Always use single quotes to prevent shell expansion: `php artisan tinker --execute 'Your::code();'`
- - Double quotes for PHP strings inside: `php artisan tinker --execute 'User::where("active", true)->count();'`
-
-=== php rules ===
-
-# PHP
-
-- Always use curly braces for control structures, even for single-line bodies.
-- Use PHP 8 constructor property promotion: `public function __construct(public GitHub $github) { }`. Do not leave empty zero-parameter `__construct()` methods unless the constructor is private.
-- Use explicit return type declarations and type hints for all method parameters: `function isAccessible(User $user, ?string $path = null): bool`
-- Use TitleCase for Enum keys: `FavoritePerson`, `BestLake`, `Monthly`.
-- Prefer PHPDoc blocks over inline comments. Only add inline comments for exceptionally complex logic.
-- Use array shape type definitions in PHPDoc blocks.
-
-=== deployments rules ===
-
-# Deployment
-
-- Laravel can be deployed using [Laravel Cloud](https://cloud.laravel.com/), which is the fastest way to deploy and scale production Laravel applications.
-
-=== tests rules ===
-
-# Test Enforcement
-
-- Every change must be programmatically tested. Write a new test or update an existing test, then run the affected tests to make sure they pass.
-- Run the minimum number of tests needed to ensure code quality and speed. Use `php artisan test --compact` with a specific filename or filter.
-
-=== laravel/core rules ===
-
-# Do Things the Laravel Way
-
-- Use `php artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using `php artisan list` and check their parameters with `php artisan [command] --help`.
-- If you're creating a generic PHP class, use `php artisan make:class`.
-- Pass `--no-interaction` to all Artisan commands to ensure they work without user input. You should also pass the correct `--options` to ensure correct behavior.
-
-### Model Creation
-
-- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `php artisan make:model --help` to check the available options.
-
-## APIs & Eloquent Resources
-
-- For APIs, default to using Eloquent API Resources and API versioning unless existing API routes do not, then you should follow existing application convention.
-
-## URL Generation
-
-- When generating links to other pages, prefer named routes and the `route()` function.
-
-## Testing
-
-- When creating models for tests, use the factories for the models. Check if the factory has custom states that can be used before manually setting up the model.
-- Faker: Use methods such as `$this->faker->word()` or `fake()->randomDigit()`. Follow existing conventions whether to use `$this->faker` or `fake()`.
-- When creating tests, make use of `php artisan make:test [options] {name}` to create a feature test, and pass `--unit` to create a unit test. Most tests should be feature tests.
-
-## Vite Error
-
-- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `npm run build` or ask the user to run `npm run dev` or `composer run dev`.
-
-=== octane/core rules ===
-
-# Laravel Octane
-
-This application uses Laravel Octane, a long-running PHP server. The application bootstraps once and handles many requests within the same process.
-
-- Never store request-specific state in singletons or static properties, because it can leak across requests.
-- Use `config('octane.server')` to detect the active driver (`swoole`, `roadrunner`, or `frankenphp`).
-- Prefer scoped bindings (`$this->app->scoped()`) over singletons for per-request services.
-
-When working on Octane-specific features (concurrency, shared tables, memory, driver configuration, testing), invoke `octane-development` for detailed rules.
-
-=== livewire/core rules ===
-
-# Livewire
-
-- Livewire allow to build dynamic, reactive interfaces in PHP without writing JavaScript.
-- You can use Alpine.js for client-side interactions instead of JavaScript frameworks.
-- Keep state server-side so the UI reflects it. Validate and authorize in actions as you would in HTTP requests.
-
-=== pint/core rules ===
-
-# Laravel Pint Code Formatter
-
-- If you have modified any PHP files, you must run `vendor/bin/pint --dirty --format agent` before finalizing changes to ensure your code matches the project's expected style.
-- Do not run `vendor/bin/pint --test --format agent`, simply run `vendor/bin/pint --format agent` to fix any formatting issues.
-
-=== phpunit/core rules ===
-
-# PHPUnit
-
-- This application uses PHPUnit for testing. All tests must be written as PHPUnit classes. Use `php artisan make:test --phpunit {name}` to create a new test.
-- If you see a test using "Pest", convert it to PHPUnit.
-- Every time a test has been updated, run that singular test.
-- When the tests relating to your feature are passing, ask the user if they would like to also run the entire test suite to make sure everything is still passing.
-- Tests should cover all happy paths, failure paths, and edge cases.
-- You must not remove any tests or test files from the tests directory without approval. These are not temporary or helper files; these are core to the application.
-
-## Running Tests
-
-- Run the minimal number of tests, using an appropriate filter, before finalizing.
-- To run all tests: `php artisan test --compact`.
-- To run all tests in a file: `php artisan test --compact tests/Feature/ExampleTest.php`.
-- To filter on a particular test name: `php artisan test --compact --filter=testName` (recommended after making a change to a related file).
-
-
diff --git a/FIX_NOTES.md b/FIX_NOTES.md
deleted file mode 100644
index d31575b3..00000000
--- a/FIX_NOTES.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# WMS Fix Notes
-
-This build patches only the current uploaded code.
-
-## Fixed
-
-- Duplicate two-factor migration made safe.
-- Primary two-factor migration adds columns one at a time for SQLite safety.
-- Module page slot is wrapped in a visible `.wms-content` main container.
-- Sidebar remains traditional: desktop/tablet icon rail, mobile drawer.
-- Sidebar widened for "Warehouse Management System".
-- Laravel cache folders are included so "Please provide a valid cache path" does not recur after unzip.
-
-## After unzip
-
-```bash
-composer install
-npm install
-php artisan optimize:clear
-php artisan test
-npm run build
-```
diff --git a/FIX_NOTES_PLATFORM_CONFIG_MENU.md b/FIX_NOTES_PLATFORM_CONFIG_MENU.md
deleted file mode 100644
index da2a0f0b..00000000
--- a/FIX_NOTES_PLATFORM_CONFIG_MENU.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Platform config and module menu fix
-
-Applied fixes:
-
-- Added `Modules/Platform/config/platform.php`.
-- Hardened `Modules/Platform/Providers/PlatformServiceProvider.php` so config loading is safe.
-- Removed stale generated files from `bootstrap/cache`.
-- Updated `resources/views/layouts/app.blade.php` so it works for both:
- - component pages using ``
- - legacy placeholder module pages using `@extends('layouts.app')` and `@section('content')`
-- Added placeholder module entries to the left navigation:
- - Inventory Management
- - Shipping
- - Carrier Management
- - Transportation
- - Replenishment
- - M3 Integration
- - Document Archive
- - Analytics
- - Reporting
- - Audit
- - Security
- - Configuration
-- Added compatibility CSS for the placeholder module pages that use Bootstrap-style classes.
-- Ensured cache/runtime directories exist.
-
-Run:
-
-```bash
-composer install
-npm install
-php artisan optimize:clear
-php artisan test
-npm run build
-```
diff --git a/Feature/Auth/AuthenticationTest.php b/Feature/Auth/AuthenticationTest.php
deleted file mode 100644
index 49e27d17..00000000
--- a/Feature/Auth/AuthenticationTest.php
+++ /dev/null
@@ -1,81 +0,0 @@
-get(route('login'));
-
- $response->assertOk();
- }
-
- public function test_users_can_authenticate_using_the_login_screen(): void
- {
- $user = User::factory()->create();
-
- $response = $this->csrfPost(route('login.store'), [
- 'email' => $user->email,
- 'password' => 'password',
- ]);
-
- $response
- ->assertSessionHasNoErrors()
- ->assertRedirect(route('dashboard', absolute: false));
-
- $this->assertAuthenticated();
- }
-
- public function test_users_can_not_authenticate_with_invalid_password(): void
- {
- $user = User::factory()->create();
-
- $response = $this->csrfPost(route('login.store'), [
- 'email' => $user->email,
- 'password' => 'wrong-password',
- ]);
-
- $response->assertSessionHasErrorsIn('email');
-
- $this->assertGuest();
- }
-
- public function test_users_with_two_factor_enabled_are_redirected_to_two_factor_challenge(): void
- {
- $this->skipUnlessFortifyHas(Features::twoFactorAuthentication());
-
- Features::twoFactorAuthentication([
- 'confirm' => true,
- 'confirmPassword' => true,
- ]);
-
- $user = User::factory()->withTwoFactor()->create();
-
- $response = $this->csrfPost(route('login.store'), [
- 'email' => $user->email,
- 'password' => 'password',
- ]);
-
- $response->assertRedirect(route('two-factor.login'));
- $this->assertGuest();
- }
-
- public function test_users_can_logout(): void
- {
- $user = User::factory()->create();
-
- $response = $this->actingAs($user)->csrfPost(route('logout'));
-
- $response->assertRedirect(route('home'));
-
- $this->assertGuest();
- }
-}
diff --git a/Feature/Auth/EmailVerificationTest.php b/Feature/Auth/EmailVerificationTest.php
deleted file mode 100644
index c434b63a..00000000
--- a/Feature/Auth/EmailVerificationTest.php
+++ /dev/null
@@ -1,88 +0,0 @@
-skipUnlessFortifyHas(Features::emailVerification());
- }
-
- public function test_email_verification_screen_can_be_rendered(): void
- {
- $user = User::factory()->unverified()->create();
-
- $response = $this->actingAs($user)->get(route('verification.notice'));
-
- $response->assertOk();
- }
-
- public function test_email_can_be_verified(): void
- {
- $user = User::factory()->unverified()->create();
-
- Event::fake();
-
- $verificationUrl = URL::temporarySignedRoute(
- 'verification.verify',
- now()->addMinutes(60),
- ['id' => $user->id, 'hash' => sha1($user->email)],
- );
-
- $response = $this->actingAs($user)->get($verificationUrl);
-
- Event::assertDispatched(Verified::class);
-
- $this->assertTrue($user->fresh()->hasVerifiedEmail());
- $response->assertRedirect(route('dashboard', absolute: false).'?verified=1');
- }
-
- public function test_email_is_not_verified_with_invalid_hash(): void
- {
- $user = User::factory()->unverified()->create();
-
- $verificationUrl = URL::temporarySignedRoute(
- 'verification.verify',
- now()->addMinutes(60),
- ['id' => $user->id, 'hash' => sha1('wrong-email')],
- );
-
- $this->actingAs($user)->get($verificationUrl);
-
- $this->assertFalse($user->fresh()->hasVerifiedEmail());
- }
-
- public function test_already_verified_user_visiting_verification_link_is_redirected_without_firing_event_again(): void
- {
- $user = User::factory()->create([
- 'email_verified_at' => now(),
- ]);
-
- Event::fake();
-
- $verificationUrl = URL::temporarySignedRoute(
- 'verification.verify',
- now()->addMinutes(60),
- ['id' => $user->id, 'hash' => sha1($user->email)],
- );
-
- $this->actingAs($user)->get($verificationUrl)
- ->assertRedirect(route('dashboard', absolute: false).'?verified=1');
-
- $this->assertTrue($user->fresh()->hasVerifiedEmail());
- Event::assertNotDispatched(Verified::class);
- }
-}
diff --git a/Feature/Auth/PasswordConfirmationTest.php b/Feature/Auth/PasswordConfirmationTest.php
deleted file mode 100644
index b86e36c1..00000000
--- a/Feature/Auth/PasswordConfirmationTest.php
+++ /dev/null
@@ -1,21 +0,0 @@
-create();
-
- $response = $this->actingAs($user)->get(route('password.confirm'));
-
- $response->assertOk();
- }
-}
diff --git a/Feature/Auth/PasswordResetTest.php b/Feature/Auth/PasswordResetTest.php
deleted file mode 100644
index 93673ed8..00000000
--- a/Feature/Auth/PasswordResetTest.php
+++ /dev/null
@@ -1,81 +0,0 @@
-skipUnlessFortifyHas(Features::resetPasswords());
- }
-
- public function test_reset_password_link_screen_can_be_rendered(): void
- {
- $response = $this->get(route('password.request'));
-
- $response->assertOk();
- }
-
- public function test_reset_password_link_can_be_requested(): void
- {
- Notification::fake();
-
- $user = User::factory()->create();
-
- $this->csrfPost(route('password.email'), ['email' => $user->email]);
-
- Notification::assertSentTo($user, ResetPassword::class);
- }
-
- public function test_reset_password_screen_can_be_rendered(): void
- {
- Notification::fake();
-
- $user = User::factory()->create();
-
- $this->csrfPost(route('password.email'), ['email' => $user->email]);
-
- Notification::assertSentTo($user, ResetPassword::class, function ($notification) {
- $response = $this->get(route('password.reset', $notification->token));
-
- $response->assertOk();
-
- return true;
- });
- }
-
- public function test_password_can_be_reset_with_valid_token(): void
- {
- Notification::fake();
-
- $user = User::factory()->create();
-
- $this->csrfPost(route('password.email'), ['email' => $user->email]);
-
- Notification::assertSentTo($user, ResetPassword::class, function ($notification) use ($user) {
- $response = $this->csrfPost(route('password.update'), [
- 'token' => $notification->token,
- 'email' => $user->email,
- 'password' => 'password',
- 'password_confirmation' => 'password',
- ]);
-
- $response
- ->assertSessionHasNoErrors()
- ->assertRedirect(route('login', absolute: false));
-
- return true;
- });
- }
-}
diff --git a/Feature/Auth/RegistrationTest.php b/Feature/Auth/RegistrationTest.php
deleted file mode 100644
index 7837d049..00000000
--- a/Feature/Auth/RegistrationTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-skipUnlessFortifyHas(Features::registration());
- }
-
- public function test_registration_screen_can_be_rendered(): void
- {
- $response = $this->get(route('register'));
-
- $response->assertOk();
- }
-
- public function test_new_users_can_register(): void
- {
- $response = $this->csrfPost(route('register.store'), [
- 'name' => 'John Doe',
- 'email' => 'test@example.com',
- 'password' => 'password',
- 'password_confirmation' => 'password',
- ]);
-
- $response->assertSessionHasNoErrors()
- ->assertRedirect(route('dashboard', absolute: false));
-
- $this->assertAuthenticated();
- }
-}
diff --git a/Feature/Auth/TwoFactorChallengeTest.php b/Feature/Auth/TwoFactorChallengeTest.php
deleted file mode 100644
index a8fc8aef..00000000
--- a/Feature/Auth/TwoFactorChallengeTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-skipUnlessFortifyHas(Features::twoFactorAuthentication());
- }
-
- public function test_two_factor_challenge_redirects_to_login_when_not_authenticated(): void
- {
- $response = $this->get(route('two-factor.login'));
-
- $response->assertRedirect(route('login'));
- }
-
- public function test_two_factor_challenge_can_be_rendered(): void
- {
- Features::twoFactorAuthentication([
- 'confirm' => true,
- 'confirmPassword' => true,
- ]);
-
- $user = User::factory()->withTwoFactor()->create();
-
- $this->csrfPost(route('login.store'), [
- 'email' => $user->email,
- 'password' => 'password',
- ])->assertRedirect(route('two-factor.login'));
- }
-}
diff --git a/Feature/DashboardTest.php b/Feature/DashboardTest.php
deleted file mode 100644
index 3c5cd7da..00000000
--- a/Feature/DashboardTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-get(route('dashboard'));
- $response->assertRedirect(route('login'));
- }
-
- public function test_authenticated_users_can_visit_the_dashboard(): void
- {
- $user = User::factory()->create();
- $this->actingAs($user);
-
- $response = $this->get(route('dashboard'));
- $response->assertOk();
- }
-}
diff --git a/Feature/ExampleTest.php b/Feature/ExampleTest.php
deleted file mode 100644
index 70d12f02..00000000
--- a/Feature/ExampleTest.php
+++ /dev/null
@@ -1,18 +0,0 @@
-get(route('home'));
-
- $response->assertOk();
- }
-}
diff --git a/Feature/Settings/ProfileUpdateTest.php b/Feature/Settings/ProfileUpdateTest.php
deleted file mode 100644
index fccf19fd..00000000
--- a/Feature/Settings/ProfileUpdateTest.php
+++ /dev/null
@@ -1,90 +0,0 @@
-actingAs($user = User::factory()->create());
-
- $this->get('/settings/profile')->assertOk();
- }
-
- public function test_profile_information_can_be_updated(): void
- {
- $user = User::factory()->create();
-
- $this->actingAs($user);
-
- $response = Livewire::test(Profile::class)
- ->set('name', 'Test User')
- ->set('email', 'test@example.com')
- ->call('updateProfileInformation');
-
- $response->assertHasNoErrors();
-
- $user->refresh();
-
- $this->assertEquals('Test User', $user->name);
- $this->assertEquals('test@example.com', $user->email);
- $this->assertNull($user->email_verified_at);
- }
-
- public function test_email_verification_status_is_unchanged_when_email_address_is_unchanged(): void
- {
- $user = User::factory()->create();
-
- $this->actingAs($user);
-
- $response = Livewire::test(Profile::class)
- ->set('name', 'Test User')
- ->set('email', $user->email)
- ->call('updateProfileInformation');
-
- $response->assertHasNoErrors();
-
- $this->assertNotNull($user->refresh()->email_verified_at);
- }
-
- public function test_user_can_delete_their_account(): void
- {
- $user = User::factory()->create();
-
- $this->actingAs($user);
-
- $response = Livewire::test('settings.delete-user-form')
- ->set('password', 'password')
- ->call('deleteUser');
-
- $response
- ->assertHasNoErrors()
- ->assertRedirect('/');
-
- $this->assertNull($user->fresh());
- $this->assertFalse(auth()->check());
- }
-
- public function test_correct_password_must_be_provided_to_delete_account(): void
- {
- $user = User::factory()->create();
-
- $this->actingAs($user);
-
- $response = Livewire::test('settings.delete-user-form')
- ->set('password', 'wrong-password')
- ->call('deleteUser');
-
- $response->assertHasErrors(['password']);
-
- $this->assertNotNull($user->fresh());
- }
-}
diff --git a/Feature/Settings/SecurityTest.php b/Feature/Settings/SecurityTest.php
deleted file mode 100644
index 9bbb7ead..00000000
--- a/Feature/Settings/SecurityTest.php
+++ /dev/null
@@ -1,132 +0,0 @@
-skipUnlessFortifyHas(Features::twoFactorAuthentication());
-
- Features::twoFactorAuthentication([
- 'confirm' => true,
- 'confirmPassword' => true,
- ]);
- Features::passkeys([
- 'confirmPassword' => true,
- ]);
- }
-
- public function test_security_settings_page_can_be_rendered(): void
- {
- $user = User::factory()->create();
-
- $response = $this->actingAs($user)
- ->withSession(['auth.password_confirmed_at' => time()])
- ->get(route('security.edit'));
-
- $response->assertOk();
-
- $response->assertSee('Passkeys');
- $response->assertSee('No passkeys yet');
- $response->assertSee('Two-factor authentication');
- $response->assertSee('Enable 2FA');
- }
-
- public function test_security_settings_page_requires_password_confirmation_when_enabled(): void
- {
- $user = User::factory()->create();
-
- $response = $this->actingAs($user)
- ->get(route('security.edit'));
-
- $response->assertRedirect(route('password.confirm'));
- }
-
- public function test_security_settings_page_renders_without_two_factor_when_feature_is_disabled(): void
- {
- config(['fortify.features' => []]);
-
- $user = User::factory()->create();
-
- $this->actingAs($user)
- ->withSession(['auth.password_confirmed_at' => time()])
- ->get(route('security.edit'))
- ->assertOk()
- ->assertSee('Update password')
- ->assertDontSee('Manage your passkeys for passwordless sign-in')
- ->assertDontSee('Add a passkey to sign in without a password')
- ->assertDontSee('Two-factor authentication');
- }
-
- public function test_two_factor_authentication_disabled_when_confirmation_abandoned_between_requests(): void
- {
- $user = User::factory()->create();
-
- $user->forceFill([
- 'two_factor_secret' => encrypt('test-secret'),
- 'two_factor_recovery_codes' => encrypt(json_encode(['code1', 'code2'])),
- 'two_factor_confirmed_at' => null,
- ])->save();
-
- $this->actingAs($user);
-
- $component = Livewire::test(Security::class);
-
- $component->assertSet('twoFactorEnabled', false);
-
- $this->assertDatabaseHas('users', [
- 'id' => $user->id,
- 'two_factor_secret' => null,
- 'two_factor_recovery_codes' => null,
- ]);
- }
-
- public function test_password_can_be_updated(): void
- {
- $user = User::factory()->create([
- 'password' => Hash::make('password'),
- ]);
-
- $this->actingAs($user);
-
- $response = Livewire::test(Security::class)
- ->set('current_password', 'password')
- ->set('password', 'new-password')
- ->set('password_confirmation', 'new-password')
- ->call('updatePassword');
-
- $response->assertHasNoErrors();
-
- $this->assertTrue(Hash::check('new-password', $user->refresh()->password));
- }
-
- public function test_correct_password_must_be_provided_to_update_password(): void
- {
- $user = User::factory()->create([
- 'password' => Hash::make('password'),
- ]);
-
- $this->actingAs($user);
-
- $response = Livewire::test(Security::class)
- ->set('current_password', 'wrong-password')
- ->set('password', 'new-password')
- ->set('password_confirmation', 'new-password')
- ->call('updatePassword');
-
- $response->assertHasErrors(['current_password']);
- }
-}
diff --git a/TestCase.php b/TestCase.php
deleted file mode 100644
index 78677242..00000000
--- a/TestCase.php
+++ /dev/null
@@ -1,44 +0,0 @@
- false,
- 'session.driver' => 'array',
- 'cache.default' => 'array',
- 'mail.default' => 'array',
- ]);
-
- $this->withoutMiddleware(ValidateCsrfToken::class);
- }
-
- /**
- * POST with a real CSRF token for Fortify/web form tests.
- *
- * @param array $data
- */
- protected function csrfPost(string $uri, array $data = []): \Illuminate\Testing\TestResponse
- {
- $token = 'test-csrf-token';
-
- return $this->withSession(['_token' => $token])
- ->post($uri, ['_token' => $token, ...$data]);
- }
-
- protected function skipUnlessFortifyHas(string $feature, ?string $message = null): void
- {
- if (! Features::enabled($feature)) {
- $this->markTestSkipped($message ?? "Fortify feature [{$feature}] is not enabled.");
- }
- }
-}
diff --git a/Unit/ExampleTest.php b/Unit/ExampleTest.php
deleted file mode 100644
index e93a27fa..00000000
--- a/Unit/ExampleTest.php
+++ /dev/null
@@ -1,16 +0,0 @@
-assertTrue(true);
- }
-}
diff --git a/filament/ColumnView.stub b/filament/ColumnView.stub
deleted file mode 100644
index a9e74304..00000000
--- a/filament/ColumnView.stub
+++ /dev/null
@@ -1,3 +0,0 @@
-