/** * Update the data. * * PUT|PATCH /api/positions/:id * * @param Request $request * @param Preset $preset * @param Position $position * @return \Illuminate\Http\JsonResponse */ public function update(Request $request, Preset $preset, Position $position) { $validator = new PositionValidator($preset, $request); if (!$validator->passes()) { return $validator->errors(); } $position->fill($request->only('x', 'y')); $position->save(); return $position->fresh()->load('piece'); }
/** @test **/ public function it_returns_an_array_with_an_error_code_given_an_x_and_y_that_is_already_taken() { $preset = Mockery::mock(Preset::class); $preset->shouldReceive('positionAvailable')->once()->andReturn(false); $request = Mockery::mock(Request::class); $request->x = 0; $request->y = 0; $validator = new PositionValidator($preset, $request); $expected = ['code' => 422, 'error' => ['position' => ['The position is already taken']]]; $this->assertFalse($validator->passes()); $this->assertEquals($expected, $validator->errors()); }