From 277db1481f33130e585417c75105a9d6fcdcdfa7 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Wed, 29 Nov 2023 15:54:10 +0000 Subject: [PATCH] fix: update delete by id bugs Signed-off-by: Otavio Santana --- .../java/expert/os/harperdb/Template.java | 4 ++-- .../java/expert/os/harperdb/TemplateTest.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/expert/os/harperdb/Template.java b/core/src/main/java/expert/os/harperdb/Template.java index 7a6ca73..219f211 100644 --- a/core/src/main/java/expert/os/harperdb/Template.java +++ b/core/src/main/java/expert/os/harperdb/Template.java @@ -91,7 +91,7 @@ public boolean deleteAllById(Class type, Iterable ids) { Objects.requireNonNull(ids, "ids is required"); var keys = StreamSupport.stream(ids.spliterator(), false) .collect(Collectors.toSet()); - var delete = new Delete<>(database, table(type), Collections.singleton(keys)); + var delete = new Delete<>(database, table(type), keys); return server.execute(delete); } @@ -100,7 +100,7 @@ public boolean deleteAllById(String table, Iterable ids) { Objects.requireNonNull(ids, "ids is required"); var keys = StreamSupport.stream(ids.spliterator(), false) .collect(Collectors.toSet()); - var delete = new Delete<>(database, table, keys, ALL_ATTRIBUTES); + var delete = new Delete<>(database, table, keys); return server.execute(delete); } diff --git a/core/src/test/java/expert/os/harperdb/TemplateTest.java b/core/src/test/java/expert/os/harperdb/TemplateTest.java index 3c4fd3a..03093c2 100644 --- a/core/src/test/java/expert/os/harperdb/TemplateTest.java +++ b/core/src/test/java/expert/os/harperdb/TemplateTest.java @@ -134,6 +134,26 @@ void shouldUpdateAnimals(List animals){ .map(Animal::id).containsAll(animalsUpdated.stream().map(Animal::id).toList()); } + @ParameterizedTest + @MethodSource("animal") + void shouldDeleteAnimal(Animal animal){ + this.template.upsert(animal); + Assertions.assertThat(this.template.findById(animal.id(), Animal.class)).isNotEmpty(); + this.template.delete(Animal.class, animal.id()); + Assertions.assertThat(this.template.findById(animal.id(), Animal.class)).isEmpty(); + + } + + @ParameterizedTest + @MethodSource("animals") + void shouldDeleteAllAnimals(List animals){ + this.template.upsert(animals); + var ids = animals.stream().map(Animal::id).toList(); + Assertions.assertThat(this.template.findAllById(ids, Animal.class)).isNotEmpty().hasSize(ids.size()); + this.template.deleteAllById(Animal.class, ids); + Assertions.assertThat(this.template.findAllById(ids, Animal.class)).isEmpty(); + } + static Stream animal(){ return Stream.of(Arguments.of(new Animal(FAKER.idNumber().valid(), FAKER.animal().name()))); }