fix: better cart response (#57)
Release package / release (push) Successful in 24m23s

Co-authored-by: TakahashiNg <83152264+TakahashiNguyen@users.noreply.github.com>
Reviewed-on: #57
This commit was merged in pull request #57.
This commit is contained in:
2026-05-13 09:24:19 +00:00
parent 8b2d3e7bef
commit 5d0a047602
2 changed files with 20 additions and 31 deletions
@@ -150,11 +150,11 @@ public class CartService {
}
@Mutation("addItem")
public Uni<Cart> addItem(
public Cart addItem(
@Name("cartId") UUID cartId,
@Name("menuItemId") UUID menuItemId,
@Name("quantity") long quantity
) {
) throws GraphQLException {
String key = "cart:" + cartId;
String priceKey = "cart_prices:" + cartId;
@@ -163,35 +163,27 @@ public class CartService {
UUID eateryId = UUID.fromString(eateryIdStr);
return eateryController
Response response = eateryController
.checkMenuItemExists(eateryId, menuItemId)
.onItem()
.transform(response -> {
if (response.getStatus() != Response.Status.OK.getStatusCode()) {
throw new RuntimeException("NotFoundMenuItemInEatery");
}
.await()
.indefinitely();
Double menuItemPrice = response.readEntity(Double.class);
if (response.getStatus() != Response.Status.OK.getStatusCode()) {
throw new GraphQLException("NotFoundMenuItemInEatery");
}
hashCommands.hincrby(key, menuItemId.toString(), quantity);
Double menuItemPrice = response.readEntity(Double.class);
hashCommands.hset(
priceKey,
menuItemId.toString(),
String.valueOf(menuItemPrice)
);
hashCommands.hincrby(key, menuItemId.toString(), quantity);
hashCommands.hset(
priceKey,
menuItemId.toString(),
String.valueOf(menuItemPrice)
);
hashCommands.getDataSource().key().expire(key, Duration.ofDays(30));
hashCommands
.getDataSource()
.key()
.expire(priceKey, Duration.ofDays(30));
hashCommands.getDataSource().key().expire(key, Duration.ofDays(30));
hashCommands.getDataSource().key().expire(priceKey, Duration.ofDays(30));
try {
return getCart(cartId);
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
});
return getCart(cartId);
}
}
@@ -124,7 +124,7 @@ public class CartServiceTest {
}
@Test
void testAddItem_Success() {
void testAddItem_Success() throws GraphQLException {
UUID cartId = UUID.randomUUID();
UUID eateryId = UUID.randomUUID();
UUID menuItemId = UUID.randomUUID();
@@ -137,10 +137,7 @@ public class CartServiceTest {
Uni.createFrom().item(Response.ok(17.0).build())
);
Cart result = cartService
.addItem(cartId, menuItemId, 2L)
.await()
.atMost(Duration.ofSeconds(5));
Cart result = cartService.addItem(cartId, menuItemId, 2L);
assertNotNull(result);
assertEquals(cartId, result.getId());