withoutMiddleware(PreventRequestForgery::class); Role::create(['name' => 'admin', 'guard_name' => 'web']); } public function test_admin_can_create_edit_and_delete_setting(): void { $admin = User::factory()->create(); $admin->assignRole('admin'); $this->actingAs($admin)->post('/admin/settings', [ 'label' => 'Marketplace name', 'key' => 'marketplace.name', 'value' => 'BeatBook', 'type' => 'text', 'group' => 'general', 'description' => 'Displayed marketplace name.', ])->assertRedirect('/admin/settings'); $setting = AppSetting::firstOrFail(); $this->assertSame('BeatBook', $setting->value); $this->actingAs($admin)->put('/admin/settings/'.$setting->id, [ 'label' => 'Marketplace name', 'key' => 'marketplace.name', 'value' => 'BeatBook UK', 'type' => 'text', 'group' => 'general', 'description' => 'Displayed marketplace name.', ])->assertRedirect('/admin/settings'); $this->assertDatabaseHas('app_settings', ['id' => $setting->id, 'value' => 'BeatBook UK']); $this->actingAs($admin)->delete('/admin/settings/'.$setting->id)->assertRedirect('/admin/settings'); $this->assertDatabaseMissing('app_settings', ['id' => $setting->id]); } public function test_admin_can_create_client(): void { $admin = User::factory()->create(); $admin->assignRole('admin'); $this->actingAs($admin)->post('/admin/clients', [ 'name' => 'New Client', 'email' => 'new-client@example.test', 'phone' => '01234567890', 'password' => 'password12345', 'marketing_opt_in' => '0', ])->assertRedirect('/admin/clients'); $client = User::where('email', 'new-client@example.test')->firstOrFail(); $this->assertTrue($client->hasRole('client')); } }