diff --git a/src/main/java/uk/gov/companieshouse/controller/DissolutionController.java b/src/main/java/uk/gov/companieshouse/controller/DissolutionController.java index a79905e5..c93b4997 100644 --- a/src/main/java/uk/gov/companieshouse/controller/DissolutionController.java +++ b/src/main/java/uk/gov/companieshouse/controller/DissolutionController.java @@ -108,10 +108,13 @@ public DissolutionCreateResponse submitDissolutionRequest( }) @GetMapping @ResponseStatus(HttpStatus.OK) - public DissolutionGetResponse getDissolutionApplication(@PathVariable("company-number") final String companyNumber) { + public DissolutionGetResponse getDissolutionApplication(@RequestHeader("ERIC-identity") String userId, + @PathVariable("company-number") final String companyNumber) { DissolutionGetResponse dissolutionGetResponse = dissolutionService .getByCompanyNumber(companyNumber) + .or(() -> dissolutionService.getPendingOrDraftDissolution(userId, companyNumber)) .orElseThrow(NotFoundException::new); + String paymentRef = dissolutionGetResponse.getPaymentReference(); if (paymentRef != null && !paymentRef.isEmpty() && dissolutionGetResponse.getApplicationStatus().equals(ApplicationStatus.PENDING_PAYMENT)) { // payment could be complete, we need to get up-to-date status to be sure diff --git a/src/main/java/uk/gov/companieshouse/mapper/DissolutionResponseMapper.java b/src/main/java/uk/gov/companieshouse/mapper/DissolutionResponseMapper.java index 8e53bf79..9e66b5a3 100644 --- a/src/main/java/uk/gov/companieshouse/mapper/DissolutionResponseMapper.java +++ b/src/main/java/uk/gov/companieshouse/mapper/DissolutionResponseMapper.java @@ -1,5 +1,6 @@ package uk.gov.companieshouse.mapper; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import uk.gov.companieshouse.model.db.dissolution.Dissolution; import uk.gov.companieshouse.model.db.dissolution.DissolutionCertificate; @@ -56,6 +57,11 @@ public DissolutionGetResponse mapToDissolutionGetResponse(Dissolution dissolutio .ofNullable(dissolution.getPaymentInformation().getReference()) .ifPresent(paymentReference -> setPaymentReference(response, paymentReference)); } + + if (!StringUtils.isEmpty(dissolution.getTransactionId())) { + response.setTransactionId(dissolution.getTransactionId()); + response.setDissolutionStatus(dissolution.getStatus()); + } return response; } diff --git a/src/main/java/uk/gov/companieshouse/model/db/dissolution/Dissolution.java b/src/main/java/uk/gov/companieshouse/model/db/dissolution/Dissolution.java index 15d5131e..17d96ebd 100644 --- a/src/main/java/uk/gov/companieshouse/model/db/dissolution/Dissolution.java +++ b/src/main/java/uk/gov/companieshouse/model/db/dissolution/Dissolution.java @@ -4,6 +4,7 @@ import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; import uk.gov.companieshouse.model.db.payment.PaymentInformation; +import uk.gov.companieshouse.model.enums.DissolutionStatus; import java.time.LocalDateTime; @@ -32,6 +33,10 @@ public class Dissolution { private DissolutionVerdict verdict; boolean active; + + private DissolutionStatus status; + + private String transactionId; public boolean getActive() { return active; @@ -112,4 +117,20 @@ public DissolutionVerdict getVerdict() { public void setVerdict(DissolutionVerdict verdict) { this.verdict = verdict; } + + public DissolutionStatus getStatus() { + return status; + } + + public void setStatus(DissolutionStatus status) { + this.status = status; + } + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } } diff --git a/src/main/java/uk/gov/companieshouse/model/dto/dissolution/DissolutionGetResponse.java b/src/main/java/uk/gov/companieshouse/model/dto/dissolution/DissolutionGetResponse.java index 50435911..77c8542f 100644 --- a/src/main/java/uk/gov/companieshouse/model/dto/dissolution/DissolutionGetResponse.java +++ b/src/main/java/uk/gov/companieshouse/model/dto/dissolution/DissolutionGetResponse.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import uk.gov.companieshouse.model.enums.ApplicationStatus; import uk.gov.companieshouse.model.enums.ApplicationType; +import uk.gov.companieshouse.model.enums.DissolutionStatus; import java.sql.Timestamp; import java.util.List; @@ -18,6 +19,12 @@ public class DissolutionGetResponse { @JsonProperty("application_status") private ApplicationStatus applicationStatus; + @JsonProperty("dissolution_status") + private DissolutionStatus dissolutionStatus; + + @JsonProperty("transaction_id") + private String transactionId; + @JsonProperty("application_reference") private String applicationReference; @@ -159,4 +166,20 @@ public String getPaymentReference() { public void setPaymentReference(String paymentReference) { this.paymentReference = paymentReference; } + + public DissolutionStatus getDissolutionStatus() { + return dissolutionStatus; + } + + public void setDissolutionStatus(DissolutionStatus dissolutionStatus) { + this.dissolutionStatus = dissolutionStatus; + } + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } } diff --git a/src/main/java/uk/gov/companieshouse/model/enums/DissolutionStatus.java b/src/main/java/uk/gov/companieshouse/model/enums/DissolutionStatus.java new file mode 100644 index 00000000..e14f425a --- /dev/null +++ b/src/main/java/uk/gov/companieshouse/model/enums/DissolutionStatus.java @@ -0,0 +1,20 @@ +package uk.gov.companieshouse.model.enums; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum DissolutionStatus { + DRAFT("draft"), + PENDING("pending"), + PROCESSED("processed"); + + private final String value; + + DissolutionStatus(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } +} diff --git a/src/main/java/uk/gov/companieshouse/repository/DissolutionRepository.java b/src/main/java/uk/gov/companieshouse/repository/DissolutionRepository.java index 2bd66735..9c5cd980 100644 --- a/src/main/java/uk/gov/companieshouse/repository/DissolutionRepository.java +++ b/src/main/java/uk/gov/companieshouse/repository/DissolutionRepository.java @@ -20,4 +20,10 @@ public interface DissolutionRepository extends MongoRepository findPendingDissolutions(LocalDateTime dateTime, Pageable limit); + + @Query("{'company.number': ?0, 'status' : 'PENDING'}") + Optional findPendingDissolutionByCompanyNumber(String companyNumber); + + @Query("{'company.number': ?0, 'status' : 'DRAFT', 'created_by.user_id': ?1}") + Optional findDraftDissolutionForUserAndCompany(String userId, String companyNumber); } diff --git a/src/main/java/uk/gov/companieshouse/service/dissolution/DissolutionGetter.java b/src/main/java/uk/gov/companieshouse/service/dissolution/DissolutionGetter.java index df78e099..edf4297a 100644 --- a/src/main/java/uk/gov/companieshouse/service/dissolution/DissolutionGetter.java +++ b/src/main/java/uk/gov/companieshouse/service/dissolution/DissolutionGetter.java @@ -49,9 +49,10 @@ private boolean isDirectorPendingApprovalForDissolution(String officerId, Dissol .anyMatch(director -> director.getOfficerId().equals(officerId) && !director.hasDirectorApproval()); } - public Optional getById(String id) { + public Optional getPendingOrDraftDissolution(String userId, String companyNumber) { return repository - .findById(id) + .findPendingDissolutionByCompanyNumber(companyNumber) + .or(() -> repository.findDraftDissolutionForUserAndCompany(userId, companyNumber)) .map(responseMapper::mapToDissolutionGetResponse); } } diff --git a/src/main/java/uk/gov/companieshouse/service/dissolution/DissolutionService.java b/src/main/java/uk/gov/companieshouse/service/dissolution/DissolutionService.java index 770eb3bd..435c6b4b 100644 --- a/src/main/java/uk/gov/companieshouse/service/dissolution/DissolutionService.java +++ b/src/main/java/uk/gov/companieshouse/service/dissolution/DissolutionService.java @@ -74,6 +74,10 @@ public boolean isDirectorPendingApproval(String companyNumber, String officerId) return getter.isDirectorPendingApproval(companyNumber, officerId); } + public Optional getPendingOrDraftDissolution(String userId, String companyNumber) { + return getter.getPendingOrDraftDissolution(userId, companyNumber); + } + public Optional getDissolutionById(String dissolutionId) { return repository.findById(dissolutionId); } diff --git a/src/test/java/uk/gov/companieshouse/controller/DissolutionControllerTest.java b/src/test/java/uk/gov/companieshouse/controller/DissolutionControllerTest.java index be0eada1..432a1f2a 100644 --- a/src/test/java/uk/gov/companieshouse/controller/DissolutionControllerTest.java +++ b/src/test/java/uk/gov/companieshouse/controller/DissolutionControllerTest.java @@ -20,6 +20,7 @@ import uk.gov.companieshouse.model.dto.dissolution.DissolutionGetResponse; import uk.gov.companieshouse.model.dto.dissolution.DissolutionPatchRequest; import uk.gov.companieshouse.model.dto.dissolution.DissolutionPatchResponse; +import uk.gov.companieshouse.model.enums.DissolutionStatus; import uk.gov.companieshouse.service.CompanyOfficerService; import uk.gov.companieshouse.service.CompanyProfileService; import uk.gov.companieshouse.service.TransactionService; @@ -34,6 +35,8 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.isA; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; @@ -49,6 +52,7 @@ import static uk.gov.companieshouse.fixtures.DissolutionFixtures.generateDissolutionGetResponse; import static uk.gov.companieshouse.fixtures.DissolutionFixtures.generateDissolutionPatchRequest; import static uk.gov.companieshouse.fixtures.DissolutionFixtures.generateDissolutionPatchResponse; +import static uk.gov.companieshouse.fixtures.TransactionFixtures.TRANSACTION_ID; @SuppressWarnings({"unchecked", "UastIncorrectHttpHeaderInspection"}) @WebMvcTest(DissolutionController.class) @@ -319,6 +323,7 @@ void getDissolutionRequest_returnsUnauthorised_ifCompanyNumberTokenPermissionDoe @Test void getDissolutionRequest_returnsNotFound_ifDissolutionDoesntExist() throws Exception { when(service.getByCompanyNumber(COMPANY_NUMBER)).thenReturn(Optional.empty()); + when(service.getPendingOrDraftDissolution(USER_ID, COMPANY_NUMBER)).thenReturn(Optional.empty()); mockMvc .perform( @@ -326,6 +331,9 @@ void getDissolutionRequest_returnsNotFound_ifDissolutionDoesntExist() throws Exc .contentType(MediaType.APPLICATION_JSON_VALUE) .headers(createHttpHeaders())) .andExpect(status().isNotFound()); + + verify(service, times(1)).getByCompanyNumber(COMPANY_NUMBER); + verify(service, times(1)).getPendingOrDraftDissolution(USER_ID, COMPANY_NUMBER); } @Test @@ -341,6 +349,28 @@ void getDissolutionRequest_returnsDissolutionInfo_ifDissolutionExists() throws E .headers(createHttpHeaders())) .andExpect(status().isOk()) .andExpect(content().json(asJsonString(response))); + + verify(service, times(1)).getByCompanyNumber(COMPANY_NUMBER); + verify(service, never()).getPendingOrDraftDissolution(USER_ID, COMPANY_NUMBER); + } + + @Test + void getDissolutionRequest_returnsDraftOrPendingDissolutionInfo_ifTransactionModelDissolutionExists() throws Exception { + final DissolutionGetResponse response = generateDissolutionGetResponse(TRANSACTION_ID, DissolutionStatus.DRAFT); + + when(service.getByCompanyNumber(COMPANY_NUMBER)).thenReturn(Optional.empty()); + when(service.getPendingOrDraftDissolution(USER_ID, COMPANY_NUMBER)).thenReturn(Optional.of(response)); + + mockMvc + .perform( + get(DISSOLUTION_URI, COMPANY_NUMBER) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .headers(createHttpHeaders())) + .andExpect(status().isOk()) + .andExpect(content().json(asJsonString(response))); + + verify(service, times(1)).getPendingOrDraftDissolution(USER_ID, COMPANY_NUMBER); + verify(service, times(1)).getByCompanyNumber(COMPANY_NUMBER); } @Test diff --git a/src/test/java/uk/gov/companieshouse/fixtures/DissolutionFixtures.java b/src/test/java/uk/gov/companieshouse/fixtures/DissolutionFixtures.java index c8a745fc..4af26ffc 100644 --- a/src/test/java/uk/gov/companieshouse/fixtures/DissolutionFixtures.java +++ b/src/test/java/uk/gov/companieshouse/fixtures/DissolutionFixtures.java @@ -23,6 +23,7 @@ import uk.gov.companieshouse.model.dto.documentrender.DissolutionCertificateDirector; import uk.gov.companieshouse.model.enums.ApplicationStatus; import uk.gov.companieshouse.model.enums.ApplicationType; +import uk.gov.companieshouse.model.enums.DissolutionStatus; import uk.gov.companieshouse.model.enums.SubmissionStatus; import uk.gov.companieshouse.model.enums.VerdictResult; @@ -76,6 +77,21 @@ public static DissolutionGetResponse generateDissolutionGetResponse() { return new DissolutionGetResponse(); } + public static DissolutionGetResponse generateDissolutionGetResponse(String transactionId, DissolutionStatus status) { + var response = new DissolutionGetResponse(); + response.setTransactionId(transactionId); + response.setDissolutionStatus(status); + return response; + } + + public static Dissolution generateDraftDissolution(String transactionId) { + return DissolutionTestDataBuilder.aDissolution().withTransactionId(transactionId).withStatus(DissolutionStatus.DRAFT).build(); + } + + public static Dissolution generatePendingDissolution(String transactionId) { + return DissolutionTestDataBuilder.aDissolution().withTransactionId(transactionId).withStatus(DissolutionStatus.PENDING).build(); + } + public static Dissolution generateDissolution() { return DissolutionTestDataBuilder.aDissolution().build(); } diff --git a/src/test/java/uk/gov/companieshouse/fixtures/DissolutionTestDataBuilder.java b/src/test/java/uk/gov/companieshouse/fixtures/DissolutionTestDataBuilder.java index a109cf3c..ed1c412a 100644 --- a/src/test/java/uk/gov/companieshouse/fixtures/DissolutionTestDataBuilder.java +++ b/src/test/java/uk/gov/companieshouse/fixtures/DissolutionTestDataBuilder.java @@ -8,6 +8,7 @@ import uk.gov.companieshouse.model.db.dissolution.DissolutionSubmission; import uk.gov.companieshouse.model.db.dissolution.DissolutionVerdict; import uk.gov.companieshouse.model.db.payment.PaymentInformation; +import uk.gov.companieshouse.model.enums.DissolutionStatus; import java.time.LocalDateTime; import java.util.ArrayList; @@ -25,6 +26,8 @@ public class DissolutionTestDataBuilder { private PaymentInformation paymentInformation = new PaymentInformation(); private DissolutionVerdict verdict = new DissolutionVerdict(); private boolean active = true; + private String transactionId = ""; + private DissolutionStatus status = DissolutionStatus.DRAFT; public static DissolutionTestDataBuilder aDissolution() { return new DissolutionTestDataBuilder(); @@ -128,6 +131,16 @@ public DissolutionTestDataBuilder withActive(boolean active) { return this; } + public DissolutionTestDataBuilder withTransactionId(String id) { + this.transactionId = id; + return this; + } + + public DissolutionTestDataBuilder withStatus(DissolutionStatus status) { + this.status = status; + return this; + } + public Dissolution build() { final Dissolution dissolution = new Dissolution(); dissolution.setModifiedDateTime(modifiedDateTime); @@ -138,6 +151,11 @@ public Dissolution build() { dissolution.setPaymentInformation(paymentInformation); dissolution.setVerdict(verdict); dissolution.setActive(active); + + if (transactionId != null && !transactionId.isEmpty()) { + dissolution.setTransactionId(transactionId); + dissolution.setStatus(status); + } return dissolution; } } diff --git a/src/test/java/uk/gov/companieshouse/mapper/DissolutionResponseMapperTest.java b/src/test/java/uk/gov/companieshouse/mapper/DissolutionResponseMapperTest.java index 7943f7c0..5373d8dd 100644 --- a/src/test/java/uk/gov/companieshouse/mapper/DissolutionResponseMapperTest.java +++ b/src/test/java/uk/gov/companieshouse/mapper/DissolutionResponseMapperTest.java @@ -11,6 +11,7 @@ import uk.gov.companieshouse.model.dto.dissolution.DissolutionPatchResponse; import uk.gov.companieshouse.model.enums.ApplicationStatus; import uk.gov.companieshouse.model.enums.ApplicationType; +import uk.gov.companieshouse.model.enums.DissolutionStatus; import java.sql.Timestamp; import java.time.LocalDateTime; @@ -20,6 +21,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static uk.gov.companieshouse.fixtures.DissolutionFixtures.generateDissolutionCertificate; +import static uk.gov.companieshouse.fixtures.TransactionFixtures.TRANSACTION_ID; import static uk.gov.companieshouse.model.Constants.DISSOLUTION_KIND; class DissolutionResponseMapperTest { @@ -169,4 +171,22 @@ void mapToDissolutionPatchResponse_mapsCompanyNumberAndReferenceToDissolutionLin assertEquals(String.format("/dissolution-request/%s", COMPANY_NUMBER), links.getSelf()); assertEquals(String.format("/dissolution-request/%s/payment", REFERENCE), links.getPayment()); } + + @Test + void mapToDissolutionGetResponse_setsTransactionIdAndStatus_ifTransactionIdExists() { + final Dissolution dissolution = DissolutionFixtures.generateDraftDissolution(TRANSACTION_ID); + final DissolutionGetResponse result = mapper.mapToDissolutionGetResponse(dissolution); + + assertEquals(TRANSACTION_ID, result.getTransactionId()); + assertEquals(DissolutionStatus.DRAFT, result.getDissolutionStatus()); + } + + @Test + void mapToDissolutionGetResponse_doesNotSetTransactionIdAndStatus_ifTransactionIdDoesNotExist() { + final Dissolution dissolution = DissolutionFixtures.generateDissolution(); + final DissolutionGetResponse result = mapper.mapToDissolutionGetResponse(dissolution); + + assertNull(result.getTransactionId()); + assertNull(result.getDissolutionStatus()); + } } diff --git a/src/test/java/uk/gov/companieshouse/service/dissolution/DissolutionGetterTest.java b/src/test/java/uk/gov/companieshouse/service/dissolution/DissolutionGetterTest.java index 3242f87e..9abaeb70 100644 --- a/src/test/java/uk/gov/companieshouse/service/dissolution/DissolutionGetterTest.java +++ b/src/test/java/uk/gov/companieshouse/service/dissolution/DissolutionGetterTest.java @@ -10,18 +10,22 @@ import uk.gov.companieshouse.model.db.dissolution.Dissolution; import uk.gov.companieshouse.model.db.dissolution.DissolutionDirector; import uk.gov.companieshouse.model.dto.dissolution.DissolutionGetResponse; +import uk.gov.companieshouse.model.enums.DissolutionStatus; import uk.gov.companieshouse.repository.DissolutionRepository; import java.util.Collections; import java.util.Optional; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static uk.gov.companieshouse.fixtures.DissolutionFixtures.generateDirectorApproval; import static uk.gov.companieshouse.fixtures.DissolutionFixtures.generateDissolutionDirector; +import static uk.gov.companieshouse.fixtures.TransactionFixtures.TRANSACTION_ID; @ExtendWith(MockitoExtension.class) class DissolutionGetterTest { @@ -36,6 +40,7 @@ class DissolutionGetterTest { private DissolutionResponseMapper responseMapper; public static final String COMPANY_NUMBER = "12345678"; + public static final String USER_ID = "123"; public static final String APPLICATION_REFERENCE = "XYZ456"; public static final String OFFICER_ID_ONE = "abc123"; public static final String OFFICER_ID_TWO = "def456"; @@ -147,18 +152,47 @@ void isDirectorPendingApproval_returnsTrue_whenNotApproved() { } @Test - void getById_returnsDissolutionGetResponse() { - final Dissolution dissolution = DissolutionFixtures.generateDissolution(); - final DissolutionGetResponse response = DissolutionFixtures.generateDissolutionGetResponse(); + void getPendingOrDraftDissolution_findsDissolution_mapsToDissolutionResponse_returnsGetResponse() { + final Dissolution dissolution = DissolutionFixtures.generateDraftDissolution(TRANSACTION_ID); + final DissolutionGetResponse response = DissolutionFixtures.generateDissolutionGetResponse(TRANSACTION_ID, DissolutionStatus.DRAFT); - String id = "123456788"; - when(repository.findById(id)).thenReturn(Optional.of(dissolution)); + when(repository.findDraftDissolutionForUserAndCompany(USER_ID, COMPANY_NUMBER)).thenReturn(Optional.of(dissolution)); when(responseMapper.mapToDissolutionGetResponse(dissolution)).thenReturn(response); - final Optional result = getter.getById(id); + final Optional result = getter.getPendingOrDraftDissolution(USER_ID, COMPANY_NUMBER); - verify(repository).findById(id); + verify(repository).findDraftDissolutionForUserAndCompany(USER_ID, COMPANY_NUMBER); verify(responseMapper).mapToDissolutionGetResponse(dissolution); + + assertTrue(result.isPresent()); + assertEquals(response, result.get()); + } + + @Test + void getPendingOrDraftDissolution_doesNotFindDissolution_returnsOptionalEmpty() { + when(repository.findDraftDissolutionForUserAndCompany(USER_ID, COMPANY_NUMBER)).thenReturn(Optional.empty()); + + final Optional result = getter.getPendingOrDraftDissolution(USER_ID, COMPANY_NUMBER); + + verify(repository).findDraftDissolutionForUserAndCompany(USER_ID, COMPANY_NUMBER); + + assertTrue(result.isEmpty()); + } + + @Test + void getPendingOrDraftDissolution_findsPendingDissolution_skipsDraftDissolutionLookupAndReturnsPendingDissolution_() { + final Dissolution dissolution = DissolutionFixtures.generatePendingDissolution(TRANSACTION_ID); + final DissolutionGetResponse response = DissolutionFixtures.generateDissolutionGetResponse(TRANSACTION_ID, DissolutionStatus.PENDING); + + when(repository.findPendingDissolutionByCompanyNumber(COMPANY_NUMBER)).thenReturn(Optional.of(dissolution)); + when(responseMapper.mapToDissolutionGetResponse(dissolution)).thenReturn(response); + + final Optional result = getter.getPendingOrDraftDissolution(USER_ID, COMPANY_NUMBER); + + verify(repository, times(1)).findPendingDissolutionByCompanyNumber(COMPANY_NUMBER); + verify(repository, never()).findDraftDissolutionForUserAndCompany(USER_ID, COMPANY_NUMBER); + verify(responseMapper).mapToDissolutionGetResponse(dissolution); + assertTrue(result.isPresent()); assertEquals(response, result.get()); } diff --git a/src/test/java/uk/gov/companieshouse/service/dissolution/DissolutionServiceTest.java b/src/test/java/uk/gov/companieshouse/service/dissolution/DissolutionServiceTest.java index 362e93b4..4449dc47 100644 --- a/src/test/java/uk/gov/companieshouse/service/dissolution/DissolutionServiceTest.java +++ b/src/test/java/uk/gov/companieshouse/service/dissolution/DissolutionServiceTest.java @@ -262,4 +262,17 @@ void givenGetDissolutionForTransactionCalled_whenDissolutionDoesNotExist_throwsE is("No dissolution found with id " + DISSOLUTION_ID)); verify(repository, times(1)).findById(DISSOLUTION_ID); } + + @Test + void getPendingOrDraftDissolution_callsDissolutionGetter_getPendingOrDraftDissolution() { + final DissolutionGetResponse response = DissolutionFixtures.generateDissolutionGetResponse(); + when(getter.getPendingOrDraftDissolution(USER_ID, COMPANY_NUMBER)).thenReturn(Optional.of(response)); + + final Optional result = service.getPendingOrDraftDissolution(USER_ID, COMPANY_NUMBER); + + verify(getter).getPendingOrDraftDissolution(USER_ID, COMPANY_NUMBER); + + assertTrue(result.isPresent()); + assertEquals(response, result.get()); + } }