InstanceSettings::query()->create(['id' => 0])); $this->owner = User::factory()->create(); $this->personalTeam = $this->owner->teams()->first(); $this->owner->teams()->updateExistingPivot($this->personalTeam->id, ['role' => 'owner']); $this->teamToDelete = Team::create(['name' => 'Deletable Team', 'personal_team' => false]); $this->teamToDelete->members()->attach($this->owner->id, ['role' => 'owner']); $this->member = User::factory()->create(); $this->teamToDelete->members()->attach($this->member->id, ['role' => 'member']); }); test('owner can delete team via navbar', function () { $this->actingAs($this->owner); session(['currentTeam' => $this->teamToDelete]); Livewire::test(NavbarDeleteTeam::class) ->call('delete', 'password') ->assertRedirect(route('team.index')); expect(Team::find($this->teamToDelete->id))->toBeNull(); }); test('member cannot delete team via navbar', function () { $this->actingAs($this->member); session(['currentTeam' => $this->teamToDelete]); Livewire::test(NavbarDeleteTeam::class) ->call('delete', 'password') ->assertDispatched('error'); expect(Team::find($this->teamToDelete->id))->not->toBeNull(); }); test('navbar delete team trigger matches sidebar menu item layout', function () { $this->actingAs($this->owner); session(['currentTeam' => $this->teamToDelete]); Livewire::test(NavbarDeleteTeam::class) ->assertSuccessful() ->assertSee('title="Delete Team"', false) ->assertSee('menu-item justify-start text-left', false) ->assertSee('sidebar-collapsed-label', false) ->assertSee('menu-item-icon', false) ->assertDontSeeHtml('buttonTitle="Delete Team"'); });