identify-media
Version:
Analyse file path and content to make search criteria for media APIs
188 lines (183 loc) • 5.09 kB
text/typescript
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('')
});
});
});