Fixing existing tests

This commit is contained in:
Michaela Brydon 2023-11-14 11:48:14 -05:00
parent 9d0f1a028a
commit 6005424f9a
5 changed files with 106 additions and 49 deletions

View file

@ -0,0 +1,8 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Google Maps should render expected initial data 1`] = `
Object {
"country": "USA",
"geocoder": null,
}
`;

View file

@ -0,0 +1,27 @@
import { shallowMount } from '@vue/test-utils';
import googleMap from '@/iss-components/google-map/google-map.vue';
describe('Google Maps', () => {
describe('should render', () => {
test('expected initial data', async () => {
// Arrange
const wrapper = shallowMount(googleMap, {});
await wrapper.vm.$nextTick();
// Assert
expect(wrapper.vm.$data).toMatchSnapshot();
});
test('map', () => {
// Arrange
const mapReference = '#map';
const wrapper = shallowMount(googleMap, {});
// await wrapper.vm.$nextTick();
// Act
const map = wrapper.find(mapReference);
// Assert
expect(map.exists()).toBeTruthy();
});
});
});

View file

@ -6,6 +6,7 @@ Object {
"displayAvailabilityIndicators": false,
},
"filter": "",
"mapZipCode": "12663",
"providers": Array [],
"rules": Object {
"filter": "option-required",

View file

@ -44,7 +44,7 @@ function getMountedComponent(mainInitialState = {}, initialData = {}, methodToRu
fetchCmsContentForPage.mockImplementation(() => Promise.resolve());
const wrapper = shallowMount(tpaSearch, mountOptions);
wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => cmsContent);
wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => {});
wrapper.vm.setCmsContent = jest.fn();
return { wrapper };
}
@ -452,7 +452,7 @@ describe('TPA search page', () => {
test('on filter calls getTpaProviders and sets providers', async () => {
// Arrange
const { wrapper } = getMountedComponent();
const providers = { data: ['some data', 'some more data'] };
const providers = { data: { shopProviders: ['some data', 'some more data']} };
useMainStore().getTpaProviders = jest.fn().mockImplementationOnce(() => (providers));
const newFilter = 'new filter';
@ -461,7 +461,7 @@ describe('TPA search page', () => {
// Assert
expect(useMainStore().getTpaProviders).toBeCalled();
expect(wrapper.vm.providers).toEqual(providers.data);
expect(wrapper.vm.providers).toEqual(providers.data.shopProviders);
});
describe('on providers', () => {
test.each([null, undefined, []])(
@ -481,7 +481,7 @@ describe('TPA search page', () => {
// Arrange
const { wrapper } = getMountedComponent();
const value = 'some value';
const newProviders = [{ value }];
const newProviders = [{ providerNumber: value }];
// Act
wrapper.vm.$options.watch.providers.call(wrapper.vm, newProviders);
@ -503,7 +503,7 @@ describe('TPA search page', () => {
});
});
describe('method', () => {
describe('getProviders', () => {
describe('getProviderButtonData', () => {
test.each([null, undefined, {}])(
'returns empty list when getTpaProviders returns no data',
async (newProviders) => {
@ -521,14 +521,18 @@ describe('TPA search page', () => {
test('returns expected when getTpaProviders returns data', async () => {
// Arrange
const { wrapper } = getMountedComponent();
const providers = { data: [{ name: 'foo' }] };
const providers = {
data: {
shopProviders: [{ name: 'foo' }]
}
};
useMainStore().getTpaProviders = jest.fn().mockImplementationOnce(() => (providers));
// Act
const result = await wrapper.vm.getProviderButtonData();
// Assert
expect(result).toEqual(providers.data);
expect(result).toEqual(providers.data.shopProviders);
});
});
test('doNotSeeMyShopLinkClick invokes navigate method', () => {
@ -559,14 +563,16 @@ describe('TPA search page', () => {
test('returns value from getProviders', async () => {
// Arrange
const { wrapper } = getMountedComponent();
const newProviders = { data: [{ name: 'foo' }] };
useMainStore().getTpaProviders = jest.fn().mockImplementationOnce(() => (newProviders));
const shopProviders = [{ name: 'foo' }];
useMainStore().getTpaProviders = jest.fn().mockImplementationOnce(() => ({
data: { shopProviders }
}));
// Act
await wrapper.vm.searchClick();
// Assert
expect(wrapper.vm.providers).toEqual(newProviders.data);
expect(wrapper.vm.providers).toEqual(shopProviders);
});
});
test('backButtonAction invokes navigate method', () => {
@ -613,32 +619,6 @@ describe('TPA search page', () => {
expect(result).toBeNull();
});
});
test.each([undefined, null, 'some value', ''])(
'setFilter sets value of filter',
(filter) => {
// Arrange
const { wrapper } = getMountedComponent();
// Act
wrapper.vm.setFilter(filter);
// Assert
expect(wrapper.vm.filter).toEqual(filter);
}
);
test.each([undefined, null, ['some value'], []])(
'setProviders sets value of providers',
(providers) => {
// Arrange
const { wrapper } = getMountedComponent();
// Act
wrapper.vm.setProviders(providers);
// Assert
expect(wrapper.vm.providers).toEqual(providers);
}
);
});
describe('before route enter', () => {
test('when providers exist at 25 mile radius, filter is set to "25 miles" and providers set to expected', async () => {
@ -646,8 +626,9 @@ describe('TPA search page', () => {
const { wrapper } = getMountedComponent();
const zipCode = '18394';
useMainStore().order.customer.address.zipCode = zipCode;
const providers = { data: [{ name: 'provider' }] };
useMainStore().getTpaProviders = jest.fn().mockImplementation((_, radius) => (radius === 25 ? providers : []));
const providers = [{ name: 'provider' }];
useMainStore().getTpaProviders = jest.fn().mockImplementation((_, radius) =>
({ data: { shopProviders: radius === 25 ? providers : [] } }));
const expectedFilter = '25 miles';
// Act
@ -658,6 +639,9 @@ describe('TPA search page', () => {
(c) => c(wrapper.vm)
);
await wrapper.vm.$nextTick();
await wrapper.vm.$nextTick();
// Assert
expect(wrapper.vm.filter).toBe(expectedFilter);
expect(wrapper.vm.providers).toEqual(providers);
@ -667,8 +651,9 @@ describe('TPA search page', () => {
const { wrapper } = getMountedComponent();
const zipCode = '18394';
useMainStore().order.customer.address.zipCode = zipCode;
const providers = { data: [{ name: 'provider' }] };
useMainStore().getTpaProviders = jest.fn().mockImplementation((_, radius) => (radius === 50 ? providers : []));
const providers = [{ name: 'provider' }];
useMainStore().getTpaProviders = jest.fn().mockImplementation((_, radius) =>
({ data: { shopProviders: radius === 50 ? providers : [] } }));
const expectedFilter = '50 miles';
// Act
@ -679,6 +664,9 @@ describe('TPA search page', () => {
(c) => c(wrapper.vm)
);
await wrapper.vm.$nextTick();
await wrapper.vm.$nextTick();
// Assert
expect(wrapper.vm.filter).toBe(expectedFilter);
expect(wrapper.vm.providers).toEqual(providers);
@ -690,8 +678,9 @@ describe('TPA search page', () => {
const { wrapper } = getMountedComponent();
const zipCode = '18394';
useMainStore().order.customer.address.zipCode = zipCode;
const providers = { data: [{ name: 'provider' }] };
useMainStore().getTpaProviders = jest.fn().mockImplementation((_, radius) => (radius === 100 ? providers : []));
const providers = [{ name: 'provider' }];
useMainStore().getTpaProviders = jest.fn().mockImplementation((_, radius) =>
({ data: { shopProviders: radius === 100 ? providers : [] } }));
const expectedFilter = '100 miles';
// Act
@ -702,6 +691,9 @@ describe('TPA search page', () => {
(c) => c(wrapper.vm)
);
await wrapper.vm.$nextTick();
await wrapper.vm.$nextTick();
// Assert
expect(wrapper.vm.filter).toBe(expectedFilter);
expect(wrapper.vm.providers).toEqual(providers);
@ -725,6 +717,9 @@ describe('TPA search page', () => {
(c) => c(wrapper.vm)
);
await wrapper.vm.$nextTick();
await wrapper.vm.$nextTick();
// Assert
expect(wrapper.vm.filter).toBe(expectedFilter);
expect(wrapper.vm.providers).toEqual([]);

View file

@ -247,8 +247,28 @@ export default {
methods:
{
getProviderAddress(provider) {
const addressLine2 = `${provider.address.city}, ${provider.address.state} ${provider.address.zipCode}`;
return `${provider.address.streetAddress}, ${addressLine2}`;
const city = provider?.address?.city ?? '';
const state = provider?.address?.state ?? '';
const zipCode = provider?.address?.zipCode ?? '';
let addressLine2 = '';
if (city) {
addressLine2 = city;
if (state || zipCode) {
addressLine2 = ', ';
}
}
if (state) {
addressLine2 += `${state}`;
if (zipCode) {
addressLine2 += ' ';
}
}
if (zipCode) {
addressLine2 += `${zipCode}`;
}
return provider?.address?.streetAddress
? `${provider.address.streetAddress}, ${addressLine2}`
: addressLine2;
},
async setInitialFilterAndProviders() {
const radiusOptions = [25, 50, 100];
@ -268,8 +288,9 @@ export default {
providers = tpaProvidersRadius100;
}
}
console.log(`radius: ${radius}`);
this.filter = radius;
this.providers = providers.data.shopProviders;
this.providers = providers?.data?.shopProviders ?? [];
},
async getProviderButtonData() {
const getTpaProvidersResult = await useMainStore().getTpaProviders(this.zipCode, this.radiusInMiles);
@ -304,13 +325,18 @@ export default {
},
getShopButtonDataFromProvider(provider) {
const { phoneNumber } = provider;
const distance = +provider.distanceInMiles.toFixed(1);
const distance = provider?.distanceInMiles
? +provider.distanceInMiles.toFixed(1)
: null;
return {
buttonLabel: provider.name,
buttonLabelSubCopy: `${distance} mi`,
buttonLabel: provider?.name ?? '',
buttonLabelSubCopy: distance == null
? ''
: `${distance} mi`,
buttonBodyCopy: `${this.getProviderAddress(provider)}<br>${phoneNumber}`,
value: provider.providerNumber
value: provider?.providerNumber ?? ''
};
}
}