diff --git a/apps/events-helsinki/src/domain/event/EventPageContainer.tsx b/apps/events-helsinki/src/domain/event/EventPageContainer.tsx index 874c68d8d..956a01531 100644 --- a/apps/events-helsinki/src/domain/event/EventPageContainer.tsx +++ b/apps/events-helsinki/src/domain/event/EventPageContainer.tsx @@ -98,7 +98,7 @@ const EventPageContainer: React.FC = ({ )} {/* Hide similar event on SSR to make initial load faster */} - {showSimilarEvents && !eventClosed && ( + {showSimilarEvents && !eventClosed && similarEventsFilters && ( { }); }); -describe(`SIMILAR_EVENTS feature flag`, () => { - it('shows similar events when flag is on', async () => { - advanceTo('2020-10-01'); - renderComponent({ event: event, loading: false, showSimilarEvents: true }); - await waitFor(() => { - expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); - }); +it('shows similar events when SIMILAR_EVENTS flag is on', async () => { + advanceTo('2020-10-01'); + const eventNoKeywords = { ...event }; + eventNoKeywords.keywords[0].id = 'yso:p916'; + renderComponent( + { event: eventNoKeywords, loading: false, showSimilarEvents: true }, + [ + ...mocks, + createEventListRequestAndResultMocks({ + variables: { + allOngoing: true, + internetBased: undefined, + keywordOrSet2: ['yso:p916'], + language: undefined, + pageSize: 100, + publisherAncestor: null, + eventType: [EventTypeId.General], + }, + response: similarEvents, + }), + ] + ); + await waitFor(() => { + expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); + }); + await waitForLoadingCompleted(); + + await waitFor(() => { expect( screen.getByRole('heading', { name: translations.event.similarEvents.title, }) ).toBeInTheDocument(); + }); +}); - similarEvents.data.forEach(async ({ name }) => { - expect( - await screen.findByLabelText(`Siirry tapahtumaan: ${name.fi}`, { - selector: 'a', - }) - ).toBeInTheDocument(); - }); +it('doesnt show similar events when SIMILAR_EVENTS flag is off', async () => { + advanceTo('2020-10-01'); + renderComponent({ event: event, loading: false, showSimilarEvents: false }); + await waitFor(() => { + expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); }); + expect( + screen.queryByRole('heading', { + name: translations.event.similarEvents.title, + }) + ).not.toBeInTheDocument(); +}); - it('doesnt show similar events when flag is off', async () => { - advanceTo('2020-10-01'); - renderComponent({ event: event, loading: false, showSimilarEvents: false }); - await waitFor(() => { - expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); - }); - expect( - screen.queryByRole('heading', { - name: translations.event.similarEvents.title, - }) - ).not.toBeInTheDocument(); +it('doesnt show similar events when keywords are not mapped', async () => { + advanceTo('2020-10-01'); + renderComponent({ event: event, loading: false, showSimilarEvents: true }, [ + ...mocks, + createEventListRequestAndResultMocks({ + variables: { + allOngoing: true, + internetBased: undefined, + keywordOrSet2: [''], + language: undefined, + pageSize: 100, + publisherAncestor: null, + eventType: [EventTypeId.General], + }, + response: { + data: [], + meta: { + __typename: 'Meta', + count: 0, + next: '', + previous: '', + }, + __typename: 'EventListResponse', + }, + }), + ]); + await waitFor(() => { + expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); }); + await waitForLoadingCompleted(); + + expect( + screen.queryByRole('heading', { + name: translations.event.similarEvents.title, + }) + ).not.toBeInTheDocument(); }); it.skip('should link to events search when clicking tags', async () => { diff --git a/apps/events-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx b/apps/events-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx index c583b6c48..2eef4d22f 100644 --- a/apps/events-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx +++ b/apps/events-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx @@ -18,6 +18,10 @@ const useSimilarEventsQueryVariables = (event: EventFields) => { .join(), // make a string }; + if (!searchParams[EVENT_SEARCH_FILTERS.KEYWORD]) { + return undefined; + } + return getEventSearchVariables({ include: ['keywords', 'location'], // eslint-disable-next-line max-len diff --git a/apps/hobbies-helsinki/src/domain/event/EventPageContainer.tsx b/apps/hobbies-helsinki/src/domain/event/EventPageContainer.tsx index 874c68d8d..956a01531 100644 --- a/apps/hobbies-helsinki/src/domain/event/EventPageContainer.tsx +++ b/apps/hobbies-helsinki/src/domain/event/EventPageContainer.tsx @@ -98,7 +98,7 @@ const EventPageContainer: React.FC = ({ )} {/* Hide similar event on SSR to make initial load faster */} - {showSimilarEvents && !eventClosed && ( + {showSimilarEvents && !eventClosed && similarEventsFilters && ( { }); }); -describe(`SIMILAR_EVENTS feature flag`, () => { - it('shows similar events when flag is on', async () => { - advanceTo('2020-10-01'); - renderComponent({ event: event, loading: false, showSimilarEvents: true }); - await waitFor(() => { - expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); - }); +it('shows similar events when SIMILAR_EVENTS flag is on', async () => { + advanceTo('2020-10-01'); + const eventNoKeywords = { ...event }; + eventNoKeywords.keywords[0].id = 'yso:p916'; + renderComponent( + { event: eventNoKeywords, loading: false, showSimilarEvents: true }, + [ + ...mocks, + createEventListRequestAndResultMocks({ + variables: { + allOngoing: true, + audienceMinAgeLt: '5', + audienceMaxAgeGt: '15', + internetBased: undefined, + keywordOrSet2: ['yso:p916'], + keywordOrSet3: ['yso:p916'], + language: undefined, + pageSize: 100, + publisherAncestor: null, + eventType: [EventTypeId.Course], + }, + response: similarEvents, + }), + ] + ); + await waitFor(() => { + expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); + }); + await waitForLoadingCompleted(); + + await waitFor(() => { expect( screen.getByRole('heading', { name: translations.event.similarEvents.title, }) ).toBeInTheDocument(); + }); +}); - similarEvents.data.forEach(async ({ name }) => { - expect( - await screen.findByLabelText(`Siirry tapahtumaan: ${name.fi}`, { - selector: 'a', - }) - ).toBeInTheDocument(); - }); +it('doesnt show similar events when SIMILAR_EVENTS flag is off', async () => { + advanceTo('2020-10-01'); + renderComponent({ event: event, loading: false, showSimilarEvents: false }); + await waitFor(() => { + expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); }); + expect( + screen.queryByRole('heading', { + name: translations.event.similarEvents.title, + }) + ).not.toBeInTheDocument(); +}); - it('doesnt show similar events when flag is off', async () => { - advanceTo('2020-10-01'); - renderComponent({ event: event, loading: false, showSimilarEvents: false }); - await waitFor(() => { - expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); - }); - expect( - screen.queryByRole('heading', { - name: translations.event.similarEvents.title, - }) - ).not.toBeInTheDocument(); +it('doesnt show similar events when keywords are not mapped', async () => { + advanceTo('2020-10-01'); + renderComponent({ event: event, loading: false, showSimilarEvents: true }, [ + ...mocks, + createEventListRequestAndResultMocks({ + variables: { + allOngoing: true, + internetBased: undefined, + keywordOrSet2: [''], + language: undefined, + pageSize: 100, + publisherAncestor: null, + eventType: [EventTypeId.General], + }, + response: { + data: [], + meta: { + __typename: 'Meta', + count: 0, + next: '', + previous: '', + }, + __typename: 'EventListResponse', + }, + }), + ]); + await waitFor(() => { + expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); }); + await waitForLoadingCompleted(); + + expect( + screen.queryByRole('heading', { + name: translations.event.similarEvents.title, + }) + ).not.toBeInTheDocument(); }); it.skip('should link to events search when clicking tags', async () => { diff --git a/apps/hobbies-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx b/apps/hobbies-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx index 13d00da3c..aa4cfb47a 100644 --- a/apps/hobbies-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx +++ b/apps/hobbies-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx @@ -22,6 +22,10 @@ const useSimilarEventsQueryVariables = (event: EventFields) => { [EVENT_SEARCH_FILTERS.MAX_AGE]: event.audienceMaxAge ?? '', }; + if (!searchParams[EVENT_SEARCH_FILTERS.KEYWORD]) { + return undefined; + } + return { ...getEventSearchVariables({ include: ['keywords', 'location'], diff --git a/apps/sports-helsinki/src/domain/event/EventPageContainer.tsx b/apps/sports-helsinki/src/domain/event/EventPageContainer.tsx index a6283690f..b698a9f60 100644 --- a/apps/sports-helsinki/src/domain/event/EventPageContainer.tsx +++ b/apps/sports-helsinki/src/domain/event/EventPageContainer.tsx @@ -101,7 +101,7 @@ const EventPageContainer: React.FC = ({ )} {/* Hide similar event on SSR to make initial load faster */} - {showSimilarEvents && !eventClosed && ( + {showSimilarEvents && !eventClosed && similarEventsFilters && ( { }); }); -describe(`SIMILAR_EVENTS feature flag`, () => { - it('shows similar events when flag is on', async () => { - advanceTo('2020-10-01'); - renderComponent({ event: event, loading: false, showSimilarEvents: true }); - await waitFor(() => { - expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); - }); +it('shows similar events when SIMILAR_EVENTS flag is on', async () => { + advanceTo('2020-10-01'); + const eventNoKeywords = { ...event }; + eventNoKeywords.keywords[0].id = 'yso:p916'; + renderComponent( + { event: eventNoKeywords, loading: false, showSimilarEvents: true }, + [ + ...mocks, + createEventListRequestAndResultMocks({ + variables: { + allOngoing: true, + keywordOrSet2: ['yso:p916', 'yso:p9824', 'yso:p6409'], + eventType: [EventTypeId.Course], + superEvent: 'none', + pageSize: 100, + }, + response: similarEvents, + }), + ] + ); + await waitFor(() => { + expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); + }); + await waitForLoadingCompleted(); + + await waitFor(() => { expect( screen.getByRole('heading', { name: translations.event.similarEvents.title, }) ).toBeInTheDocument(); + }); +}); - similarEvents.data.forEach(async ({ name }) => { - expect( - await screen.findByLabelText(`Siirry tapahtumaan: ${name.fi}`, { - selector: 'a', - }) - ).toBeInTheDocument(); - }); +it('doesnt show similar events when SIMILAR_EVENTS flag is off', async () => { + advanceTo('2020-10-01'); + renderComponent({ event: event, loading: false, showSimilarEvents: false }); + await waitFor(() => { + expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); }); + expect( + screen.queryByRole('heading', { + name: translations.event.similarEvents.title, + }) + ).not.toBeInTheDocument(); +}); - it('doesnt show similar events when flag is off', async () => { - advanceTo('2020-10-01'); - renderComponent({ event: event, loading: false, showSimilarEvents: false }); - await waitFor(() => { - expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); - }); - expect( - screen.queryByRole('heading', { - name: translations.event.similarEvents.title, - }) - ).not.toBeInTheDocument(); +it('doesnt show similar events when keywords are not mapped', async () => { + advanceTo('2020-10-01'); + renderComponent({ event: event, loading: false, showSimilarEvents: true }, [ + ...mocks, + createEventListRequestAndResultMocks({ + variables: { + allOngoing: true, + internetBased: undefined, + keywordOrSet2: [''], + language: undefined, + pageSize: 100, + publisherAncestor: null, + eventType: [EventTypeId.General], + }, + response: { + data: [], + meta: { + __typename: 'Meta', + count: 0, + next: '', + previous: '', + }, + __typename: 'EventListResponse', + }, + }), + ]); + await waitFor(() => { + expect(screen.queryByTestId('loading-spinner')).not.toBeInTheDocument(); }); + await waitForLoadingCompleted(); + + expect( + screen.queryByRole('heading', { + name: translations.event.similarEvents.title, + }) + ).not.toBeInTheDocument(); }); /* Skip test as keyword onClick is disabled */ diff --git a/apps/sports-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx b/apps/sports-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx index 4d3d8c2dc..cff931b62 100644 --- a/apps/sports-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx +++ b/apps/sports-helsinki/src/domain/event/useSimilarEventsQueryVariables.tsx @@ -19,6 +19,10 @@ const useSimilarEventsQueryVariables = (event: EventFields) => { .join(), // make a string }; + if (!searchParams[EVENT_SEARCH_FILTERS.KEYWORD]) { + return undefined; + } + return { ...getEventSearchVariables({ include: ['keywords', 'location'],