Add rating delete endpoint

This commit is contained in:
myrmidex 2026-06-05 11:00:09 +00:00
parent eac85a9045
commit a8133b3233
2 changed files with 59 additions and 3 deletions

View file

@ -32,7 +32,7 @@ class RatingController extends AbstractController
],
$repo->findAll()
),
]));
]), 200);
}
#[Route('/api/ratings', methods: ['POST'])]
@ -88,6 +88,27 @@ class RatingController extends AbstractController
$em->flush();
return $this->json(null, 201);
return $this->json(null, 202);
}
#[Route('/api/ratings/{id}', methods: ['DELETE'])]
public function delete(
int $id,
EntityManagerInterface $em,
OutputService $output,
RatingRepository $ratingRepository,
): JsonResponse {
$rating = $ratingRepository->findById($id);
if ($rating === null) {
return $this->json(
$output->error(["UNKNOWN_RATING"])
);
}
$em->remove($rating);
$em->flush();
return $this->json(null, 204);
}
}

View file

@ -106,7 +106,7 @@ class RatingControllerTest extends WebTestCase
);
$this->assertResponseIsSuccessful();
$this->assertResponseStatusCodeSame(201);
$this->assertResponseStatusCodeSame(202);
$em = static::getContainer()->get(EntityManagerInterface::class);
$em->clear();
@ -115,4 +115,39 @@ class RatingControllerTest extends WebTestCase
$this->assertSame(8, $updated->getScore());
$this->assertSame('Other note', $updated->getNote());
}
public function testDelete(): void
{
$client = static::createClient();
$user = UserFactory::createOne();
$client->loginUser($user);
$subject = RestaurantFactory::createOne([
'createdBy' => $user,
]);
$rating = RatingFactory::createOne([
'subject' => $subject,
'score' => 0,
'note' => 'first note',
]);
$id = $rating->getId();
$client->request(
'DELETE',
'/api/ratings/' . $id,
server: ['CONTENT_TYPE' => 'application/json'],
);
$this->assertResponseIsSuccessful();
$this->assertResponseStatusCodeSame(204);
$em = static::getContainer()->get(EntityManagerInterface::class);
$em->clear();
$this->assertNull(
$em->getRepository(Rating::class)->find($id)
);
}
}