From 58310e877b9a5774d1e71b55223afa51d63fe795 Mon Sep 17 00:00:00 2001 From: TakahashiNg <83152264+TakahashiNguyen@users.noreply.github.com> Date: Wed, 6 May 2026 14:34:52 +0000 Subject: [PATCH] chore: update --- .vscode/settings.json | 13 +++++++++ .../java/com/drinkool/dtos/AddMenuItem.java | 3 +++ .../com/drinkool/services/EateryService.java | 19 +++++++++++++ .../drinkool/services/EateryServiceTest.java | 27 +++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..11c8332 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,13 @@ +{ + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/.DS_Store": true, + "**/Thumbs.db": true, + "**/target": true, + "**/docker": true, + "node_modules": true + }, + "explorerExclude.backup": {} +} \ No newline at end of file diff --git a/eatery-service/src/main/java/com/drinkool/dtos/AddMenuItem.java b/eatery-service/src/main/java/com/drinkool/dtos/AddMenuItem.java index 4048947..fab4aed 100644 --- a/eatery-service/src/main/java/com/drinkool/dtos/AddMenuItem.java +++ b/eatery-service/src/main/java/com/drinkool/dtos/AddMenuItem.java @@ -7,6 +7,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import org.eclipse.microprofile.graphql.Input; +import org.eclipse.microprofile.graphql.NonNull; @Input @Getter @@ -16,7 +17,9 @@ import org.eclipse.microprofile.graphql.Input; @RegisterForReflection public class AddMenuItem implements MenuItemInterface { + @NonNull private String name; + @NonNull private Double price; } diff --git a/eatery-service/src/main/java/com/drinkool/services/EateryService.java b/eatery-service/src/main/java/com/drinkool/services/EateryService.java index 2caf19a..719b0e4 100644 --- a/eatery-service/src/main/java/com/drinkool/services/EateryService.java +++ b/eatery-service/src/main/java/com/drinkool/services/EateryService.java @@ -84,6 +84,25 @@ public class EateryService { return item; } + @Mutation("deleteMenuItem") + @RolesAllowed(Role.Manager) + @Transactional + public boolean deleteMenuItem(@Name("menuItemId") UUID menuItemId) { + UUID ownerId = UUID.fromString(request.getHeader(InternalValue.userId)); + + MenuItemEntity item = MenuItemEntity.find( + "id = ?1 and eatery.ownerId = ?2", + menuItemId, + ownerId + ).firstResult(); + + if (item == null) return false; + + item.delete(); + + return true; + } + @Query("menuItemsByEatery") public List getMenuItemsByEatery( @Name("eateryId") UUID eateryId diff --git a/eatery-service/src/test/java/com/drinkool/services/EateryServiceTest.java b/eatery-service/src/test/java/com/drinkool/services/EateryServiceTest.java index 8fe3cb2..50a6a4d 100644 --- a/eatery-service/src/test/java/com/drinkool/services/EateryServiceTest.java +++ b/eatery-service/src/test/java/com/drinkool/services/EateryServiceTest.java @@ -310,4 +310,31 @@ public class EateryServiceTest { .body("data.updateMenuItem.id", is(savedMenuItemId.toString())) .statusCode(200); } + + @Test + public void testDeleteMenuItem_Success() { + String mutation = """ + mutation deleteItem($input: String!) { + deleteMenuItem(menuItemId: $input) + } + """; + + Map variables = new HashMap<>(); + variables.put("input", savedMenuItemId.toString()); + + Map requestBody = new HashMap<>(); + requestBody.put("query", mutation); + requestBody.put("variables", variables); + + given() + .contentType(ContentType.JSON) + .header(InternalValue.role, Role.Manager) + .header(InternalValue.userId, savedOwnerId) + .body(requestBody) + .when() + .post("/graphql") + .then() + .statusCode(200) + .body("data.deleteMenuItem", is(true)); + } }