Skip to content

Commit 78d64d9

Browse files
authored
Merge pull request #45 from companieshouse/lp219-links-uri-submission
Store as self link in the links data block in the mongo record
2 parents 7814130 + d96489e commit 78d64d9

File tree

4 files changed

+34
-2
lines changed

4 files changed

+34
-2
lines changed

src/main/java/uk/gov/companieshouse/limitedpartnershipsapi/model/dao/LimitedPartnershipSubmissionDao.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.springframework.data.mongodb.core.mapping.Field;
66

77
import java.time.LocalDateTime;
8+
import java.util.Map;
89

910
@Document(collection = "limited_partnership_submissions")
1011
public class LimitedPartnershipSubmissionDao {
@@ -21,6 +22,9 @@ public class LimitedPartnershipSubmissionDao {
2122
@Field("data")
2223
private DataDao data;
2324

25+
@Field("links")
26+
private Map<String, String> links;
27+
2428
public String getId() {
2529
return id;
2630
}
@@ -52,4 +56,12 @@ public String getUserId() {
5256
public void setUserId(String userId) {
5357
this.userId = userId;
5458
}
59+
60+
public Map<String, String> getLinks() {
61+
return links;
62+
}
63+
64+
public void setLinks(Map<String, String> links) {
65+
this.links = links;
66+
}
5567
}

src/main/java/uk/gov/companieshouse/limitedpartnershipsapi/service/LimitedPartnershipService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import static uk.gov.companieshouse.limitedpartnershipsapi.utils.Constants.FILING_KIND_LIMITED_PARTNERSHIP;
2020
import static uk.gov.companieshouse.limitedpartnershipsapi.utils.Constants.SUBMISSION_URI_PATTERN;
21+
import static uk.gov.companieshouse.limitedpartnershipsapi.utils.Constants.LINK_SELF;
2122

2223
@Service
2324
public class LimitedPartnershipService {
@@ -49,9 +50,11 @@ public String createLimitedPartnership(Transaction transaction,
4950
LimitedPartnershipSubmissionDao dao = mapper.dtoToDao(limitedPartnershipSubmissionDto);
5051
dao.setCreatedAt(LocalDateTime.now());
5152
dao.setUserId(userId);
53+
5254
LimitedPartnershipSubmissionDao insertedSubmission = repository.insert(dao);
5355

5456
final String submissionUri = getSubmissionUri(transaction.getId(), insertedSubmission.getId());
57+
updateLimitedPartnershipSubmissionWithSelfLink(insertedSubmission, submissionUri);
5558

5659
// Create the Resource to be added to the Transaction (includes various links to the resource)
5760
var limitedPartnershipResource = createLimitedPartnershipTransactionResource(submissionUri);
@@ -102,4 +105,10 @@ private boolean hasExistingLimitedPartnershipSubmission(Transaction transaction)
102105
}
103106
return false;
104107
}
108+
109+
private void updateLimitedPartnershipSubmissionWithSelfLink(LimitedPartnershipSubmissionDao submission,
110+
String submissionUri) {
111+
submission.setLinks(Collections.singletonMap(LINK_SELF, submissionUri));
112+
repository.save(submission);
113+
}
105114
}

src/main/java/uk/gov/companieshouse/limitedpartnershipsapi/utils/Constants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,6 @@ private Constants() {
1919

2020
// Filings
2121
public static final String FILING_KIND_LIMITED_PARTNERSHIP = "limited-partnership";
22+
23+
public static final String LINK_SELF = "self";
2224
}

src/test/java/uk/gov/companieshouse/limitedpartnershipsapi/service/LimitedPartnershipServiceTest.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ class LimitedPartnershipServiceTest {
3535
private static final String USER_ID = "xbJf0l";
3636
private static final String SUBMISSION_ID = "abc-123";
3737
private static final String REQUEST_ID = "fd4gld5h3jhh";
38-
private static final String TRANSACTION_ID = "12321123";
38+
private static final String TRANSACTION_ID = "txn-456";
39+
private static final String LINK_SELF = "self";
3940

4041
@InjectMocks
4142
private LimitedPartnershipService service;
@@ -52,6 +53,9 @@ class LimitedPartnershipServiceTest {
5253
@Captor
5354
private ArgumentCaptor<Transaction> transactionApiCaptor;
5455

56+
@Captor
57+
private ArgumentCaptor<LimitedPartnershipSubmissionDao> submissionCaptor;
58+
5559
@Test
5660
void givenDto_whenCreateLP_thenLPCreatedWithSubmissionIdAndTransactionUpdated() throws ServiceException {
5761
// given
@@ -62,13 +66,14 @@ void givenDto_whenCreateLP_thenLPCreatedWithSubmissionIdAndTransactionUpdated()
6266
when(repository.insert(limitedPartnershipSubmissionDao)).thenReturn(limitedPartnershipSubmissionDao);
6367

6468
Transaction transaction = buildTransaction();
65-
69+
6670
// when
6771
String submissionId = service.createLimitedPartnership(transaction, limitedPartnershipSubmissionDto, REQUEST_ID, USER_ID);
6872

6973
// then
7074
verify(mapper, times(1)).dtoToDao(limitedPartnershipSubmissionDto);
7175
verify(repository, times(1)).insert(limitedPartnershipSubmissionDao);
76+
verify(repository, times(1)).save(submissionCaptor.capture());
7277
verify(transactionService, times(1)).updateTransaction(transactionApiCaptor.capture(), any());
7378
assertEquals(SUBMISSION_ID, submissionId);
7479

@@ -78,6 +83,10 @@ void givenDto_whenCreateLP_thenLPCreatedWithSubmissionIdAndTransactionUpdated()
7883
assertNull(sentTransaction.getCompanyNumber());
7984
String submissionUri = String.format("/transactions/%s/limited-partnership/%s", transaction.getId(), limitedPartnershipSubmissionDao.getId());
8085
assertEquals(submissionUri, sentTransaction.getResources().get(submissionUri).getLinks().get("resource"));
86+
// assert dao submission self link is correct
87+
LimitedPartnershipSubmissionDao sentSubmission = submissionCaptor.getValue();
88+
String sentSubmissionUri = sentSubmission.getLinks().get(LINK_SELF);
89+
assertEquals(submissionUri, sentSubmissionUri);
8190
}
8291

8392
@Test

0 commit comments

Comments
 (0)