diff --git a/src/layouts/tpa-search/__snapshots__/tpa-search.spec.js.snap b/src/layouts/tpa-search/__snapshots__/tpa-search.spec.js.snap index fc429c1b..5f9f27f5 100644 --- a/src/layouts/tpa-search/__snapshots__/tpa-search.spec.js.snap +++ b/src/layouts/tpa-search/__snapshots__/tpa-search.spec.js.snap @@ -5,24 +5,10 @@ Object { "additionalButtonData": Object { "displayAvailabilityIndicators": false, }, + "dataLoaded": false, "filter": "", - "initialLoading": false, "mapZipCode": "12663", "providers": Array [], - "radiusFilterPairs": Array [ - Object { - "filter": "25 miles", - "radius": 25, - }, - Object { - "filter": "50 miles", - "radius": 50, - }, - Object { - "filter": "100 miles", - "radius": 100, - }, - ], "reloadProviders": false, "rules": Object { "filter": "option-required", diff --git a/src/layouts/tpa-search/tpa-search.spec.js b/src/layouts/tpa-search/tpa-search.spec.js index ccc056ec..de95fdb8 100644 --- a/src/layouts/tpa-search/tpa-search.spec.js +++ b/src/layouts/tpa-search/tpa-search.spec.js @@ -150,18 +150,7 @@ describe('TPA search page', () => { // Assert expect(providerSelectionForm.exists()).toBeTruthy(); }); - test('map loader when initialLoading is true', async () => { - // Arrange - const wrapper = shallowMount(tpaSearch, getMountOptions()); - await wrapper.setData({ initialLoading: true }); - - // Act - const mapLoader = wrapper.findComponent('#mapLoader'); - - // Assert - expect(mapLoader.exists()).toBeTruthy(); - }); - test('map when initialLoading is false', async () => { + test('map', async () => { // Arrange const zipCode = '12345'; const { wrapper } = getMountedComponent(); @@ -174,8 +163,7 @@ describe('TPA search page', () => { zipCode: '99230' } }], - mapZipCode: zipCode, - initialLoading: false + mapZipCode: zipCode }); const expectedAddresses = ['123 Lane Ave, New York, NY 99230']; @@ -188,10 +176,9 @@ describe('TPA search page', () => { expect(map.props().addresses).toEqual(expectedAddresses); expect(map.props().zipCode).toBe(zipCode); }); - test('search radius filter when initialLoading is false', async () => { + test('search radius filter', async () => { // Arrange const wrapper = shallowMount(tpaSearch, getMountOptions()); - await wrapper.setData({ initialLoading: false }); const expectedWidgetName = 'FilterByQuestion'; // Act @@ -202,10 +189,10 @@ describe('TPA search page', () => { expect(searchRadiusFilter.props().cmsWidgetName).toBe(expectedWidgetName); expect(searchRadiusFilter.props().validationRules).toBe(globalRules.OPTION_REQUIRED); }); - test('providers loader when initialLoading is false and reloadProviders is true', async () => { + test('providers loader when reloadProviders is true', async () => { // Arrange const wrapper = shallowMount(tpaSearch, getMountOptions()); - await wrapper.setData({ initialLoading: false, reloadProviders: true }); + await wrapper.setData({ reloadProviders: true }); // Act const providersLoader = wrapper.findComponent('#providersLoader'); @@ -213,7 +200,7 @@ describe('TPA search page', () => { // Assert expect(providersLoader.exists()).toBeTruthy(); }); - test('select provider question when initialLoading and reloadProviders are false', async () => { + test('select provider question when reloadProviders are false', async () => { // Arrange const wrapper = shallowMount(tpaSearch, getMountOptions()); await wrapper.setData({ @@ -229,7 +216,6 @@ describe('TPA search page', () => { zipCode: '99230' } }], - initialLoading: false, reloadProviders: false }); const expectedAnswers = [{ @@ -257,17 +243,14 @@ describe('TPA search page', () => { expect(selectProviderQuestion.props().additionalButtonData).toEqual(expectedAdditionalButtonData); }); test.each([[], null, undefined])( - 'no network providers alert when providers length is 0, undefined, or null and initialLoading and reloadProviders are false', + 'no network providers alert when providers length is 0, undefined, or null and reloadProviders is false', async (providers) => { // Arrange const initialData = { providers }; const wrapper = shallowMount(tpaSearch, getMountOptions({}, initialData)); - await wrapper.setData({ - initialLoading: false, - reloadProviders: false - }); + await wrapper.setData({ reloadProviders: false }); // Act const noNetworkProvidersAlert = wrapper.findComponent('#alertNoNetworkProviders'); @@ -279,13 +262,10 @@ describe('TPA search page', () => { expect(noNetworkProvidersAlert.props().isDismissible).toBeFalsy(); } ); - test('preferred shop not listed link when initialLoading and reloadProviders are false', async () => { + test('preferred shop not listed link when reloadProviders is false', async () => { // Arrange const wrapper = shallowMount(tpaSearch, getMountOptions()); - await wrapper.setData({ - initialLoading: false, - reloadProviders: false - }); + await wrapper.setData({ reloadProviders: false }); // Act const preferredShopNotListedLink = wrapper.findComponent('#preferredShopNotListedLink'); @@ -308,62 +288,16 @@ describe('TPA search page', () => { }); }); describe('should not render', () => { - test('map loader when initialLoading is false', async () => { - // Arrange - const wrapper = shallowMount(tpaSearch, getMountOptions()); - await wrapper.setData({ initialLoading: false }); - - // Act - const mapLoader = wrapper.findComponent('#mapLoader'); - - // Assert - expect(mapLoader.exists()).toBeFalsy(); - }); - test('map when initialLoading is true', async () => { + test('select provider question when reloadProviders is true', async () => { // Arrange const { wrapper } = getMountedComponent(); - await wrapper.setData({ initialLoading: true }); + await wrapper.setData({ reloadProviders: true }); // Act - const map = wrapper.findComponent('#map'); + const selectProviderQuestion = wrapper.findComponent('#selectProviderQuestion'); // Assert - expect(map.exists()).toBeFalsy(); - }); - test('search radius filter when initialLoading is true', async () => { - // Arrange - const { wrapper } = getMountedComponent(); - await wrapper.setData({ initialLoading: true }); - - // Act - const searchRadiusFilter = wrapper.findComponent('#searchRadiusFilter'); - - // Assert - expect(searchRadiusFilter.exists()).toBeFalsy(); - }); - describe('select provider question', () => { - test('when initialLoading is true', async () => { - // Arrange - const { wrapper } = getMountedComponent(); - await wrapper.setData({ initialLoading: true }); - - // Act - const selectProviderQuestion = wrapper.findComponent('#selectProviderQuestion'); - - // Assert - expect(selectProviderQuestion.exists()).toBeFalsy(); - }); - test('when reloadProviders is true', async () => { - // Arrange - const { wrapper } = getMountedComponent(); - await wrapper.setData({ reloadProviders: true }); - - // Act - const selectProviderQuestion = wrapper.findComponent('#selectProviderQuestion'); - - // Assert - expect(selectProviderQuestion.exists()).toBeFalsy(); - }); + expect(selectProviderQuestion.exists()).toBeFalsy(); }); describe('no network providers alert', () => { test('when providers length is not 0', async () => { @@ -377,17 +311,6 @@ describe('TPA search page', () => { // Assert expect(noNetworkProvidersAlert.exists()).toBeFalsy(); }); - test('when initialLoading is true', async () => { - // Arrange - const wrapper = shallowMount(tpaSearch, getMountOptions()); - await wrapper.setData({ providers: [], initialLoading: true }); - - // Act - const noNetworkProvidersAlert = wrapper.findComponent('#alertNoNetworkProviders'); - - // Assert - expect(noNetworkProvidersAlert.exists()).toBeFalsy(); - }); test('when reloadProviders is true', async () => { // Arrange const wrapper = shallowMount(tpaSearch, getMountOptions()); @@ -400,29 +323,16 @@ describe('TPA search page', () => { expect(noNetworkProvidersAlert.exists()).toBeFalsy(); }); }); - describe('preferred shop not listed link', () => { - test('when initialLoading is true', async () => { - // Arrange - const { wrapper } = getMountedComponent(); - await wrapper.setData({ initialLoading: true }); + test('preferred shop not listed link when reloadProviders is true', async () => { + // Arrange + const { wrapper } = getMountedComponent(); + await wrapper.setData({ reloadProviders: true }); - // Act - const preferredShopNotListedLink = wrapper.findComponent('#preferredShopNotListedLink'); + // Act + const preferredShopNotListedLink = wrapper.findComponent('#preferredShopNotListedLink'); - // Assert - expect(preferredShopNotListedLink.exists()).toBeFalsy(); - }); - test('when reloadProviders is true', async () => { - // Arrange - const { wrapper } = getMountedComponent(); - await wrapper.setData({ reloadProviders: true }); - - // Act - const preferredShopNotListedLink = wrapper.findComponent('#preferredShopNotListedLink'); - - // Assert - expect(preferredShopNotListedLink.exists()).toBeFalsy(); - }); + // Assert + expect(preferredShopNotListedLink.exists()).toBeFalsy(); }); }); describe('computed', () => { @@ -835,15 +745,16 @@ describe('TPA search page', () => { }); describe('watch', () => { // TODO update/add to filter watch tests - test('on filter calls getTpaProviders and sets providers', async () => { + test.only('on filter calls getTpaProviders and sets providers', async () => { // Arrange const zipCode = '78220'; const initialMapZipCode = '88800'; const { wrapper } = getMountedComponent({}, { zipCode, - mapZipCode: initialMapZipCode + mapZipCode: initialMapZipCode, + dataLoaded: true }); - const providers = { data: { shopProviders: ['some data', 'some more data']} }; + const providers = { data: { shopProviders: ['some data', 'some more data'] } }; useMainStore().getTpaProviders = jest.fn().mockImplementationOnce(() => (providers)); const newFilter = 'new filter'; @@ -855,6 +766,50 @@ describe('TPA search page', () => { expect(wrapper.vm.providers).toEqual(providers.data.shopProviders); expect(wrapper.vm.mapZipCode).toBe(zipCode); }); + describe('on filter', () => { + test('calls getTpaProviders once and sets providers when dataLoaded is true', async () => { + // Arrange + const zipCode = '78220'; + const initialMapZipCode = '88800'; + const { wrapper } = getMountedComponent({}, { + zipCode, + mapZipCode: initialMapZipCode, + dataLoaded: true + }); + const providers = { data: { shopProviders: ['some data', 'some more data'] } }; + useMainStore().getTpaProviders = jest.fn().mockImplementationOnce(() => (providers)); + const newFilter = 'new filter'; + + // Act + await wrapper.vm.$options.watch.filter.call(wrapper.vm, newFilter); + + // Assert + expect(useMainStore().getTpaProviders).toBeCalled(); + expect(wrapper.vm.providers).toEqual(providers.data.shopProviders); + expect(wrapper.vm.mapZipCode).toBe(zipCode); + }); + test('never calls getTpaProviders and does not set providers when dataLoaded is false', async () => { + // Arrange + const zipCode = '78220'; + const initialMapZipCode = '88800'; + const { wrapper } = getMountedComponent({}, { + zipCode, + mapZipCode: initialMapZipCode, + dataLoaded: false + }); + const providers = { data: { shopProviders: ['some data', 'some more data'] } }; + useMainStore().getTpaProviders = jest.fn().mockImplementationOnce(() => (providers)); + const newFilter = 'new filter'; + + // Act + await wrapper.vm.$options.watch.filter.call(wrapper.vm, newFilter); + + // Assert + expect(useMainStore().getTpaProviders).not.toBeCalled(); + expect(wrapper.vm.providers).not.toEqual(providers.data.shopProviders); + expect(wrapper.vm.mapZipCode).toBe(initialMapZipCode); + }); + }); // TODO confirm tests appropriate. Also should this method be async? describe('on providers', () => { test.each([null, undefined, []])( @@ -897,10 +852,10 @@ describe('TPA search page', () => { }); describe('method', () => { test.each([ - ['address', 'city', 'ST', 'zip', 'address, city, ST zip'], - ['address', null, 'ST', 'zip', 'address, ST zip'], - ['address', 'city', null, 'zip', 'address, city zip'], - ['address', 'city', 'ST', null, 'address, city, ST'], + ['address', 'city', 'ST', 'zip', 'Address, City, ST zip'], + ['address', null, 'ST', 'zip', 'Address, ST zip'], + ['address', 'city', null, 'zip', 'Address, City zip'], + ['address', 'city', 'ST', null, 'Address, City, ST'], [null, null, null, null, ''] ])( 'getProviderAddress returns expected', diff --git a/src/layouts/tpa-search/tpa-search.vue b/src/layouts/tpa-search/tpa-search.vue index 5b7d84fc..f35ee59f 100644 --- a/src/layouts/tpa-search/tpa-search.vue +++ b/src/layouts/tpa-search/tpa-search.vue @@ -37,13 +37,6 @@ -