From cdac218b41fa3769ce74a8a5abee52cd9a40f507 Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Tue, 28 Nov 2023 16:45:12 -0500 Subject: [PATCH] Updating tests for getTpaProviders --- src/store/store.spec.js | 131 ++++++++++++++++------------------------ 1 file changed, 53 insertions(+), 78 deletions(-) diff --git a/src/store/store.spec.js b/src/store/store.spec.js index f1384826..66758cd5 100644 --- a/src/store/store.spec.js +++ b/src/store/store.spec.js @@ -1964,123 +1964,98 @@ describe('Store', () => { describe('getTpaProviders method', () => { describe('successful method call', () => { - it('calls getProviders api endpoint', async () => { - // Arrange - globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); + it.each([[true, 'Repair'], [false, 'Replace']])( + 'calls getProviders api endpoint', + async (isRepair, damageType) => { + // Arrange + globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); - // Act - await store.getCoveragePolicyInfo(); + const parentAccountNumber = getRandomString(6, 6); + store.issConfig.parentAccountNumber = parentAccountNumber; + store.order.damage.isRepair = isRepair; + const zipCode = getRandomString(6, 6); + const radius = getRandomInt(5, 100); + const expectedEndpoint = [ + endpoints.GetProviders.url, + zipCode, + damageType, + radius, + parentAccountNumber, + 'false' + ].join('/'); - // Asserts - expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ - method: endpoints.CoveragePolicyInfo.method, - endpoint: endpoints.CoveragePolicyInfo.url - })); - }); + // Act + await store.getTpaProviders(zipCode, radius); + + // Asserts + expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ + method: endpoints.GetProviders.method, + endpoint: expectedEndpoint + })); + } + ); it('Returns expected response object', async () => { // Arrange const response = { ReferralNumber: getRandomString(6, 6) }; globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(response)); + const zipCode = getRandomString(6, 6); + const radius = getRandomInt(5, 100); // Act - const result = store.getCoveragePolicyInfo(); + const result = store.getTpaProviders(zipCode, radius); // Asserts await expect(result).resolves.toBe(response); }); - it('calls api with expected data', async () => { - // Arrange - const accountNumber = getRandomString(6, 6); - const policyNumber = getRandomString(6, 6); - const dateOfLoss = getRandomString(6, 6); - const zipCode = getRandomString(6, 6); - const referralCorrelationId = getRandomString(6, 6); - store.order.accountNumber = accountNumber; - store.order.policy.policyNumber = policyNumber; - store.order.policy.dateOfLoss = dateOfLoss; - store.order.policy.policyZipCode = zipCode; - store.order.referralCorrelationId = referralCorrelationId; - globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); - - // Act - await store.getCoveragePolicyInfo(); - - // Asserts - expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ - payload: expect.objectContaining({ - accountNumber, - policyNumber, - dateOfLoss, - zipCode, - referralCorrelationId - }) - })); - }); it('null response by api => no exceptions thrown', async () => { // Arrange globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(null)); + const zipCode = getRandomString(6, 6); + const radius = getRandomInt(5, 100); // Act - await store.getCoveragePolicyInfo(); - - // Asserts - expect(store.order.policy.policyLookupSuccessful).toBe(false); + await store.getTpaProviders(zipCode, radius); }); it('no providers returned by api => promise resolves to empty list', async () => { // Arrange - const responseNoPolicies = { + const responseNoProviders = { data: { - policies: [] + shopProviders: [] } }; - globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(responseNoPolicies)); + globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(responseNoProviders)); + const zipCode = getRandomString(6, 6); + const radius = getRandomInt(5, 100); // Act - await store.getCoveragePolicyInfo(); + const result = await store.getTpaProviders(zipCode, radius); // Asserts - expect(store.order.policy.policyLookupSuccessful).toBe(false); + expect(result.data.shopProviders).toHaveLength(0); }); it('multiple providers returned by api => promise resolves to expected', async () => { // Arrange - const insured = { - address: getRandomString(6, 6), - firstName: getRandomString(6, 6), - lastName: getRandomString(6, 6), - city: getRandomString(6, 6), - state: getRandomString(6, 6), - zipCode: getRandomString(6, 6) + const provider1 = { + companyName: getRandomString(6, 6) }; - const vehicles = [ - { name: getRandomString(6, 6) }, - { name: getRandomString(6, 6) } - ]; - const policy1 = { - insureds: [insured], - vehicles + const provider2 = { + companyName: getRandomString(6, 6) }; - const responseNoPolicies = { + + const responseProviders = { data: { - policies: [policy1, {}] + shopProviders: [provider1, provider2] } }; - globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(responseNoPolicies)); + globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(responseProviders)); // Act - await store.getCoveragePolicyInfo(); + const result = await store.getTpaProviders(); // Asserts - expect(store.order.policy.policyLookupSuccessful).toBe(true); - - expect(store.order.customer.address.streetAddress).toBe(insured.address); - expect(store.order.customer.address.city).toBe(insured.city); - expect(store.order.customer.address.state).toBe(insured.state); - expect(store.order.customer.address.zipCode).toBe(insured.zipCode); - expect(store.order.customer.firstName).toBe(insured.firstName); - expect(store.order.customer.lastName).toBe(insured.lastName); - - expect(store.order.serviceLocation.zipCode).toBe(insured.zipCode); - expect(store.order.policy.vehicles).toEqual(vehicles); + expect(result.data.shopProviders).toHaveLength(2); + expect(result.data.shopProviders[0]).toBe(provider1); + expect(result.data.shopProviders[1]).toBe(provider2); }); }); it('api call throws exception => policyLookupSuccessful false', async () => {