user, ['read', 'write']); $this->json('POST', '/api/projects', [ 'name' => 'test', ]) ->assertSuccessful(); $this->assertDatabaseHas('projects', [ 'name' => 'test', ]); } public function test_see_projects_list(): void { Sanctum::actingAs($this->user, ['read', 'write']); $project = Project::factory()->create(); $this->user->projects()->attach($project); $this->json('GET', '/api/projects') ->assertSuccessful() ->assertJsonFragment([ 'name' => $project->name, ]); } public function test_delete_project(): void { Sanctum::actingAs($this->user, ['read', 'write']); $project = Project::factory()->create(); $this->user->projects()->attach($project); Livewire::test(Settings::class, [ 'project' => $project, ]) ->callAction('delete') ->assertSuccessful(); $this->assertDatabaseMissing('projects', [ 'id' => $project->id, ]); } public function test_edit_project(): void { Sanctum::actingAs($this->user, ['read', 'write']); $project = Project::factory()->create(); $this->user->projects()->attach($project); $this->json('PUT', "/api/projects/{$project->id}", [ 'name' => 'new-name', ]) ->assertSuccessful(); $this->assertDatabaseHas('projects', [ 'id' => $project->id, 'name' => 'new-name', ]); } public function test_cannot_delete_last_project(): void { Sanctum::actingAs($this->user, ['read', 'write']); $this->json('DELETE', "/api/projects/{$this->user->currentProject->id}") ->assertJsonValidationErrorFor('project'); $this->assertDatabaseHas('projects', [ 'id' => $this->user->currentProject->id, ]); } }