Skip to content

Commit a040751

Browse files
authored
Merge pull request #10 from companieshouse/PCI-743-updated-field
Update updated_at field
2 parents cac7a9a + 418ffe7 commit a040751

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

src/main/java/uk/gov/companieshouse/orders/api/repository/BasketRepositoryImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import uk.gov.companieshouse.orders.api.model.Basket;
77
import uk.gov.companieshouse.orders.api.model.BasketData;
88

9+
import java.time.LocalDateTime;
10+
911
import static org.springframework.data.mongodb.core.query.Criteria.where;
1012

1113

@@ -23,6 +25,7 @@ public Basket clearBasketDataById(String id) {
2325

2426
Update update = new Update();
2527
update.set("data", new BasketData());
28+
update.set("updated_at", LocalDateTime.now());
2629

2730
return mongoTemplate.findAndModify(query, update, Basket.class);
2831
}

src/test/java/uk/gov/companieshouse/orders/api/controller/BasketControllerIntegrationTest.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,12 @@
2626
import uk.gov.companieshouse.orders.api.service.CheckoutService;
2727
import uk.gov.companieshouse.orders.api.util.ResultCaptor;
2828

29+
import java.time.LocalDateTime;
2930
import java.util.Arrays;
3031
import java.util.Optional;
3132

33+
import static org.hamcrest.MatcherAssert.assertThat;
34+
import static org.hamcrest.core.Is.is;
3235
import static org.junit.Assert.*;
3336
import static org.mockito.ArgumentMatchers.any;
3437
import static org.mockito.Mockito.doAnswer;
@@ -306,4 +309,49 @@ public void patchBasketPaymentDetailsDoesNotClearBasketStatusNotPaid() throws Ex
306309
final Optional<Basket> retrievedBasket = basketRepository.findById(ERIC_IDENTITY_VALUE);
307310
assertFalse(retrievedBasket.get().getData().getItems().isEmpty());
308311
}
312+
313+
@Test
314+
@DisplayName("Patch basket payment details updates updated_at field")
315+
public void patchBasketPaymentDetailsUpdatesUpdatedAt() throws Exception {
316+
final LocalDateTime intervalStart = LocalDateTime.now();
317+
318+
Basket basket = new Basket();
319+
basket.setId(ERIC_IDENTITY_VALUE);
320+
basket.setCreatedAt(intervalStart);
321+
basket.setUpdatedAt(intervalStart);
322+
BasketItem basketItem = new BasketItem();
323+
basketItem.setItemUri(ITEM_URI);
324+
basket.getData().getItems().add(basketItem);
325+
basketRepository.save(basket);
326+
327+
BasketPaymentRequestDTO basketPaymentRequestDTO = new BasketPaymentRequestDTO();
328+
basketPaymentRequestDTO.setPaidAt("paid-at");
329+
basketPaymentRequestDTO.setPaymentReference("reference");
330+
basketPaymentRequestDTO.setStatus(PaymentStatus.PAID);
331+
332+
mockMvc.perform(patch("/basket/payment/1234")
333+
.header(REQUEST_ID_HEADER_NAME, TOKEN_REQUEST_ID_VALUE)
334+
.header(ERIC_IDENTITY_HEADER_NAME, ERIC_IDENTITY_VALUE)
335+
.contentType(MediaType.APPLICATION_JSON)
336+
.content(mapper.writeValueAsString(basketPaymentRequestDTO)))
337+
.andExpect(status().isOk());
338+
339+
final LocalDateTime intervalEnd = LocalDateTime.now();
340+
341+
final Optional<Basket> retrievedBasket = basketRepository.findById(ERIC_IDENTITY_VALUE);
342+
verifyUpdatedAtTimestampWithinExecutionInterval(retrievedBasket.get(), intervalStart, intervalEnd);
343+
}
344+
345+
private void verifyUpdatedAtTimestampWithinExecutionInterval(final Basket itemUpdated,
346+
final LocalDateTime intervalStart,
347+
final LocalDateTime intervalEnd) {
348+
349+
assertThat(itemUpdated.getUpdatedAt().isAfter(itemUpdated.getCreatedAt()) ||
350+
itemUpdated.getUpdatedAt().isEqual(itemUpdated.getCreatedAt()), is(true));
351+
352+
assertThat(itemUpdated.getUpdatedAt().isAfter(intervalStart) ||
353+
itemUpdated.getUpdatedAt().isEqual(intervalStart), is(true));
354+
assertThat(itemUpdated.getUpdatedAt().isBefore(intervalEnd) ||
355+
itemUpdated.getUpdatedAt().isEqual(intervalEnd), is(true));
356+
}
309357
}

0 commit comments

Comments
 (0)