Skip to content

Commit

Permalink
WIP for code review
Browse files Browse the repository at this point in the history
  • Loading branch information
ESDC-Olivier-Roy committed Jun 28, 2024
1 parent 3728984 commit e5fa237
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 24 deletions.
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package ca.gov.dtsstn.cdcp.api.data.entity;

import java.time.Instant;

import org.immutables.builder.Builder;
import org.springframework.core.style.ToStringCreator;

import jakarta.annotation.Nullable;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;

@SuppressWarnings({ "serial" })
@Entity(name = "ConfirmationCode")
Expand All @@ -19,6 +20,11 @@ public class ConfirmationCodeEntity extends AbstractEntity {
@Column(nullable = false)
private Instant expiryDate;


@JoinColumn(name = "id", nullable = false)
@ManyToOne(cascade = CascadeType.REMOVE)
private UserEntity user;

public ConfirmationCodeEntity() {
super();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,5 @@
@Repository
public interface ConfirmationCodeRepository extends JpaRepository<ConfirmationCodeEntity, String> {

void deleteByExpiryDateLessThan(Instant currentInstant);

int deleteByExpiryDateLessThan(Instant instant);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,3 @@ INSERT INTO `subscription` (`id`, `user_id`, `language_id`, `alert_type_id`, `cr
VALUES
('a6ea4925-f813-493e-80ec-a5b90ca28b6c', '76c48130-e1d4-4c2f-8dd0-1c17f9bbb4f6', '3a91d740-facf-48c2-bd9e-9ab46a8f6200', 'cf185099-8a17-4086-a890-c456250822a3', 'flyway-community-edition', CURRENT_TIMESTAMP, 'flyway-community-edition', CURRENT_TIMESTAMP),
('d3419bcb-5e46-4678-831b-c9211d479429', '76c48130-e1d4-4c2f-8dd0-1c17f9bbb4f6', '3a91d740-facf-48c2-bd9e-9ab46a8f6200', 'daf8b8d9-95f4-4f38-9ee3-17ac7826c1e7', 'flyway-community-edition', CURRENT_TIMESTAMP, 'flyway-community-edition', CURRENT_TIMESTAMP);


INSERT INTO `confirmation_code` (`id`, `code`, `expiry_date`, `user_id`, `created_by`, `created_date`, `last_modified_by`, `last_modified_date`)
VALUES
('a6ea4925-f813-493e-80ec-a5b90ca28b6c', '12345', CURRENT_TIMESTAMP, 'f9f33652-0ebd-46bc-8d93-04cef538a689', 'flyway-community-edition', CURRENT_TIMESTAMP, 'flyway-community-edition', CURRENT_TIMESTAMP),
('a6ea4925-f813-493e-80ec-a5b90ca28aaa', '54321', CURRENT_TIMESTAMP-100, 'f9f33652-0ebd-46bc-8d93-04cef538a689', 'flyway-community-edition', CURRENT_TIMESTAMP, 'flyway-community-edition', CURRENT_TIMESTAMP),
('a6ea4925-f813-493e-80ec-a5b90ca28b6d', '54321', CURRENT_TIMESTAMP + 20000000, 'f9f33652-0ebd-46bc-8d93-04cef538a689', 'flyway-community-edition', CURRENT_TIMESTAMP, 'flyway-community-edition', CURRENT_TIMESTAMP);
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package ca.gov.dtsstn.cdcp.api.data.repository;
import static org.assertj.core.api.Assertions.assertThat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -10,7 +15,11 @@
import org.springframework.context.annotation.Import;
import org.springframework.test.context.ActiveProfiles;
import ca.gov.dtsstn.cdcp.api.config.DataSourceConfig;

import ca.gov.dtsstn.cdcp.api.data.entity.ConfirmationCodeEntity;
import ca.gov.dtsstn.cdcp.api.data.entity.ConfirmationCodeEntityBuilder;
import ca.gov.dtsstn.cdcp.api.data.entity.UserAttributeEntityBuilder;
import ca.gov.dtsstn.cdcp.api.data.entity.UserEntity;
import ca.gov.dtsstn.cdcp.api.data.entity.UserEntityBuilder;

@DataJpaTest
@ActiveProfiles("test")
Expand All @@ -19,21 +28,32 @@
public class ConfirmationCodeRepositoryIT {

@Autowired ConfirmationCodeRepository confirmationCodeRepository;
@Autowired UserRepository userRepository;

@Test
@DisplayName("Test confirmationCodeRepository.findBy(..)")
void testFindById() {
assertThat(confirmationCodeRepository.findAll()).isNotEmpty();
assertThat(confirmationCodeRepository.findById("a6ea4925-f813-493e-80ec-a5b90ca28b6c")).isNotEmpty();
assertThat(confirmationCodeRepository.findById("bogusId")).isEmpty();
}
@DisplayName("Test confirmationCodeRepository.deleteByExpiryDateLessThan(..)")
void testDeleteByExpiryDateLessThan() {

@Test
@DisplayName("Test confirmationCodeRepository.deleteByExpiredCode(..)")
void testDeleteByExpiredCode() {
ConfirmationCodeEntity confirmationCode = new ConfirmationCodeEntityBuilder()
.expiryDate(LocalDate.of(2024, 5, 15).atStartOfDay(ZoneId.systemDefault()).toInstant())
.code("98765")
.build();

Collection<ConfirmationCodeEntity> confirmationCodes = new ArrayList<ConfirmationCodeEntity>();
confirmationCodes.add(confirmationCode);

UserEntity newUser = userRepository.save(new UserEntityBuilder()
.userAttributes(List.of(new UserAttributeEntityBuilder()
.name("RAOIDC_USER_ID")
.value("1234-5678-90")
.build()))
.confirmationCodes(confirmationCodes)
.build());

assertThat(confirmationCodeRepository.findById("a6ea4925-f813-493e-80ec-a5b90ca28aaa")).isNotEmpty();
confirmationCodeRepository.deleteByExpiryDateLessThan(Instant.now());
assertThat(confirmationCodeRepository.findById("a6ea4925-f813-493e-80ec-a5b90ca28aaa")).isEmpty();
assertThat(userRepository.findById(newUser.getId())).isNotEmpty();
assertThat(userRepository.findById(newUser.getId()).get().getConfirmationCodes()).isNotEmpty();
int deletedRows = confirmationCodeRepository.deleteByExpiryDateLessThan(Instant.now());
assertThat(deletedRows).isEqualTo(1);
assertThat(userRepository.findById(newUser.getId()).get().getConfirmationCodes()).isEmpty();
}
}

0 comments on commit e5fa237

Please sign in to comment.