浏览代码

UpdateRecordedYearOfBirth

Andrew Grant 7 月之前
父节点
当前提交
e69a922a35

+ 17 - 9
src/main/java/scot/carricksoftware/grants/services/census/censusentry/UpdateRecordedYearOfBirthImpl.java

@@ -32,15 +32,23 @@ public class UpdateRecordedYearOfBirthImpl implements UpdateRecordedYearOfBirth
         logger.info("UpdateRecordedYearOfBirthImpl::updateRecordedYearOfBirth");
         Person person = censusEntryCommand.getPerson();
         if (person.getRecordedYearOfBirth() == null) {
-            String dateString = censusEntryCommand.getCensus().getCensusDate().label;
-
-            String[] dateStrings = dateString.split("/");
-            Integer year = Integer.valueOf(dateStrings[2]);
-            try {
-                Integer age = Integer.valueOf(censusEntryCommand.getAge());
-                updateDate(person, String.valueOf(year - age));
-            } catch (NumberFormatException e) {
-                logger.info(" -- Age cannot be parsed");
+            if(censusEntryCommand.getBirthYear() != null) {
+                PersonCommand personCommand = personConverter.convert(person);
+                assert personCommand != null;
+                personCommand.setRecordedYearOfBirth(censusEntryCommand.getBirthYear());
+                personService.savePersonCommand(personCommand);
+            } else {
+
+                String dateString = censusEntryCommand.getCensus().getCensusDate().label;
+
+                String[] dateStrings = dateString.split("/");
+                Integer year = Integer.valueOf(dateStrings[2]);
+                try {
+                    Integer age = Integer.valueOf(censusEntryCommand.getAge());
+                    updateDate(person, String.valueOf(year - age));
+                } catch (NumberFormatException e) {
+                    logger.info(" -- Age cannot be parsed");
+                }
             }
         }
     }

+ 4 - 0
src/test/java/scot/carricksoftware/grants/GenerateRandomNumberValues.java

@@ -19,4 +19,8 @@ public class GenerateRandomNumberValues {
         return rand.nextLong();
     }
 
+    public static Integer GetRandomInteger() {
+        return rand.nextInt();
+    }
+
 }

+ 63 - 0
src/test/java/scot/carricksoftware/grants/services/census/censusentry/UpdateRecordedYearOfBirthViaBirthYearTest.java

@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grants.services.census.censusentry;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import scot.carricksoftware.grants.commands.census.CensusEntryCommand;
+import scot.carricksoftware.grants.commands.people.PersonCommand;
+import scot.carricksoftware.grants.converters.people.PersonConverter;
+import scot.carricksoftware.grants.domains.people.Person;
+import scot.carricksoftware.grants.services.people.PersonService;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static scot.carricksoftware.grants.GenerateRandomNumberValues.GetRandomInteger;
+
+@ExtendWith(MockitoExtension.class)
+class UpdateRecordedYearOfBirthViaBirthYearTest {
+
+    private UpdateRecordedYearOfBirth updateRecordedYearOfBirth;
+
+
+    @Mock
+    private Person personMock;
+
+    @Mock
+    private PersonCommand personCommandMock;
+
+    @Mock
+    private PersonService personServiceMock;
+
+    @Mock
+    private CensusEntryCommand censusEntryCommandMock;
+
+    @Mock
+    private PersonConverter personConverterMock;
+
+    @BeforeEach
+    void setUp() {
+        updateRecordedYearOfBirth = new UpdateRecordedYearOfBirthImpl(personConverterMock, personServiceMock);
+        when(censusEntryCommandMock.getPerson()).thenReturn(personMock);
+        when(personConverterMock.convert(personMock)).thenReturn(personCommandMock);
+    }
+
+    @Test
+    public void theYearOfBirthIsUpdatedTest() {
+        Integer yearOfBirth = GetRandomInteger();
+        when(censusEntryCommandMock.getBirthYear()).thenReturn(yearOfBirth.toString());
+        when(personMock.getRecordedYearOfBirth()).thenReturn(null);
+
+        updateRecordedYearOfBirth.updateRecordedYearOfBirth(censusEntryCommandMock);
+
+        verify(personCommandMock).setRecordedYearOfBirth(yearOfBirth.toString());
+    }
+
+
+}

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/census/CensusCommandValidatorImplRoomWithWindowsTest.java → src/test/java/scot/carricksoftware/grants/validators/census/CensusCommandValidatorRoomWithWindowsTest.java

@@ -24,7 +24,7 @@ import static scot.carricksoftware.grants.GenerateCensusRandomEnums.GetRandomCen
 import static scot.carricksoftware.grants.GenerateRandomPlaceValues.GetRandomPlace;
 
 @ExtendWith(MockitoExtension.class)
-class CensusCommandValidatorImplRoomWithWindowsTest {
+class CensusCommandValidatorRoomWithWindowsTest {
 
     private CensusCommandValidatorImpl censusCommandValidatorImpl = new CensusCommandValidatorImpl();
 

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/census/CensusCommandValidatorImplRoomsInhabitedTest.java → src/test/java/scot/carricksoftware/grants/validators/census/CensusCommandValidatorRoomsInhabitedTest.java

@@ -24,7 +24,7 @@ import static scot.carricksoftware.grants.GenerateCensusRandomEnums.GetRandomCen
 import static scot.carricksoftware.grants.GenerateRandomPlaceValues.GetRandomPlace;
 
 @ExtendWith(MockitoExtension.class)
-class CensusCommandValidatorImplRoomsInhabitedTest {
+class CensusCommandValidatorRoomsInhabitedTest {
 
     private CensusCommandValidatorImpl censusCommandValidatorImpl = new CensusCommandValidatorImpl();
 

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/census/CensusCommandValidatorImplTest.java → src/test/java/scot/carricksoftware/grants/validators/census/CensusCommandValidatorTest.java

@@ -24,7 +24,7 @@ import static scot.carricksoftware.grants.GenerateCensusRandomEnums.GetRandomCen
 import static scot.carricksoftware.grants.GenerateRandomPlaceValues.GetRandomPlace;
 
 @ExtendWith(MockitoExtension.class)
-class CensusCommandValidatorImplTest {
+class CensusCommandValidatorTest {
 
     private CensusCommandValidatorImpl censusCommandValidatorImpl = new CensusCommandValidatorImpl();
 

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/census/CensusEntryCommandValidatorImplBirthDayTest.java → src/test/java/scot/carricksoftware/grants/validators/census/CensusEntryCommandValidatorBirthDayTest.java

@@ -22,7 +22,7 @@ import static scot.carricksoftware.grants.GenerateRandomCensusValues.GetRandomCe
 import static scot.carricksoftware.grants.GenerateRandomPeopleValues.GetRandomPerson;
 
 @ExtendWith(MockitoExtension.class)
-class CensusEntryCommandValidatorImplBirthDayTest {
+class CensusEntryCommandValidatorBirthDayTest {
 
     private CensusEntryCommandValidatorImpl validator;
 

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/census/CensusEntryCommandValidatorImplBIrthYearAndAgeTest.java → src/test/java/scot/carricksoftware/grants/validators/census/CensusEntryCommandValidatorBirthYearAndAgeTest.java

@@ -22,7 +22,7 @@ import static scot.carricksoftware.grants.GenerateRandomCensusValues.GetRandomCe
 import static scot.carricksoftware.grants.GenerateRandomPeopleValues.GetRandomPerson;
 
 @ExtendWith(MockitoExtension.class)
-class CensusEntryCommandValidatorImplBIrthYearAndAgeTest {
+class CensusEntryCommandValidatorBirthYearAndAgeTest {
 
     private CensusEntryCommandValidatorImpl validator;
 

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/census/CensusEntryCommandValidatorImplBirthYearTest.java → src/test/java/scot/carricksoftware/grants/validators/census/CensusEntryCommandValidatorBirthYearTest.java

@@ -21,7 +21,7 @@ import static org.mockito.Mockito.verify;
 import static scot.carricksoftware.grants.GenerateRandomCensusValues.GetRandomCensus;
 
 @ExtendWith(MockitoExtension.class)
-class CensusEntryCommandValidatorImplBirthYearTest {
+class CensusEntryCommandValidatorBirthYearTest {
 
     private CensusEntryCommandValidatorImpl validator;
 

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/census/CensusEntryCommandValidatorImplNameTest.java → src/test/java/scot/carricksoftware/grants/validators/census/CensusEntryCommandValidatorNameTest.java

@@ -22,7 +22,7 @@ import static org.mockito.Mockito.verifyNoInteractions;
 import static scot.carricksoftware.grants.GenerateRandomCensusValues.GetRandomCensus;
 
 @ExtendWith(MockitoExtension.class)
-class CensusEntryCommandValidatorImplNameTest {
+class CensusEntryCommandValidatorNameTest {
 
     private CensusEntryCommandValidatorImpl validator;
 

+ 1 - 1
src/test/java/scot/carricksoftware/grants/validators/census/CensusEntryCommandValidatorImplTest.java → src/test/java/scot/carricksoftware/grants/validators/census/CensusEntryCommandValidatorTest.java

@@ -23,7 +23,7 @@ import static scot.carricksoftware.grants.GenerateRandomCensusValues.GetRandomCe
 import static scot.carricksoftware.grants.GenerateRandomPeopleValues.GetRandomPerson;
 
 @ExtendWith(MockitoExtension.class)
-class CensusEntryCommandValidatorImplTest {
+class CensusEntryCommandValidatorTest {
 
     private CensusEntryCommandValidatorImpl validator;