From 671439df6f67ad1f15360b69d8dea3dc10575910 Mon Sep 17 00:00:00 2001 From: seferturan Date: Sun, 9 Feb 2025 23:12:24 +0100 Subject: [PATCH] test(requests): requesting popular lists --- .../queries/movies/movieListsQuery.spec.ts | 20 +++++++++ .../queries/shows/showListsQuery.spec.ts | 20 +++++++++ .../heretic/mapped/HereticListsMappedMock.ts | 19 +++++++++ .../response/HereticListsResponseMock.ts | 41 +++++++++++++++++++ .../shows/silo/mapped/SiloListsMappedMock.ts | 19 +++++++++ .../silo/response/SiloListsResponseMock.ts | 41 +++++++++++++++++++ projects/client/src/mocks/handlers/movies.ts | 7 ++++ projects/client/src/mocks/handlers/shows.ts | 7 ++++ 8 files changed, 174 insertions(+) create mode 100644 projects/client/src/lib/requests/queries/movies/movieListsQuery.spec.ts create mode 100644 projects/client/src/lib/requests/queries/shows/showListsQuery.spec.ts create mode 100644 projects/client/src/mocks/data/summary/movies/heretic/mapped/HereticListsMappedMock.ts create mode 100644 projects/client/src/mocks/data/summary/movies/heretic/response/HereticListsResponseMock.ts create mode 100644 projects/client/src/mocks/data/summary/shows/silo/mapped/SiloListsMappedMock.ts create mode 100644 projects/client/src/mocks/data/summary/shows/silo/response/SiloListsResponseMock.ts diff --git a/projects/client/src/lib/requests/queries/movies/movieListsQuery.spec.ts b/projects/client/src/lib/requests/queries/movies/movieListsQuery.spec.ts new file mode 100644 index 000000000..3ec0ac36f --- /dev/null +++ b/projects/client/src/lib/requests/queries/movies/movieListsQuery.spec.ts @@ -0,0 +1,20 @@ +import { MovieHereticMappedMock } from '$mocks/data/summary/movies/heretic/mapped/MovieHereticMappedMock.ts'; +import { runQuery } from '$test/beds/query/runQuery.ts'; +import { createQuery } from '@tanstack/svelte-query'; +import { describe, expect, it } from 'vitest'; +import { HereticListsMappedMock } from '../../../../mocks/data/summary/movies/heretic/mapped/HereticListsMappedMock.ts'; +import { movieListsQuery } from './movieListsQuery.ts'; + +describe('movieListsQuery', () => { + it('should query for lists that contain Heretic (2024)', async () => { + const result = await runQuery({ + factory: () => + createQuery( + movieListsQuery({ slug: MovieHereticMappedMock.slug, limit: 10 }), + ), + mapper: (response) => response?.data, + }); + + expect(result).to.deep.equal(HereticListsMappedMock); + }); +}); diff --git a/projects/client/src/lib/requests/queries/shows/showListsQuery.spec.ts b/projects/client/src/lib/requests/queries/shows/showListsQuery.spec.ts new file mode 100644 index 000000000..7946f9802 --- /dev/null +++ b/projects/client/src/lib/requests/queries/shows/showListsQuery.spec.ts @@ -0,0 +1,20 @@ +import { ShowSiloMappedMock } from '$mocks/data/summary/shows/silo/mapped/ShowSiloMappedMock.ts'; +import { runQuery } from '$test/beds/query/runQuery.ts'; +import { createQuery } from '@tanstack/svelte-query'; +import { describe, expect, it } from 'vitest'; +import { SiloListsMappedMock } from '../../../../mocks/data/summary/shows/silo/mapped/SiloListsMappedMock.ts'; +import { showListsQuery } from './showListsQuery.ts'; + +describe('showListsQuery', () => { + it('should query for lists that contain Silo (2023)', async () => { + const result = await runQuery({ + factory: () => + createQuery( + showListsQuery({ slug: ShowSiloMappedMock.slug, limit: 10 }), + ), + mapper: (response) => response?.data, + }); + + expect(result).to.deep.equal(SiloListsMappedMock); + }); +}); diff --git a/projects/client/src/mocks/data/summary/movies/heretic/mapped/HereticListsMappedMock.ts b/projects/client/src/mocks/data/summary/movies/heretic/mapped/HereticListsMappedMock.ts new file mode 100644 index 000000000..24061fc7c --- /dev/null +++ b/projects/client/src/mocks/data/summary/movies/heretic/mapped/HereticListsMappedMock.ts @@ -0,0 +1,19 @@ +import type { MediaListSummary } from '$lib/requests/models/MediaListSummary.ts'; + +export const HereticListsMappedMock: MediaListSummary[] = [ + { + 'description': 'This list contains Heretic', + 'id': 1234, + 'name': 'Heretics only', + 'slug': 'heretics-only', + 'user': { + 'avatar': { + 'url': + 'https://walter-r2.trakt.tv/images/users/014/366/083/avatars/large/disco_cop.png', + }, + 'isVip': true, + 'slug': 'tequila_sunset', + 'userName': 'harrier_dubois', + }, + }, +]; diff --git a/projects/client/src/mocks/data/summary/movies/heretic/response/HereticListsResponseMock.ts b/projects/client/src/mocks/data/summary/movies/heretic/response/HereticListsResponseMock.ts new file mode 100644 index 000000000..62319e53d --- /dev/null +++ b/projects/client/src/mocks/data/summary/movies/heretic/response/HereticListsResponseMock.ts @@ -0,0 +1,41 @@ +import type { ListResponse } from '$lib/api.ts'; + +export const HereticListsResponseMock: ListResponse[] = [ + { + 'name': 'Heretics only', + 'description': 'This list contains Heretic', + 'privacy': 'public', + 'share_link': 'https://trakt.tv/lists/1234', + 'type': 'personal', + 'display_numbers': false, + 'allow_comments': true, + 'sort_by': 'added', + 'sort_how': 'asc', + 'created_at': '2018-07-29T10:16:22.000Z', + 'updated_at': '2025-02-09T21:39:59.000Z', + 'item_count': 1, + 'comment_count': 5, + 'likes': 4161, + 'ids': { + 'trakt': 1234, + 'slug': 'heretics-only', + }, + 'user': { + 'username': 'harrier_dubois', + 'private': false, + 'name': 'Harry Du Bois', + 'vip': true, + 'vip_ep': false, + 'ids': { + 'slug': 'tequila_sunset', + 'trakt': 41152, + }, + 'images': { + 'avatar': { + 'full': + 'https://walter-r2.trakt.tv/images/users/014/366/083/avatars/large/disco_cop.png', + }, + }, + }, + }, +]; diff --git a/projects/client/src/mocks/data/summary/shows/silo/mapped/SiloListsMappedMock.ts b/projects/client/src/mocks/data/summary/shows/silo/mapped/SiloListsMappedMock.ts new file mode 100644 index 000000000..915d6c491 --- /dev/null +++ b/projects/client/src/mocks/data/summary/shows/silo/mapped/SiloListsMappedMock.ts @@ -0,0 +1,19 @@ +import type { MediaListSummary } from '$lib/requests/models/MediaListSummary.ts'; + +export const SiloListsMappedMock: MediaListSummary[] = [ + { + 'description': 'There is no escape from this list', + 'id': 5678, + 'name': 'Silos', + 'slug': 'silos', + 'user': { + 'avatar': { + 'url': + 'https://walter-r2.trakt.tv/images/users/014/366/083/avatars/large/disco_cop.png', + }, + 'isVip': true, + 'slug': 'tequila_sunset', + 'userName': 'harrier_dubois', + }, + }, +]; diff --git a/projects/client/src/mocks/data/summary/shows/silo/response/SiloListsResponseMock.ts b/projects/client/src/mocks/data/summary/shows/silo/response/SiloListsResponseMock.ts new file mode 100644 index 000000000..924cfe931 --- /dev/null +++ b/projects/client/src/mocks/data/summary/shows/silo/response/SiloListsResponseMock.ts @@ -0,0 +1,41 @@ +import type { ListResponse } from '$lib/api.ts'; + +export const SiloListsResponseMock: ListResponse[] = [ + { + 'name': 'Silos', + 'description': 'There is no escape from this list', + 'privacy': 'public', + 'share_link': 'https://trakt.tv/lists/5678', + 'type': 'personal', + 'display_numbers': false, + 'allow_comments': true, + 'sort_by': 'added', + 'sort_how': 'asc', + 'created_at': '2018-07-29T10:16:22.000Z', + 'updated_at': '2025-02-09T21:39:59.000Z', + 'item_count': 1, + 'comment_count': 2, + 'likes': 892, + 'ids': { + 'trakt': 5678, + 'slug': 'silos', + }, + 'user': { + 'username': 'harrier_dubois', + 'private': false, + 'name': 'Harry Du Bois', + 'vip': true, + 'vip_ep': false, + 'ids': { + 'slug': 'tequila_sunset', + 'trakt': 41152, + }, + 'images': { + 'avatar': { + 'full': + 'https://walter-r2.trakt.tv/images/users/014/366/083/avatars/large/disco_cop.png', + }, + }, + }, + }, +]; diff --git a/projects/client/src/mocks/handlers/movies.ts b/projects/client/src/mocks/handlers/movies.ts index 49c54f55d..1221631c4 100644 --- a/projects/client/src/mocks/handlers/movies.ts +++ b/projects/client/src/mocks/handlers/movies.ts @@ -4,6 +4,7 @@ import { MoviesAnticipatedResponseMock } from '../data/movies/response/MoviesAnt import { MoviesPopularResponseMock } from '../data/movies/response/MoviesPopularResponseMock.ts'; import { MoviesTrendingResponseMock } from '../data/movies/response/MoviesTrendingResponseMock.ts'; import { MediaWatchingResponseMock } from '../data/summary/common/response/MediaWatchingResponseMock.ts'; +import { HereticListsResponseMock } from '../data/summary/movies/heretic/response/HereticListsResponseMock.ts'; import { MovieHereticLanguageResponseMock } from '../data/summary/movies/heretic/response/MovieHereticLanguageResponseMock.ts'; import { MovieHereticPeopleResponseMock } from '../data/summary/movies/heretic/response/MovieHereticPeopleResponseMock.ts'; import { MovieHereticRatingsResponseMock } from '../data/summary/movies/heretic/response/MovieHereticRatingsResponseMock.ts'; @@ -86,4 +87,10 @@ export const movies = [ return HttpResponse.json(MoviesAnticipatedResponseMock); }, ), + http.get( + `http://localhost/movies/${MovieHereticResponseMock.ids.slug}/lists/all/popular*`, + () => { + return HttpResponse.json(HereticListsResponseMock); + }, + ), ]; diff --git a/projects/client/src/mocks/handlers/shows.ts b/projects/client/src/mocks/handlers/shows.ts index 028f8e43a..869c01526 100644 --- a/projects/client/src/mocks/handlers/shows.ts +++ b/projects/client/src/mocks/handlers/shows.ts @@ -19,6 +19,7 @@ import { ShowSiloSeasonsResponseMock } from '../data/summary/shows/silo/response import { ShowSiloStatsResponseMock } from '../data/summary/shows/silo/response/ShowSiloStatsResponseMock.ts'; import { ShowSiloStudiosResponseMock } from '../data/summary/shows/silo/response/ShowSiloStudiosResponseMock.ts'; import { ShowSiloWatchNowResponseMock } from '../data/summary/shows/silo/response/ShowSiloWatchNowResponseMock.ts'; +import { SiloListsResponseMock } from '../data/summary/shows/silo/response/SiloListsResponseMock.ts'; export const shows = [ http.get( @@ -145,4 +146,10 @@ export const shows = [ return HttpResponse.json(ShowSiloRelatedResponseMock); }, ), + http.get( + `http://localhost/shows/${ShowSiloResponseMock.ids.slug}/lists/all/popular*`, + () => { + return HttpResponse.json(SiloListsResponseMock); + }, + ), ];