Updating tests for getTpaProviders

This commit is contained in:
Michaela Brydon 2023-11-28 16:45:12 -05:00
parent 7a9edc3e8a
commit cdac218b41

View file

@ -1964,123 +1964,98 @@ describe('Store', () => {
describe('getTpaProviders method', () => { describe('getTpaProviders method', () => {
describe('successful method call', () => { describe('successful method call', () => {
it('calls getProviders api endpoint', async () => { it.each([[true, 'Repair'], [false, 'Replace']])(
// Arrange 'calls getProviders api endpoint',
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); async (isRepair, damageType) => {
// Arrange
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({}));
// Act const parentAccountNumber = getRandomString(6, 6);
await store.getCoveragePolicyInfo(); 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 // Act
expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ await store.getTpaProviders(zipCode, radius);
method: endpoints.CoveragePolicyInfo.method,
endpoint: endpoints.CoveragePolicyInfo.url // Asserts
})); expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({
}); method: endpoints.GetProviders.method,
endpoint: expectedEndpoint
}));
}
);
it('Returns expected response object', async () => { it('Returns expected response object', async () => {
// Arrange // Arrange
const response = { ReferralNumber: getRandomString(6, 6) }; const response = { ReferralNumber: getRandomString(6, 6) };
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(response)); globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(response));
const zipCode = getRandomString(6, 6);
const radius = getRandomInt(5, 100);
// Act // Act
const result = store.getCoveragePolicyInfo(); const result = store.getTpaProviders(zipCode, radius);
// Asserts // Asserts
await expect(result).resolves.toBe(response); 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 () => { it('null response by api => no exceptions thrown', async () => {
// Arrange // Arrange
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(null)); globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(null));
const zipCode = getRandomString(6, 6);
const radius = getRandomInt(5, 100);
// Act // Act
await store.getCoveragePolicyInfo(); await store.getTpaProviders(zipCode, radius);
// Asserts
expect(store.order.policy.policyLookupSuccessful).toBe(false);
}); });
it('no providers returned by api => promise resolves to empty list', async () => { it('no providers returned by api => promise resolves to empty list', async () => {
// Arrange // Arrange
const responseNoPolicies = { const responseNoProviders = {
data: { 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 // Act
await store.getCoveragePolicyInfo(); const result = await store.getTpaProviders(zipCode, radius);
// Asserts // 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 () => { it('multiple providers returned by api => promise resolves to expected', async () => {
// Arrange // Arrange
const insured = { const provider1 = {
address: getRandomString(6, 6), companyName: getRandomString(6, 6)
firstName: getRandomString(6, 6),
lastName: getRandomString(6, 6),
city: getRandomString(6, 6),
state: getRandomString(6, 6),
zipCode: getRandomString(6, 6)
}; };
const vehicles = [ const provider2 = {
{ name: getRandomString(6, 6) }, companyName: getRandomString(6, 6)
{ name: getRandomString(6, 6) }
];
const policy1 = {
insureds: [insured],
vehicles
}; };
const responseNoPolicies = {
const responseProviders = {
data: { data: {
policies: [policy1, {}] shopProviders: [provider1, provider2]
} }
}; };
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(responseNoPolicies)); globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(responseProviders));
// Act // Act
await store.getCoveragePolicyInfo(); const result = await store.getTpaProviders();
// Asserts // Asserts
expect(store.order.policy.policyLookupSuccessful).toBe(true); expect(result.data.shopProviders).toHaveLength(2);
expect(result.data.shopProviders[0]).toBe(provider1);
expect(store.order.customer.address.streetAddress).toBe(insured.address); expect(result.data.shopProviders[1]).toBe(provider2);
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);
}); });
}); });
it('api call throws exception => policyLookupSuccessful false', async () => { it('api call throws exception => policyLookupSuccessful false', async () => {