UNPKG

identify-media

Version:

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

188 lines (183 loc) 5.09 kB
import {isMovie, isTVShow, mergeMedia, Movie, TVShow} from "../../src"; describe('Utility methods', () => { describe('identify wrappers', () => { test.each([ [{}, false], [undefined, false], [{ type: 'movie' }, false], [{ type: 'movie', title: 'test' }, false], [{ type: 'movie', title: 'test', tmdbId: 1, }, true], [{ type: 'movie', title: 'test', imdbId: '1' }, true], [{ type: 'tv' }, false], [{ type: 'tv', name: 'test' }, false], [{ type: 'tv', name: 'test', tmdbId: 1, }, false], [{ type: 'tv', name: 'test', imdbId: '1' }, false], ])('%s is a movie? %s', (input, result) => { expect(isMovie(input)).toBe(result); }); test.each([ [{}, false], [undefined, false], [{ type: 'movie' }, false], [{ type: 'movie', title: 'test' }, false], [{ type: 'movie', title: 'test', tmdbId: 1, }, false], [{ type: 'movie', title: 'test', imdbId: '1' }, false], [{ type: 'tv' }, false], [{ type: 'tv', name: 'test' }, false], [{ type: 'tv', name: 'test', tmdbId: 1, }, true], [{ type: 'tv', name: 'test', imdbId: '1' }, true], ])('%s is a tv show? %s', (input, result) => { expect(isTVShow(input)).toBe(result); }); }); describe('merge', () => { test.each([ [{ type: 'movie', title: 'test', imdbId: 'imdbId', mediaInfo: { plot: 'test', images: {'tmdb-poster': 'tmdb'} } } as Movie, { type: 'movie', title: 'the real test', tmdbId: 1234, mediaInfo: { images: {'omdb-poster': 'omdb'} } } as Movie, { type: 'movie', title: 'the real test', imdbId: 'imdbId', tmdbId: 1234, mediaInfo: { plot: 'test', images: {'tmdb-poster': 'tmdb', 'omdb-poster': 'omdb'} } }] ])('', (a, b, result) => { expect(mergeMedia(a, b)).toEqual(result); }); test('Should throw if trying to merge different types', () => { expect(() => mergeMedia({ type: 'movie', title: 'test', mediaInfo: { images: {} } }, { type: 'tv', name: 'test', mediaInfo: { images: {} } })).toThrowError('') }); test.each([ [ { type: 'movie', title: 'test', imdbId: 'imdb1' } as Movie, { type: 'movie', title: 'test', imdbId: 'imdb2' } as Movie ], [ { type: 'movie', title: 'test', tmdbId: 1 } as Movie, { type: 'movie', title: 'test', tmdbId: 2 } as Movie ], [ { type: 'tv', name: 'test', imdbId: 'imdb1' } as TVShow, { type: 'tv', name: 'test', imdbId: 'imdb2' } as TVShow ], [ { type: 'tv', name: 'test', tmdbId: 1 } as TVShow, { type: 'tv', name: 'test', tmdbId: 2 } as TVShow ], ])('Should throw if trying to merge media with different identifiers %s %s', (a, b) => { expect(() => mergeMedia(a, b)).toThrowError('') }); }); });