planner; $dish = Dish::factory()->planner($planner)->create(); $this->assertDatabaseCount(Dish::class, 1); $this ->actingAs($planner) ->delete(route('api.dishes.destroy', $dish)) ->assertStatus(200) ->assertJson(fn (AssertableJson $json) => $json ->where('success', true) ->where('payload', null) ->where('errors', null) ); $this->assertDatabaseEmpty(Dish::class); } public function test_it_deletes_user_dishes_when_deleting_a_dish(): void { $planner = $this->planner; $dish = Dish::factory()->planner($planner)->create(); $user = User::factory()->planner($planner)->create(); $user->dishes()->attach($dish); $this->assertDatabaseCount(UserDish::class, 1); $this ->actingAs($planner) ->delete(route('api.dishes.destroy', $dish)) ->assertStatus(200) ->assertJson(fn (AssertableJson $json) => $json ->where('success', true) ->where('payload', null) ->where('errors', null) ); $this->assertDatabaseEmpty(UserDish::class); } public function test_planner_cannot_delete_dish_from_other_planner(): void { $planner = $this->planner; $otherPlanner = Planner::factory()->create(); $dish = Dish::factory()->planner($otherPlanner)->create(); $this->assertDatabaseCount(Dish::class, 1); $this ->actingAs($planner) ->delete(route('api.dishes.destroy', $dish)) ->assertStatus(404) ->assertJson(fn (AssertableJson $json) => $json ->where('success', false) ->where('payload', null) ->where('errors', ['MODEL_NOT_FOUND']) ); $this->assertDatabaseCount(Dish::class, 1); } }