planner; $userOne = User::factory()->planner($planner)->create(); $userTwo = User::factory()->planner($planner)->create(); $users = collect([$userOne, $userTwo]); $dish = Dish::factory()->planner($planner)->create(); $dish->users()->attach($users); $schedule = Schedule::factory()->planner($planner)->create(); $scheduledUserDish = ScheduledUserDish::factory() ->schedule($schedule) ->userDish($dish->userDishes->random()) ->create(); $this->assertDatabaseCount(ScheduledUserDish::class, 1); $this ->actingAs($planner) ->delete(route('api.scheduled-user-dishes.destroy', $scheduledUserDish)) ->assertStatus(200) ->assertJson(fn (AssertableJson $json) => $json ->where('success', true) ->where('payload', null) ->where('errors', null) ); $this->assertDatabaseEmpty(ScheduledUserDish::class); } public function test_planner_cannot_delete_a_scheduled_dish_of_another_planner(): void { $planner = $this->planner; $otherPlanner = Planner::factory()->create(); $userOne = User::factory()->planner($otherPlanner)->create(); $userTwo = User::factory()->planner($otherPlanner)->create(); $users = collect([$userOne, $userTwo]); $dish = Dish::factory()->planner($otherPlanner)->create(); $dish->users()->attach($users); $schedule = Schedule::factory()->planner($otherPlanner)->create(); $scheduledUserDish = ScheduledUserDish::factory() ->schedule($schedule) ->userDish($dish->userDishes->random()) ->create(); $this->assertDatabaseCount(ScheduledUserDish::class, 1); $this ->actingAs($planner) ->delete(route('api.scheduled-user-dishes.destroy', $scheduledUserDish)) ->assertStatus(403) ->assertJson(fn (AssertableJson $json) => $json ->where('success', false) ->where('payload', null) ->where('errors', [ "This action is unauthorized." ]) ); $this->assertDatabaseCount(ScheduledUserDish::class, 1); } }