UNPKG

identify-media

Version:

Analyse file path and content to make search criteria for media APIs

100 lines (93 loc) 3.56 kB
import { AnalysedMedia, AnalysedMovie, AnalysedTVShow, isSameOmdbQuery, mapOmdbQuery, mapOmdbResult, OmdbSearchQuery, OmdbSearchResponse } from "../../../src"; describe('Mapper for omdb', () => { const analysedTVShow: AnalysedTVShow = {type: 'tv', name: 'test tv series', season: 1, episodes: [3, 2], year: undefined}; const analysedMovie: AnalysedMovie = {type: 'movie', name: 'movie name', year: 2020}; test.each([ ['test', {s: 'test'}], [analysedTVShow, {s: 'test tv series', type: 'tv'}], [analysedMovie, {s: 'movie name', type: 'movie', y: '2020'}], ])('should map %s to %s', (input, result) => { expect(mapOmdbQuery(input)).toEqual(result); }); test('should throw on bad input', () => { expect(() => {mapOmdbQuery(3 as any as AnalysedMedia)}).toThrow('media of unknown type: 3'); }); test.each([ [{s: 'query'} as OmdbSearchQuery, {s: 'query'} as OmdbSearchQuery, true], [{s: 'query'} as OmdbSearchQuery, {s: 'query2'} as OmdbSearchQuery, false], [{s: 'query', type: 'movie'} as OmdbSearchQuery, {s: 'query', type: 'movie'} as OmdbSearchQuery, true], [{s: 'query', y: '2020'} as OmdbSearchQuery, {s: 'query'} as OmdbSearchQuery, false], [{s: 'query', y: '2020'} as OmdbSearchQuery, {s: 'query', y: '2020'} as OmdbSearchQuery, true], [{s: 'query', type: 'movie'} as OmdbSearchQuery, {s: 'query', type: 'tv'} as OmdbSearchQuery, false], ])('%s and %s is equal %s', (a, b, result) => { expect(isSameOmdbQuery(a, b)).toBe(result); }) test.each([ [{ Search: [{ Type: 'movie', Title: 'Movie title', imdbID: 'movieImdb', Released: '01 Jan 2015', Plot: 'plot', Poster: 'poster', }, { Type: 'series', Title: 'Series title', imdbID: 'seriesImdb', Released: '21 Jun 2020', Plot: 'plot', Poster: '' }, { Type: 'series', Title: 'Other series title', imdbID: 'otherSeriesImdb', Plot: 'plot', Poster: '' }] } as OmdbSearchResponse, [ { imdbId: 'movieImdb', title: 'Movie title', type: 'movie', release: '2015-01-01', mediaInfo: { plot: 'plot', images: {'omdb-poster': 'poster'}, } }, { firstAirDate: '2020-06-21', imdbId: 'seriesImdb', name: 'Series title', type: 'tv', mediaInfo: { plot: 'plot', images: {}, } }, { imdbId: 'otherSeriesImdb', name: 'Other series title', type: 'tv', mediaInfo: { plot: 'plot', images: {}, } } ]] ])('Should map %s to %s', (input, result) => { expect(mapOmdbResult(input)).toEqual(result); }); test('Should throw on error', () => { expect(() => mapOmdbResult({Error: 'This went badly'})).toThrowError('This went badly'); }); test('Should throw on empty', () => { expect(() => mapOmdbResult({})).toThrowError('No search result'); }) });