From 1eeb30a2966386bd65bfe85ab909d3c9238826b7 Mon Sep 17 00:00:00 2001 From: vschot Date: Fri, 21 Feb 2025 15:45:52 +0000 Subject: [PATCH 1/5] LP-537 added support for sending general partner person data to API --- src/services/limited-partnerships/service.ts | 22 +- src/services/limited-partnerships/types.ts | 37 +- .../limited.partnerships.mock.ts | 73 +- .../limited.partnerships.spec.ts | 857 ++++++++++-------- 4 files changed, 580 insertions(+), 409 deletions(-) diff --git a/src/services/limited-partnerships/service.ts b/src/services/limited-partnerships/service.ts index e905e150..95f434ce 100644 --- a/src/services/limited-partnerships/service.ts +++ b/src/services/limited-partnerships/service.ts @@ -1,5 +1,5 @@ import { HttpResponse, IHttpClient } from "../../http"; -import { LimitedPartnership, LimitedPartnershipResourceCreated, LimitedPartnershipIncorporation } from "./types"; +import { LimitedPartnership, ResourceCreated, LimitedPartnershipIncorporation, GeneralPartner } from "./types"; import Resource, { ApiErrorResponse } from "../resource"; export default class LimitedPartnershipsService { @@ -8,7 +8,7 @@ export default class LimitedPartnershipsService { public async postLimitedPartnership ( transactionId: string, body: LimitedPartnership - ): Promise | ApiErrorResponse> { + ): Promise | ApiErrorResponse> { const URL = `/transactions/${transactionId}/limited-partnership/partnership`; const response: HttpResponse = await this.client.httpPost(URL, body); @@ -50,7 +50,7 @@ export default class LimitedPartnershipsService { */ public async postLimitedPartnershipIncorporation ( - transactionId: string): Promise | ApiErrorResponse> { + transactionId: string): Promise | ApiErrorResponse> { const URL = `/transactions/${transactionId}/incorporation/limited-partnership`; const response: HttpResponse = await this.client.httpPost(URL); @@ -74,4 +74,20 @@ export default class LimitedPartnershipsService { resource: { ...response.body } }; } + + /* + * Calls to general partner endpoints + */ + + public async postGeneralPartner ( + transactionId: string, + body: GeneralPartner): Promise | ApiErrorResponse> { + const URL = `/transactions/${transactionId}/limited-partnership/general-partner`; + const response: HttpResponse = await this.client.httpPost(URL, body); + + return { + httpStatusCode: response.status, + resource: { ...response.body } + }; + } } diff --git a/src/services/limited-partnerships/types.ts b/src/services/limited-partnerships/types.ts index 23424bdf..d05f9e3c 100644 --- a/src/services/limited-partnerships/types.ts +++ b/src/services/limited-partnerships/types.ts @@ -18,11 +18,46 @@ export interface LimitedPartnership { }; } +export interface GeneralPartner { + data?: { + country?: string, + date_effective_from?: string, + date_of_birth?: string, + etag?: string, + forename?: string, + former_names?: string, + governing_law?: string, + internal_id?: string, + kind?: string, + legal_entity_register_name?: string, + legal_entity_registration_location?: string, + legal_form?: string, + nationality1?: string, + nationality2?: string, + not_disqualified_statement_checked?: boolean, + principal_office_address?: Address & { + care_of?: string, + po_box?: string + }, + registered_company_number?: string, + resignation_date?: string, + service_address?: Address & { + care_of?: string, + po_box?: string, + }, + surname?: string, + usual_residential_address?: Address & { + care_of?: string, + po_box?: string, + } + } +} + /** * The data structure returned by the API when a new Limited Partnership resource has * successfully been created. */ -export interface LimitedPartnershipResourceCreated { +export interface ResourceCreated { id: string; } diff --git a/test/services/limited-partnerships/limited.partnerships.mock.ts b/test/services/limited-partnerships/limited.partnerships.mock.ts index 625d460a..94218d13 100644 --- a/test/services/limited-partnerships/limited.partnerships.mock.ts +++ b/test/services/limited-partnerships/limited.partnerships.mock.ts @@ -1,12 +1,13 @@ import { RequestClient } from "../../../src"; import { LimitedPartnership, - LimitedPartnershipResourceCreated, + ResourceCreated, LimitedPartnershipIncorporation, NameEndingType, PartnershipType, Jurisdiction, - Term + Term, + GeneralPartner } from "../../../src/services/limited-partnerships"; export const requestClient = new RequestClient({ @@ -43,6 +44,62 @@ export const LIMITED_PARTNERSHIP_OBJECT_MOCK: LimitedPartnership = { } }; +export const GENERAL_PARTNER_OBJECT_MOCK: GeneralPartner = { + data: { + country: "England", + date_effective_from: "2005-02-04", + date_of_birth: "2000-05-01", + etag: "", + forename: "John", + former_names: "Mary", + governing_law: "British Government", + internal_id: "123456", + kind: "", + legal_entity_register_name: "Entity Name", + legal_entity_registration_location: "UK", + legal_form: "", + nationality1: "English", + nationality2: "French", + not_disqualified_statement_checked: true, + principal_office_address: { + premises: "22", + address_line_1: "Some Street", + address_line_2: "Some Line 2", + locality: "Some Locality", + region: "Some Region", + country: "Some Country", + postal_code: "SC12 1WE", + care_of: "", + po_box: "" + }, + registered_company_number: "223456", + resignation_date: "", + service_address: { + premises: "10", + address_line_1: "This Street", + address_line_2: "This Line 2", + locality: "This Locality", + region: "This Region", + country: "This Country", + postal_code: "SC45 1XF", + care_of: "", + po_box: "" + }, + surname: "Doe", + usual_residential_address: { + premises: "25", + address_line_1: "That Street", + address_line_2: "That Line 2", + locality: "That Locality", + region: "That Region", + country: "That Country", + postal_code: "SC15 1N2", + care_of: "", + po_box: "" + } + } +} + export const LIMITED_PARTNERSHIP_INCORPORATION_OBJECT_MOCK: LimitedPartnershipIncorporation = { etag: "", kind: "" @@ -66,14 +123,14 @@ export const UNAUTHORISED = "Unauthorised"; export const BAD_REQUEST = "Bad Request"; export const NOT_FOUND = "Not Found"; -export const mockLimitedPartnershipCreatedResource: LimitedPartnershipResourceCreated = +export const mockCreatedResource: ResourceCreated = { id: LIMITED_PARTNERSHIP_ID }; export const mockPostLimitedPartnershipResponse = { 200: { status: 200 }, - 201: { status: 201, body: mockLimitedPartnershipCreatedResource }, + 201: { status: 201, body: mockCreatedResource }, 400: { status: 400, body: { error: BAD_REQUEST } }, 401: { status: 401, body: { error: UNAUTHORISED } } }; @@ -85,7 +142,7 @@ export const mockGetLimitedPartnershipResponse = { }; export const mockPostLimitedPartnershipIncorporationResponse = { - 201: { status: 201, body: mockLimitedPartnershipCreatedResource }, + 201: { status: 201, body: mockCreatedResource }, 400: { status: 400, body: { error: BAD_REQUEST } }, 401: { status: 401, body: { error: UNAUTHORISED } } }; @@ -99,3 +156,9 @@ export const mockGetLimitedPartnershipIncorporationResponse = { export const mockGetLimitedPartnershipIncorporationResponseWithSub = { 200: { status: 200, body: LIMITED_PARTNERSHIP_INCORPORATION_OBJECT_MOCK_WITH_SUB } } + +export const mockPostGeneralPartnerResponse = { + 201: { status: 201, body: mockCreatedResource }, + 400: { status: 400, body: { error: BAD_REQUEST } }, + 401: { status: 401, body: { error: UNAUTHORISED } } +}; diff --git a/test/services/limited-partnerships/limited.partnerships.spec.ts b/test/services/limited-partnerships/limited.partnerships.spec.ts index 442a4757..5a9b1519 100644 --- a/test/services/limited-partnerships/limited.partnerships.spec.ts +++ b/test/services/limited-partnerships/limited.partnerships.spec.ts @@ -5,7 +5,7 @@ import sinon from "sinon"; import * as mockValues from "./limited.partnerships.mock"; import { LimitedPartnership, - LimitedPartnershipResourceCreated, + ResourceCreated, LimitedPartnershipsService, LimitedPartnershipIncorporation, NameEndingType @@ -24,421 +24,478 @@ describe("LimitedPartnershipsService", () => { done(); }); - describe("postLimitedPartnership", () => { - it("should return object Id for postLimitedPartnership method", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpPost") - .resolves(mockValues.mockPostLimitedPartnershipResponse[201]); - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - const response = (await service.postLimitedPartnership( - mockValues.TRANSACTION_ID, - { - data: { - partnership_name: mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK.data?.partnership_name, - name_ending: mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK.data?.name_ending, - partnership_type: mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK.data?.partnership_type - } - } - )) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/limited-partnership/partnership", + describe("LimitedPartnership", () => { + describe("postLimitedPartnership", () => { + it("should return object Id for postLimitedPartnership method", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpPost") + .resolves(mockValues.mockPostLimitedPartnershipResponse[201]); + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.postLimitedPartnership( + mockValues.TRANSACTION_ID, { data: { - partnership_name: "Legalised Asset Stashing", - name_ending: "Limited Partnership", - partnership_type: "LP" + partnership_name: mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK.data?.partnership_name, + name_ending: mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK.data?.name_ending, + partnership_type: mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK.data?.partnership_type } } - ) - ).to.be.true; - - expect(response.httpStatusCode).to.equal(201); - expect(response.resource?.id).to.equal( - mockValues.mockLimitedPartnershipCreatedResource.id - ); - }); - - it("should return error 401 (Unauthorised) for postLimitedPartnership method", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpPost") - .resolves(mockValues.mockPostLimitedPartnershipResponse[401]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - const response = (await service.postLimitedPartnership( - mockValues.TRANSACTION_ID, - { data: {} } - )) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/limited-partnership/partnership", + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/limited-partnership/partnership", + { + data: { + partnership_name: "Legalised Asset Stashing", + name_ending: "Limited Partnership", + partnership_type: "LP" + } + } + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(201); + expect(response.resource?.id).to.equal( + mockValues.mockCreatedResource.id + ); + }); + + it("should return error 401 (Unauthorised) for postLimitedPartnership method", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpPost") + .resolves(mockValues.mockPostLimitedPartnershipResponse[401]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.postLimitedPartnership( + mockValues.TRANSACTION_ID, { data: {} } - ) - ).to.be.true; - - expect(response.httpStatusCode).to.equal(401); - expect(response.resource.error).to.equal(mockValues.UNAUTHORISED); - }); - - it("should return error 400 (Bad Request) for postLimitedPartnership method", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpPost") - .resolves(mockValues.mockPostLimitedPartnershipResponse[400]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - const response = (await service.postLimitedPartnership( - mockValues.TRANSACTION_ID, - { data: { name_ending: NameEndingType.LP } } - )) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/limited-partnership/partnership", + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/limited-partnership/partnership", + { data: {} } + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(401); + expect(response.resource.error).to.equal(mockValues.UNAUTHORISED); + }); + + it("should return error 400 (Bad Request) for postLimitedPartnership method", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpPost") + .resolves(mockValues.mockPostLimitedPartnershipResponse[400]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.postLimitedPartnership( + mockValues.TRANSACTION_ID, { data: { name_ending: NameEndingType.LP } } - ) - ).to.be.true; - - expect(response.httpStatusCode).to.equal(400); - expect(response.resource.error).to.equal(mockValues.BAD_REQUEST); - }); - }) - - describe("patchLimitedPartnership", () => { - it("should return a status 200", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpPatch") - .resolves(mockValues.mockPostLimitedPartnershipResponse[200]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - - const response = await service.patchLimitedPartnership( - mockValues.TRANSACTION_ID, - mockValues.SUBMISSION_ID, - mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK.data - ); - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/limited-partnership/partnership/09876", + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/limited-partnership/partnership", + { data: { name_ending: NameEndingType.LP } } + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(400); + expect(response.resource.error).to.equal(mockValues.BAD_REQUEST); + }); + }) + + describe("patchLimitedPartnership", () => { + it("should return a status 200", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpPatch") + .resolves(mockValues.mockPostLimitedPartnershipResponse[200]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + + const response = await service.patchLimitedPartnership( + mockValues.TRANSACTION_ID, + mockValues.SUBMISSION_ID, mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK.data - ) - ).to.be.true; - expect(response.httpStatusCode).to.equal(200); - }); - - it("should return error 400 (Bad Request)", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpPatch") - .resolves(mockValues.mockPostLimitedPartnershipResponse[400]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - - const response = await service.patchLimitedPartnership( - mockValues.TRANSACTION_ID, - mockValues.SUBMISSION_ID, - { - email: "testemail.com" - } - ) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/limited-partnership/partnership/09876", + ); + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/limited-partnership/partnership/09876", + mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK.data + ) + ).to.be.true; + expect(response.httpStatusCode).to.equal(200); + }); + + it("should return error 400 (Bad Request)", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpPatch") + .resolves(mockValues.mockPostLimitedPartnershipResponse[400]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + + const response = await service.patchLimitedPartnership( + mockValues.TRANSACTION_ID, + mockValues.SUBMISSION_ID, { email: "testemail.com" } - ) - ).to.be.true; - - expect(response.httpStatusCode).to.equal(400); - expect(response.resource.error).to.equal(mockValues.BAD_REQUEST); - }); + ) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/limited-partnership/partnership/09876", + { + email: "testemail.com" + } + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(400); + expect(response.resource.error).to.equal(mockValues.BAD_REQUEST); + }); + }) + + describe("getLimitedPartnership", () => { + it("should return a status 200 and the limitedPartnership object", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpGet") + .resolves(mockValues.mockGetLimitedPartnershipResponse[200]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + + const response = await service.getLimitedPartnership( + mockValues.TRANSACTION_ID, + mockValues.SUBMISSION_ID + ) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/limited-partnership/partnership/09876" + ) + ).to.be.true; + expect(response.httpStatusCode).to.equal(200); + expect(response?.resource).to.eql(mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK); + }); + + it("should return error 401 (Unauthorised)", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpGet") + .resolves(mockValues.mockGetLimitedPartnershipResponse[401]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.getLimitedPartnership( + mockValues.TRANSACTION_ID, + mockValues.SUBMISSION_ID + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/limited-partnership/partnership/09876" + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(401); + expect(response.resource.error).to.equal(mockValues.UNAUTHORISED); + }); + + it("should return error 404 (Not Found)", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpGet") + .resolves(mockValues.mockGetLimitedPartnershipResponse[404]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.getLimitedPartnership( + mockValues.TRANSACTION_ID, + "wrong-id" + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/limited-partnership/partnership/wrong-id" + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(404); + expect(response.resource.error).to.equal(mockValues.NOT_FOUND); + }); + }) }) - describe("getLimitedPartnership", () => { - it("should return a status 200 and the limitedPartnership object", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpGet") - .resolves(mockValues.mockGetLimitedPartnershipResponse[200]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - - const response = await service.getLimitedPartnership( - mockValues.TRANSACTION_ID, - mockValues.SUBMISSION_ID - ) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/limited-partnership/partnership/09876" - ) - ).to.be.true; - expect(response.httpStatusCode).to.equal(200); - expect(response?.resource).to.eql(mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK); + describe("Incorporation", () => { + describe("postLimitedPartnershipIncorporation", () => { + it("should return object Id for postLimitedPartnershipIncorporation method", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpPost") + .resolves(mockValues.mockPostLimitedPartnershipIncorporationResponse[201]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.postLimitedPartnershipIncorporation( + mockValues.TRANSACTION_ID + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/incorporation/limited-partnership" + ) + ).to.be.true; + expect(response.httpStatusCode).to.equal(201); + expect(response.resource?.id).to.equal( + mockValues.mockCreatedResource.id + ); + }); + + it("should return error 400 (Bad Request) for postLimitedPartnershipIncorporation method", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpPost") + .resolves(mockValues.mockPostLimitedPartnershipIncorporationResponse[400]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.postLimitedPartnershipIncorporation( + mockValues.TRANSACTION_ID + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/incorporation/limited-partnership" + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(400); + expect(response.resource.error).to.equal(mockValues.BAD_REQUEST); + }); + + it("should return error 401 (Unauthorised) for postLimitedPartnershipIncorporation method", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpPost") + .resolves(mockValues.mockPostLimitedPartnershipIncorporationResponse[401]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.postLimitedPartnershipIncorporation( + mockValues.TRANSACTION_ID + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/incorporation/limited-partnership" + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(401); + expect(response.resource.error).to.equal(mockValues.UNAUTHORISED); + }); }); - it("should return error 401 (Unauthorised)", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpGet") - .resolves(mockValues.mockGetLimitedPartnershipResponse[401]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - const response = (await service.getLimitedPartnership( - mockValues.TRANSACTION_ID, - mockValues.SUBMISSION_ID - )) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/limited-partnership/partnership/09876" - ) - ).to.be.true; - - expect(response.httpStatusCode).to.equal(401); - expect(response.resource.error).to.equal(mockValues.UNAUTHORISED); - }); - - it("should return error 404 (Not Found)", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpGet") - .resolves(mockValues.mockGetLimitedPartnershipResponse[404]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - const response = (await service.getLimitedPartnership( - mockValues.TRANSACTION_ID, - "wrong-id" - )) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/limited-partnership/partnership/wrong-id" - ) - ).to.be.true; - - expect(response.httpStatusCode).to.equal(404); - expect(response.resource.error).to.equal(mockValues.NOT_FOUND); + describe("getLimitedPartnershipIncorporation", () => { + it("should return a status 200 and the limitedPartnershipIncorporation object no query no sub resources", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpGet") + .resolves(mockValues.mockGetLimitedPartnershipIncorporationResponse[200]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + + const response = await service.getLimitedPartnershipIncorporation( + mockValues.TRANSACTION_ID, + mockValues.FILE_RESOURCE_ID + ) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/incorporation/limited-partnership/a1b2c3" + ) + ).to.be.true; + expect(response.httpStatusCode).to.equal(200); + expect(response?.resource).to.eql(mockValues.LIMITED_PARTNERSHIP_INCORPORATION_OBJECT_MOCK); + }); + + it("should return a status 200 and the limitedPartnershipIncorporation object false query no sub resources", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpGet") + .resolves(mockValues.mockGetLimitedPartnershipIncorporationResponse[200]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + + const response = await service.getLimitedPartnershipIncorporation( + mockValues.TRANSACTION_ID, + mockValues.FILE_RESOURCE_ID, + false + ) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/incorporation/limited-partnership/a1b2c3" + ) + ).to.be.true; + expect(response.httpStatusCode).to.equal(200); + expect(response?.resource).to.eql(mockValues.LIMITED_PARTNERSHIP_INCORPORATION_OBJECT_MOCK); + }); + + it("should return a status 200 and the limitedPartnershipIncorporation object true query returns sub resources", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpGet") + .resolves(mockValues.mockGetLimitedPartnershipIncorporationResponseWithSub[200]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + + const response = await service.getLimitedPartnershipIncorporation( + mockValues.TRANSACTION_ID, + mockValues.FILE_RESOURCE_ID, + true + ) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/incorporation/limited-partnership/a1b2c3?include_sub_resources=true" + ) + ).to.be.true; + expect(response.httpStatusCode).to.equal(200); + expect(response?.resource).to.eql(mockValues.LIMITED_PARTNERSHIP_INCORPORATION_OBJECT_MOCK_WITH_SUB); + }); + + it("should return error 401 (Unauthorised)", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpGet") + .resolves(mockValues.mockGetLimitedPartnershipIncorporationResponse[401]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.getLimitedPartnershipIncorporation( + mockValues.TRANSACTION_ID, + mockValues.FILE_RESOURCE_ID + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/incorporation/limited-partnership/a1b2c3" + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(401); + expect(response.resource.error).to.equal(mockValues.UNAUTHORISED); + }); + + it("should return error 404 (Not Found)", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpGet") + .resolves(mockValues.mockGetLimitedPartnershipIncorporationResponse[404]); + + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.getLimitedPartnershipIncorporation( + mockValues.TRANSACTION_ID, + "wrong-id" + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/incorporation/limited-partnership/wrong-id" + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(404); + expect(response.resource.error).to.equal(mockValues.NOT_FOUND); + }); }); }) - describe("postLimitedPartnershipIncorporation", () => { - it("should return object Id for postLimitedPartnershipIncorporation method", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpPost") - .resolves(mockValues.mockPostLimitedPartnershipIncorporationResponse[201]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - const response = (await service.postLimitedPartnershipIncorporation( - mockValues.TRANSACTION_ID - )) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/incorporation/limited-partnership" - ) - ).to.be.true; - expect(response.httpStatusCode).to.equal(201); - expect(response.resource?.id).to.equal( - mockValues.mockLimitedPartnershipCreatedResource.id - ); - }); - - it("should return error 400 (Bad Request) for postLimitedPartnershipIncorporation method", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpPost") - .resolves(mockValues.mockPostLimitedPartnershipIncorporationResponse[400]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - const response = (await service.postLimitedPartnershipIncorporation( - mockValues.TRANSACTION_ID - )) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/incorporation/limited-partnership" - ) - ).to.be.true; - - expect(response.httpStatusCode).to.equal(400); - expect(response.resource.error).to.equal(mockValues.BAD_REQUEST); - }); - - it("should return error 401 (Unauthorised) for postLimitedPartnershipIncorporation method", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpPost") - .resolves(mockValues.mockPostLimitedPartnershipIncorporationResponse[401]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - const response = (await service.postLimitedPartnershipIncorporation( - mockValues.TRANSACTION_ID - )) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/incorporation/limited-partnership" - ) - ).to.be.true; - - expect(response.httpStatusCode).to.equal(401); - expect(response.resource.error).to.equal(mockValues.UNAUTHORISED); - }); - }); - - describe("getLimitedPartnershipIncorporation", () => { - it("should return a status 200 and the limitedPartnershipIncorporation object no query no sub resources", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpGet") - .resolves(mockValues.mockGetLimitedPartnershipIncorporationResponse[200]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - - const response = await service.getLimitedPartnershipIncorporation( - mockValues.TRANSACTION_ID, - mockValues.FILE_RESOURCE_ID - ) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/incorporation/limited-partnership/a1b2c3" - ) - ).to.be.true; - expect(response.httpStatusCode).to.equal(200); - expect(response?.resource).to.eql(mockValues.LIMITED_PARTNERSHIP_INCORPORATION_OBJECT_MOCK); - }); - - it("should return a status 200 and the limitedPartnershipIncorporation object false query no sub resources", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpGet") - .resolves(mockValues.mockGetLimitedPartnershipIncorporationResponse[200]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - - const response = await service.getLimitedPartnershipIncorporation( - mockValues.TRANSACTION_ID, - mockValues.FILE_RESOURCE_ID, - false - ) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/incorporation/limited-partnership/a1b2c3" - ) - ).to.be.true; - expect(response.httpStatusCode).to.equal(200); - expect(response?.resource).to.eql(mockValues.LIMITED_PARTNERSHIP_INCORPORATION_OBJECT_MOCK); - }); - - it("should return a status 200 and the limitedPartnershipIncorporation object true query returns sub resources", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpGet") - .resolves(mockValues.mockGetLimitedPartnershipIncorporationResponseWithSub[200]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - - const response = await service.getLimitedPartnershipIncorporation( - mockValues.TRANSACTION_ID, - mockValues.FILE_RESOURCE_ID, - true - ) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/incorporation/limited-partnership/a1b2c3?include_sub_resources=true" - ) - ).to.be.true; - expect(response.httpStatusCode).to.equal(200); - expect(response?.resource).to.eql(mockValues.LIMITED_PARTNERSHIP_INCORPORATION_OBJECT_MOCK_WITH_SUB); - }); - - it("should return error 401 (Unauthorised)", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpGet") - .resolves(mockValues.mockGetLimitedPartnershipIncorporationResponse[401]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - const response = (await service.getLimitedPartnershipIncorporation( - mockValues.TRANSACTION_ID, - mockValues.FILE_RESOURCE_ID - )) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/incorporation/limited-partnership/a1b2c3" - ) - ).to.be.true; - - expect(response.httpStatusCode).to.equal(401); - expect(response.resource.error).to.equal(mockValues.UNAUTHORISED); - }); - - it("should return error 404 (Not Found)", async () => { - const mockRequest = sinon - .stub(mockValues.requestClient, "httpGet") - .resolves(mockValues.mockGetLimitedPartnershipIncorporationResponse[404]); - - const service = new LimitedPartnershipsService( - mockValues.requestClient - ); - const response = (await service.getLimitedPartnershipIncorporation( - mockValues.TRANSACTION_ID, - "wrong-id" - )) as Resource; - - expect(mockRequest).to.have.been.calledOnce; - expect( - mockRequest.calledWith( - "/transactions/12345/incorporation/limited-partnership/wrong-id" - ) - ).to.be.true; - - expect(response.httpStatusCode).to.equal(404); - expect(response.resource.error).to.equal(mockValues.NOT_FOUND); - }); + describe("GeneralPartner", () => { + describe("postGeneralPartner", () => { + it("should return object Id for postGeneralPartner method", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpPost") + .resolves(mockValues.mockPostGeneralPartnerResponse[201]); + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.postGeneralPartner( + mockValues.TRANSACTION_ID, + mockValues.GENERAL_PARTNER_OBJECT_MOCK + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/limited-partnership/general-partner", + mockValues.GENERAL_PARTNER_OBJECT_MOCK + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(201); + expect(response.resource?.id).to.equal( + mockValues.mockCreatedResource.id + ); + }); + + it("should return error 400 (Bad Request)", async () => { + const mockRequest = sinon + .stub(mockValues.requestClient, "httpPost") + .resolves(mockValues.mockPostGeneralPartnerResponse[400]); + const service = new LimitedPartnershipsService( + mockValues.requestClient + ); + const response = (await service.postGeneralPartner( + mockValues.TRANSACTION_ID, + {} + )) as Resource; + + expect(mockRequest).to.have.been.calledOnce; + expect( + mockRequest.calledWith( + "/transactions/12345/limited-partnership/general-partner", + {} + ) + ).to.be.true; + + expect(response.httpStatusCode).to.equal(400); + }); + }) }); }); From 0c497519df75b4c43a0cceafb9028c67d40a1eb4 Mon Sep 17 00:00:00 2001 From: vschot Date: Fri, 21 Feb 2025 16:18:41 +0000 Subject: [PATCH 2/5] LP-537 Undo refactoring of names --- src/services/limited-partnerships/service.ts | 8 ++++---- src/services/limited-partnerships/types.ts | 2 +- .../limited.partnerships.mock.ts | 10 +++++----- .../limited.partnerships.spec.ts | 16 ++++++++-------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/services/limited-partnerships/service.ts b/src/services/limited-partnerships/service.ts index 95f434ce..b872e83d 100644 --- a/src/services/limited-partnerships/service.ts +++ b/src/services/limited-partnerships/service.ts @@ -1,5 +1,5 @@ import { HttpResponse, IHttpClient } from "../../http"; -import { LimitedPartnership, ResourceCreated, LimitedPartnershipIncorporation, GeneralPartner } from "./types"; +import { LimitedPartnership, LimitedPartnershipResourceCreated, LimitedPartnershipIncorporation, GeneralPartner } from "./types"; import Resource, { ApiErrorResponse } from "../resource"; export default class LimitedPartnershipsService { @@ -8,7 +8,7 @@ export default class LimitedPartnershipsService { public async postLimitedPartnership ( transactionId: string, body: LimitedPartnership - ): Promise | ApiErrorResponse> { + ): Promise | ApiErrorResponse> { const URL = `/transactions/${transactionId}/limited-partnership/partnership`; const response: HttpResponse = await this.client.httpPost(URL, body); @@ -50,7 +50,7 @@ export default class LimitedPartnershipsService { */ public async postLimitedPartnershipIncorporation ( - transactionId: string): Promise | ApiErrorResponse> { + transactionId: string): Promise | ApiErrorResponse> { const URL = `/transactions/${transactionId}/incorporation/limited-partnership`; const response: HttpResponse = await this.client.httpPost(URL); @@ -81,7 +81,7 @@ export default class LimitedPartnershipsService { public async postGeneralPartner ( transactionId: string, - body: GeneralPartner): Promise | ApiErrorResponse> { + body: GeneralPartner): Promise | ApiErrorResponse> { const URL = `/transactions/${transactionId}/limited-partnership/general-partner`; const response: HttpResponse = await this.client.httpPost(URL, body); diff --git a/src/services/limited-partnerships/types.ts b/src/services/limited-partnerships/types.ts index d05f9e3c..3d5f50d1 100644 --- a/src/services/limited-partnerships/types.ts +++ b/src/services/limited-partnerships/types.ts @@ -57,7 +57,7 @@ export interface GeneralPartner { * The data structure returned by the API when a new Limited Partnership resource has * successfully been created. */ -export interface ResourceCreated { +export interface LimitedPartnershipResourceCreated { id: string; } diff --git a/test/services/limited-partnerships/limited.partnerships.mock.ts b/test/services/limited-partnerships/limited.partnerships.mock.ts index 94218d13..2cd12f71 100644 --- a/test/services/limited-partnerships/limited.partnerships.mock.ts +++ b/test/services/limited-partnerships/limited.partnerships.mock.ts @@ -1,7 +1,7 @@ import { RequestClient } from "../../../src"; import { LimitedPartnership, - ResourceCreated, + LimitedPartnershipResourceCreated, LimitedPartnershipIncorporation, NameEndingType, PartnershipType, @@ -123,14 +123,14 @@ export const UNAUTHORISED = "Unauthorised"; export const BAD_REQUEST = "Bad Request"; export const NOT_FOUND = "Not Found"; -export const mockCreatedResource: ResourceCreated = +export const mockLimitedPartnershipCreatedResource: LimitedPartnershipResourceCreated = { id: LIMITED_PARTNERSHIP_ID }; export const mockPostLimitedPartnershipResponse = { 200: { status: 200 }, - 201: { status: 201, body: mockCreatedResource }, + 201: { status: 201, body: mockLimitedPartnershipCreatedResource }, 400: { status: 400, body: { error: BAD_REQUEST } }, 401: { status: 401, body: { error: UNAUTHORISED } } }; @@ -142,7 +142,7 @@ export const mockGetLimitedPartnershipResponse = { }; export const mockPostLimitedPartnershipIncorporationResponse = { - 201: { status: 201, body: mockCreatedResource }, + 201: { status: 201, body: mockLimitedPartnershipCreatedResource }, 400: { status: 400, body: { error: BAD_REQUEST } }, 401: { status: 401, body: { error: UNAUTHORISED } } }; @@ -158,7 +158,7 @@ export const mockGetLimitedPartnershipIncorporationResponseWithSub = { } export const mockPostGeneralPartnerResponse = { - 201: { status: 201, body: mockCreatedResource }, + 201: { status: 201, body: mockLimitedPartnershipCreatedResource }, 400: { status: 400, body: { error: BAD_REQUEST } }, 401: { status: 401, body: { error: UNAUTHORISED } } }; diff --git a/test/services/limited-partnerships/limited.partnerships.spec.ts b/test/services/limited-partnerships/limited.partnerships.spec.ts index 5a9b1519..fd6bbdc4 100644 --- a/test/services/limited-partnerships/limited.partnerships.spec.ts +++ b/test/services/limited-partnerships/limited.partnerships.spec.ts @@ -5,7 +5,7 @@ import sinon from "sinon"; import * as mockValues from "./limited.partnerships.mock"; import { LimitedPartnership, - ResourceCreated, + LimitedPartnershipResourceCreated, LimitedPartnershipsService, LimitedPartnershipIncorporation, NameEndingType @@ -42,7 +42,7 @@ describe("LimitedPartnershipsService", () => { partnership_type: mockValues.LIMITED_PARTNERSHIP_OBJECT_MOCK.data?.partnership_type } } - )) as Resource; + )) as Resource; expect(mockRequest).to.have.been.calledOnce; expect( @@ -60,7 +60,7 @@ describe("LimitedPartnershipsService", () => { expect(response.httpStatusCode).to.equal(201); expect(response.resource?.id).to.equal( - mockValues.mockCreatedResource.id + mockValues.mockLimitedPartnershipCreatedResource.id ); }); @@ -260,7 +260,7 @@ describe("LimitedPartnershipsService", () => { ); const response = (await service.postLimitedPartnershipIncorporation( mockValues.TRANSACTION_ID - )) as Resource; + )) as Resource; expect(mockRequest).to.have.been.calledOnce; expect( @@ -270,7 +270,7 @@ describe("LimitedPartnershipsService", () => { ).to.be.true; expect(response.httpStatusCode).to.equal(201); expect(response.resource?.id).to.equal( - mockValues.mockCreatedResource.id + mockValues.mockLimitedPartnershipCreatedResource.id ); }); @@ -458,7 +458,7 @@ describe("LimitedPartnershipsService", () => { const response = (await service.postGeneralPartner( mockValues.TRANSACTION_ID, mockValues.GENERAL_PARTNER_OBJECT_MOCK - )) as Resource; + )) as Resource; expect(mockRequest).to.have.been.calledOnce; expect( @@ -470,7 +470,7 @@ describe("LimitedPartnershipsService", () => { expect(response.httpStatusCode).to.equal(201); expect(response.resource?.id).to.equal( - mockValues.mockCreatedResource.id + mockValues.mockLimitedPartnershipCreatedResource.id ); }); @@ -484,7 +484,7 @@ describe("LimitedPartnershipsService", () => { const response = (await service.postGeneralPartner( mockValues.TRANSACTION_ID, {} - )) as Resource; + )) as Resource; expect(mockRequest).to.have.been.calledOnce; expect( From ceeac6a41e7431207138482e8effaff1cda6d59a Mon Sep 17 00:00:00 2001 From: vschot Date: Tue, 25 Feb 2025 10:35:23 +0000 Subject: [PATCH 3/5] LP-537 Removed care_of and po_box fields --- src/services/limited-partnerships/types.ts | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/services/limited-partnerships/types.ts b/src/services/limited-partnerships/types.ts index 3d5f50d1..2bb19932 100644 --- a/src/services/limited-partnerships/types.ts +++ b/src/services/limited-partnerships/types.ts @@ -35,21 +35,12 @@ export interface GeneralPartner { nationality1?: string, nationality2?: string, not_disqualified_statement_checked?: boolean, - principal_office_address?: Address & { - care_of?: string, - po_box?: string - }, + principal_office_address?: Address, registered_company_number?: string, resignation_date?: string, - service_address?: Address & { - care_of?: string, - po_box?: string, - }, + service_address?: Address, surname?: string, - usual_residential_address?: Address & { - care_of?: string, - po_box?: string, - } + usual_residential_address?: Address } } From a8dc602cad3c3c5e9fb5db30c1625548b81bb439 Mon Sep 17 00:00:00 2001 From: vschot Date: Tue, 25 Feb 2025 10:40:53 +0000 Subject: [PATCH 4/5] LP-537 also removed from mock --- .../limited.partnerships.mock.ts | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/test/services/limited-partnerships/limited.partnerships.mock.ts b/test/services/limited-partnerships/limited.partnerships.mock.ts index 2cd12f71..6670ba89 100644 --- a/test/services/limited-partnerships/limited.partnerships.mock.ts +++ b/test/services/limited-partnerships/limited.partnerships.mock.ts @@ -68,9 +68,7 @@ export const GENERAL_PARTNER_OBJECT_MOCK: GeneralPartner = { locality: "Some Locality", region: "Some Region", country: "Some Country", - postal_code: "SC12 1WE", - care_of: "", - po_box: "" + postal_code: "SC12 1WE" }, registered_company_number: "223456", resignation_date: "", @@ -81,9 +79,7 @@ export const GENERAL_PARTNER_OBJECT_MOCK: GeneralPartner = { locality: "This Locality", region: "This Region", country: "This Country", - postal_code: "SC45 1XF", - care_of: "", - po_box: "" + postal_code: "SC45 1XF" }, surname: "Doe", usual_residential_address: { @@ -93,9 +89,7 @@ export const GENERAL_PARTNER_OBJECT_MOCK: GeneralPartner = { locality: "That Locality", region: "That Region", country: "That Country", - postal_code: "SC15 1N2", - care_of: "", - po_box: "" + postal_code: "SC15 1N2" } } } From b950f749507a73921469b6059e96715173e2dbb4 Mon Sep 17 00:00:00 2001 From: vschot Date: Thu, 27 Feb 2025 10:17:17 +0000 Subject: [PATCH 5/5] LP-537 Remove internal_id --- src/services/limited-partnerships/types.ts | 1 - test/services/limited-partnerships/limited.partnerships.mock.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/src/services/limited-partnerships/types.ts b/src/services/limited-partnerships/types.ts index 2bb19932..330c7af2 100644 --- a/src/services/limited-partnerships/types.ts +++ b/src/services/limited-partnerships/types.ts @@ -27,7 +27,6 @@ export interface GeneralPartner { forename?: string, former_names?: string, governing_law?: string, - internal_id?: string, kind?: string, legal_entity_register_name?: string, legal_entity_registration_location?: string, diff --git a/test/services/limited-partnerships/limited.partnerships.mock.ts b/test/services/limited-partnerships/limited.partnerships.mock.ts index 6670ba89..60203b10 100644 --- a/test/services/limited-partnerships/limited.partnerships.mock.ts +++ b/test/services/limited-partnerships/limited.partnerships.mock.ts @@ -53,7 +53,6 @@ export const GENERAL_PARTNER_OBJECT_MOCK: GeneralPartner = { forename: "John", former_names: "Mary", governing_law: "British Government", - internal_id: "123456", kind: "", legal_entity_register_name: "Entity Name", legal_entity_registration_location: "UK",