setUpHasPlanner(); } public function test_user_can_update_dish(): void { $planner = $this->planner; $nameOriginal = 'Pizza'; $nameUpdated = 'Lasagne'; $dish = Dish::factory() ->planner($planner) ->create([ 'name' => $nameOriginal, ]); $this ->actingAs($planner) ->put(route('api.dishes.update', $dish->id), [ 'name' => $nameUpdated, ]) ->assertStatus(200) ->assertJson(fn (AssertableJson $json) => $json ->where('success', true) ->has('payload', fn ($json) => $json ->has('dish', fn ($json) => $json ->where('id', $dish->id) ->where('planner_id', $planner->id) ->where('name', $nameUpdated) ->has('users') ) ) ->where('errors', null) ); $dish->refresh(); $this->assertEquals($nameUpdated, $dish->name); } public function test_user_cannot_update_other_users_dish(): void { $planner = $this->planner; $otherPlanner = Planner::factory()->create(); $nameOriginal = 'Pizza'; $nameUpdated = 'Lasagne'; $dish = Dish::factory() ->planner($otherPlanner) ->create([ 'name' => $nameOriginal, ]); $this ->actingAs($planner) ->put(route('api.dishes.update', $dish->id), [ 'name' => $nameUpdated, ]) ->assertStatus(404) ->assertJson(fn (AssertableJson $json) => $json ->where('success', false) ->where('payload', null) ->where('errors', ['MODEL_NOT_FOUND']) ); $dish->refresh(); $this->assertEquals($nameOriginal, $dish->name); } }