Updating tests for getTpaProviders
This commit is contained in:
parent
7a9edc3e8a
commit
cdac218b41
1 changed files with 53 additions and 78 deletions
|
|
@ -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 () => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue