import { RT_URL } from '~/globals/rt-urls'; import type { RTMovie } from '~/models/rt-movie'; import type { RTTVSeries } from '~/models/rt-tv-series'; import { describe, expect, test } from '@jest/globals'; import { getLiteMovie, getLiteTvSeries } from '~/utilities/rt-to-lite'; describe('RTMovie to Movie converter', () => { const rtMovieTemplate = { name: 'Planet of the Apes', year: 1968, meterScore: 90, url: '/planet-of-the-apes' }; test('Converts full rtMovie to full movie', () => { const rtMovie = { ...rtMovieTemplate }; const expected = { title: rtMovie.name, year: rtMovie.year, url: new URL(rtMovie.url, RT_URL), score: rtMovie.meterScore }; const converted = getLiteMovie(rtMovie); expect(converted).toStrictEqual(expected); }); test('rtMovie with invalid year converts to movie without year', () => { const rtMovie = { ...rtMovieTemplate, year: 'asdf' }; const expected = { title: rtMovie.name, url: new URL(rtMovie.url, RT_URL), score: rtMovie.meterScore }; const converted = getLiteMovie(rtMovie as unknown as RTMovie); expect(converted).toStrictEqual(expected); }); test('rtMovie with null year converts to movie without year', () => { const rtMovie = { ...rtMovieTemplate, year: null }; const expected = { title: rtMovie.name, url: new URL(rtMovie.url, RT_URL), score: rtMovie.meterScore }; const converted = getLiteMovie(rtMovie); expect(converted).toStrictEqual(expected); }); test('rtMovie with invalid score converts to movie without score', () => { const rtMovie = { ...rtMovieTemplate, meterScore: 'asdf' }; const expected = { title: rtMovie.name, url: new URL(rtMovie.url, RT_URL), year: rtMovie.year }; const converted = getLiteMovie(rtMovie as unknown as RTMovie); expect(converted).toStrictEqual(expected); }); test('rtMovie with null score converts to movie without score', () => { const rtMovie = { ...rtMovieTemplate, meterScore: null }; const expected = { title: rtMovie.name, url: new URL(rtMovie.url, RT_URL), year: rtMovie.year }; const converted = getLiteMovie(rtMovie); expect(converted).toStrictEqual(expected); }); }); describe('rtTvSeries to Movie converter', () => { const rtTvSeriesTemplate = { title: 'Planet of the Apes', startYear: 1974, meterScore: 55, url: '/tv/planet-of-the-apes' }; test('Converts full rtTvSeries to full tvSeries', () => { const rtTvSeries = { ...rtTvSeriesTemplate }; const expected = { title: rtTvSeries.title, year: rtTvSeries.startYear, url: new URL(rtTvSeries.url, RT_URL), score: rtTvSeries.meterScore }; const converted = getLiteTvSeries(rtTvSeries); expect(converted).toStrictEqual(expected); }); test('rtTvSeries with invalid startYear converts to tvSeries without year', () => { const rtTvSeries = { ...rtTvSeriesTemplate, startYear: 'asdf' }; const expected = { title: rtTvSeries.title, url: new URL(rtTvSeries.url, RT_URL), score: rtTvSeries.meterScore }; const converted = getLiteTvSeries(rtTvSeries as unknown as RTTVSeries); expect(converted).toStrictEqual(expected); }); test('rtTvSeries with null startYear converts to tvSeries without year', () => { const rtTvSeries = { ...rtTvSeriesTemplate, startYear: null }; const expected = { title: rtTvSeries.title, url: new URL(rtTvSeries.url, RT_URL), score: rtTvSeries.meterScore }; const converted = getLiteTvSeries(rtTvSeries); expect(converted).toStrictEqual(expected); }); test('rtTvSeries with invalid score converts to tvSeries without score', () => { const rtTvSeries = { ...rtTvSeriesTemplate, meterScore: 'asdf' }; const expected = { title: rtTvSeries.title, url: new URL(rtTvSeries.url, RT_URL), year: rtTvSeries.startYear }; const converted = getLiteTvSeries(rtTvSeries as unknown as RTTVSeries); expect(converted).toStrictEqual(expected); }); test('rtTvSeries with null score converts to tvSeries without score', () => { const rtTvSeries = { ...rtTvSeriesTemplate, meterScore: null }; const expected = { title: rtTvSeries.title, url: new URL(rtTvSeries.url, RT_URL), year: rtTvSeries.startYear }; const converted = getLiteTvSeries(rtTvSeries); expect(converted).toStrictEqual(expected); }); });