Skip to content

Commit 2b21529

Browse files
committed
Fix: replace not keeping order
1 parent 476581c commit 2b21529

5 files changed

Lines changed: 18 additions & 2 deletions

File tree

NotificationsSystemApplication/src/main/java/pl/marcinsobanski/notificationssystem/application/replacetemplate/ReplaceTemplateCommandHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ public Void handle(ReplaceTemplateCommand command) {
2929
.content(command.content())
3030
.receiversEmails(command.receiversEmails())
3131
.rules(command.rules().stream().map(ruleConverter::convertRule).toList())
32-
.creationTime(Instant.now()).build();
32+
.creationTime(templateRepository.getTemplateCreationTime(command.id()))
33+
.build();
3334
templateRepository.updateTemplate(template);
3435

3536
compiledRuleFactory

NotificationsSystemDomain/src/main/java/pl/marcinsobanski/notificationssystem/domain/template/TemplateRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package pl.marcinsobanski.notificationssystem.domain.template;
22

33
import java.math.BigDecimal;
4+
import java.time.Instant;
45
import java.util.List;
56
import java.util.Optional;
67
import java.util.UUID;
78

89
public interface TemplateRepository {
910

11+
Instant getTemplateCreationTime(UUID id);
12+
1013
List<SimpleTemplate> getAllSimpleTemplates();
1114

1215
Optional<Template> getTemplate(UUID id);

NotificationsSystemInfrastructure/src/main/java/pl/marcinsobanski/notificationssystem/infrastructure/adapters/TemplateRepositoryImpl.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import pl.marcinsobanski.notificationssystem.infrastructure.repository.TemplateJpaRepository;
1212

1313
import java.math.BigDecimal;
14+
import java.time.Instant;
1415
import java.util.HashSet;
1516
import java.util.List;
1617
import java.util.Optional;
@@ -26,6 +27,11 @@ public class TemplateRepositoryImpl implements TemplateRepository {
2627
private final TemplateEntityToTemplateConverter templateEntityToTemplateConverter;
2728
private final TemplateToTemplateEntityConverter templateToTemplateEntityConverter;
2829

30+
@Override
31+
public Instant getTemplateCreationTime(UUID id) {
32+
return templateJpaRepository.findTemplateCreationTimeById(id).orElseThrow();
33+
}
34+
2935
@Override
3036
public List<SimpleTemplate> getAllSimpleTemplates() {
3137
return templateJpaRepository.findAllSimpleTemplateByCreationTimeDesc();

NotificationsSystemInfrastructure/src/main/java/pl/marcinsobanski/notificationssystem/infrastructure/repository/TemplateJpaRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import pl.marcinsobanski.notificationssystem.domain.template.SimpleTemplate;
88

99
import java.math.BigDecimal;
10+
import java.time.Instant;
1011
import java.util.List;
1112
import java.util.Optional;
1213
import java.util.Set;
@@ -41,4 +42,7 @@ List<SimpleTemplate> findTemplatesMatchingRule(
4142
ItemType itemType,
4243
BigDecimal price
4344
);
45+
46+
@Query("SELECT t.creationTime FROM TemplateEntity t where t.id = :id")
47+
Optional<Instant> findTemplateCreationTimeById(UUID id);
4448
}

NotificationsSystemInfrastructure/src/test/java/pl/marcinsobanski/notificationssystem/infrastructure/delivery/TemplateApiImplIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ void shouldAddNewTemplate() throws Exception {
219219
@Test
220220
void shouldReplaceTemplate() throws Exception {
221221
// GIVEN
222+
final var creationTime = Instant.parse("2007-12-03T10:15:30.00Z");
222223
final var templateEntity = TemplateEntity.builder()
223224
.title("Title")
224225
.content("Content")
@@ -233,7 +234,7 @@ void shouldReplaceTemplate() throws Exception {
233234
.itemTypeOperand(ItemType.PLATINUM)
234235
.build()
235236
)))
236-
.creationTime(Instant.now())
237+
.creationTime(creationTime)
237238
.build();
238239

239240
final var savedTemplateId = templateJpaRepository.save(templateEntity).getId();
@@ -263,6 +264,7 @@ void shouldReplaceTemplate() throws Exception {
263264
assertEquals("Content2", savedTemplate.getContent());
264265
assertEquals(List.of("a3@a.com"), savedTemplate.getReceiversEmails());
265266
assertEquals(3, savedTemplate.getRules().size());
267+
assertEquals(creationTime, savedTemplate.getCreationTime());
266268

267269
final var rules = ruleJpaRepository.findAll();
268270
assertEquals(3, rules.size());

0 commit comments

Comments
 (0)