Skip to content

Commit

Permalink
fix: similar events should not be shown if keywords list is empty (#731)
Browse files Browse the repository at this point in the history
TH-1332
Co-authored-by: Ivan Melnik <[email protected]>
  • Loading branch information
nikomakela authored Sep 3, 2024
1 parent 4807af1 commit 1f02217
Show file tree
Hide file tree
Showing 9 changed files with 244 additions and 78 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ const EventPageContainer: React.FC<EventPageContainerProps> = ({
</>
)}
{/* Hide similar event on SSR to make initial load faster */}
{showSimilarEvents && !eventClosed && (
{showSimilarEvents && !eventClosed && similarEventsFilters && (
<SimilarEvents
event={event}
onEventsLoaded={handleSimilarEventsLoaded}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,40 +222,91 @@ it("should show error info when event doesn't exist", async () => {
});
});

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 () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ const EventPageContainer: React.FC<EventPageContainerProps> = ({
</>
)}
{/* Hide similar event on SSR to make initial load faster */}
{showSimilarEvents && !eventClosed && (
{showSimilarEvents && !eventClosed && similarEventsFilters && (
<SimilarEvents
event={event}
onEventsLoaded={handleSimilarEventsLoaded}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -224,40 +224,94 @@ it("should show error info when event doesn't exist", async () => {
});
});

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 () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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'],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ const EventPageContainer: React.FC<EventPageContainerProps> = ({
</>
)}
{/* Hide similar event on SSR to make initial load faster */}
{showSimilarEvents && !eventClosed && (
{showSimilarEvents && !eventClosed && similarEventsFilters && (
<SimilarEvents
event={event}
onEventsLoaded={handleSimilarEventsLoaded}
Expand Down
Loading

0 comments on commit 1f02217

Please sign in to comment.