|
32 | 32 |
|
33 | 33 | import static jakarta.nosql.column.ColumnDeleteQuery.delete; |
34 | 34 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 35 | +import static org.junit.jupiter.api.Assertions.assertNotNull; |
35 | 36 | import static org.junit.jupiter.api.Assertions.assertThrows; |
36 | 37 | import static org.junit.jupiter.api.Assumptions.assumeTrue; |
37 | 38 |
|
@@ -158,6 +159,63 @@ public void shouldReturnErrorWhenInsertIterableTTL(ColumnArgument argument) thro |
158 | 159 | null)); |
159 | 160 | } |
160 | 161 |
|
| 162 | + |
| 163 | + @ParameterizedTest |
| 164 | + @ColumnSource("column_insert.properties") |
| 165 | + public void shouldUpdate(ColumnArgument argument) { |
| 166 | + assumeTrue(argument.isEmpty()); |
| 167 | + ColumnFamilyManager manager = getManager(); |
| 168 | + Optional<ColumnEntity> entityOptional = argument.getQuery().stream().flatMap(manager::query) |
| 169 | + .findFirst(); |
| 170 | + Assertions.assertTrue(entityOptional.isPresent()); |
| 171 | + final ColumnEntity entity = entityOptional |
| 172 | + .orElseThrow(() -> new ColumnDriverException("Should return an entity when the entity is saved")); |
| 173 | + assertNotNull(manager.update(entity)); |
| 174 | + final Column id = entity.find(argument.getIdName()) |
| 175 | + .orElseThrow(() -> new ColumnDriverException("Should return the id in the entity")); |
| 176 | + ColumnDeleteQuery deleteQuery = delete().from(entity.getName()).where(id.getName()).eq(id.get()).build(); |
| 177 | + manager.delete(deleteQuery); |
| 178 | + } |
| 179 | + |
| 180 | + @ParameterizedTest |
| 181 | + @ColumnSource("column_insert.properties") |
| 182 | + public void shouldReturnErrorWhenUpdateIsNull(ColumnArgument argument) { |
| 183 | + assumeTrue(argument.isEmpty()); |
| 184 | + ColumnFamilyManager manager = getManager(); |
| 185 | + assertThrows(NullPointerException.class, () -> manager.update((ColumnEntity) null)); |
| 186 | + } |
| 187 | + |
| 188 | + @ParameterizedTest |
| 189 | + @ColumnSource("column_insert_iterable.properties") |
| 190 | + public void shouldUpdateIterable(ColumnArgument argument) { |
| 191 | + assumeTrue(argument.isEmpty()); |
| 192 | + ColumnFamilyManager manager = getManager(); |
| 193 | + List<ColumnEntity> entities = argument.getQuery().stream().flatMap(manager::query) |
| 194 | + .collect(Collectors.toList()); |
| 195 | + |
| 196 | + assertNotNull(manager.update(entities)); |
| 197 | + final List<Object> ids = entities.stream() |
| 198 | + .map(c -> c.find(argument.getIdName())) |
| 199 | + .filter(Optional::isPresent) |
| 200 | + .map(Optional::get) |
| 201 | + .map(Column::get) |
| 202 | + .collect(Collectors.toList()); |
| 203 | + |
| 204 | + assertEquals(argument.getQuery().size(), ids.size()); |
| 205 | + |
| 206 | + ColumnDeleteQuery deleteQuery = delete().from(entities.get(0).getName()) |
| 207 | + .where(argument.getIdName()).in(ids).build(); |
| 208 | + manager.delete(deleteQuery); |
| 209 | + } |
| 210 | + |
| 211 | + @ParameterizedTest |
| 212 | + @ColumnSource("column_insert_iterable.properties") |
| 213 | + public void shouldReturnErrorWhenUpdateIterableIsNull(ColumnArgument argument) { |
| 214 | + assumeTrue(argument.isEmpty()); |
| 215 | + ColumnFamilyManager manager = getManager(); |
| 216 | + assertThrows(NullPointerException.class, () -> manager.update((Iterable<ColumnEntity>) null)); |
| 217 | + } |
| 218 | + |
161 | 219 | private ColumnFamilyManager getManager() { |
162 | 220 | final ColumnFamilyManagerSupplier supplier = ServiceLoaderProvider.get(ColumnFamilyManagerSupplier.class); |
163 | 221 | return supplier.get(); |
|
0 commit comments