More unit tests for checking correct definition of movie. Changed some test to match update functions in tmdb.
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
"main": "webserver/server.js",
|
"main": "webserver/server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "cross-env SEASONED_CONFIG=conf/development.json PROD=true NODE_PATH=. node src/webserver/server.js",
|
"start": "cross-env SEASONED_CONFIG=conf/development.json PROD=true NODE_PATH=. node src/webserver/server.js",
|
||||||
"test": "cross-env SEASONED_CONFIG=conf/test.json NODE_PATH=. mocha --recursive test",
|
"test": "cross-env SEASONED_CONFIG=conf/test.json NODE_PATH=. mocha --recursive test/unit test/system",
|
||||||
"coverage": "cross-env SEASONED_CONFIG=conf/test.json NODE_PATH=. nyc mocha --recursive test && nyc report --reporter=text-lcov | coveralls",
|
"coverage": "cross-env SEASONED_CONFIG=conf/test.json NODE_PATH=. nyc mocha --recursive test && nyc report --reporter=text-lcov | coveralls",
|
||||||
"lint": "./node_modules/.bin/eslint src/",
|
"lint": "./node_modules/.bin/eslint src/",
|
||||||
"update": "cross-env SEASONED_CONFIG=conf/development.json NODE_PATH=. node src/plex/updateRequestsInPlex.js"
|
"update": "cross-env SEASONED_CONFIG=conf/development.json NODE_PATH=. node src/plex/updateRequestsInPlex.js"
|
||||||
|
|||||||
@@ -36,6 +36,14 @@ CREATE TABLE IF NOT EXISTS requests(
|
|||||||
type CHAR(50) DEFAULT 'movie'
|
type CHAR(50) DEFAULT 'movie'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS request(
|
||||||
|
id int not null,
|
||||||
|
title text not null,
|
||||||
|
year int not null,
|
||||||
|
type char(10) not null,
|
||||||
|
date default current_timestamp
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS stray_eps(
|
CREATE TABLE IF NOT EXISTS stray_eps(
|
||||||
id TEXT UNIQUE,
|
id TEXT UNIQUE,
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
DROP TABLE IF EXISTS user;
|
DROP TABLE IF EXISTS user;
|
||||||
DROP TABLE IF EXISTS search_history;
|
DROP TABLE IF EXISTS search_history;
|
||||||
DROP TABLE IF EXISTS requests;
|
DROP TABLE IF EXISTS requests;
|
||||||
|
DROP TABLE IF EXISTS request;
|
||||||
|
|||||||
1
seasoned_api/test/fixtures/blade_runner_2049-info-success-response.json
vendored
Normal file
1
seasoned_api/test/fixtures/blade_runner_2049-info-success-response.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"adult":false,"backdrop_path":"/mVr0UiqyltcfqxbAUcLl9zWL8ah.jpg","belongs_to_collection":{"id":422837,"name":"Blade Runner Collection","poster_path":"/cWESb1o9lW2i2Z3Xllv9u40aNIk.jpg","backdrop_path":"/bSHZIvLoPBWyGLeiAudN1mXdvQX.jpg"},"budget":150000000,"genres":[{"id":9648,"name":"Mystery"},{"id":878,"name":"Science Fiction"},{"id":53,"name":"Thriller"}],"homepage":"http://bladerunnermovie.com/","id":335984,"imdb_id":"tt1856101","original_language":"en","original_title":"Blade Runner 2049","overview":"Thirty years after the events of the first film, a new blade runner, LAPD Officer K, unearths a long-buried secret that has the potential to plunge what's left of society into chaos. K's discovery leads him on a quest to find Rick Deckard, a former LAPD blade runner who has been missing for 30 years.","popularity":30.03,"poster_path":"/gajva2L0rPYkEWjzgFlBXCAVBE5.jpg","production_companies":[{"id":79529,"logo_path":"/gVN3k8emmKy4iV4KREWcCtxusZK.png","name":"Torridon Films","origin_country":"US"},{"id":101829,"logo_path":"/8IOjCvgjq0zTrtP91cWD3kL2jMK.png","name":"16:14 Entertainment","origin_country":"US"},{"id":1645,"logo_path":"/6Ry6uNBaa0IbbSs1XYIgX5DkA9r.png","name":"Scott Free Productions","origin_country":""},{"id":5,"logo_path":"/71BqEFAF4V3qjjMPCpLuyJFB9A.png","name":"Columbia Pictures","origin_country":"US"},{"id":1088,"logo_path":"/9WOE5AQUXbOtLU6GTwfjS8OMF0v.png","name":"Alcon Entertainment","origin_country":"US"},{"id":78028,"logo_path":"/sTFcDFfJaSVT3sv3DoaZDE4SlGB.png","name":"Thunderbird Entertainment","origin_country":"CA"},{"id":174,"logo_path":"/ky0xOc5OrhzkZ1N6KyUxacfQsCk.png","name":"Warner Bros. Pictures","origin_country":"US"}],"production_countries":[{"iso_3166_1":"CA","name":"Canada"},{"iso_3166_1":"US","name":"United States of America"},{"iso_3166_1":"HU","name":"Hungary"},{"iso_3166_1":"GB","name":"United Kingdom"}],"release_date":"2017-10-04","revenue":259239658,"runtime":163,"spoken_languages":[{"iso_639_1":"en","name":"English"},{"iso_639_1":"fi","name":"suomi"}],"status":"Released","tagline":"There's still a page left.","title":"Blade Runner 2049","video":false,"vote_average":7.3,"vote_count":5478}
|
||||||
1
seasoned_api/test/fixtures/interstellar-query-movie-success-response.json
vendored
Normal file
1
seasoned_api/test/fixtures/interstellar-query-movie-success-response.json
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -4,18 +4,19 @@ const app = require('src/webserver/app');
|
|||||||
const request = require('supertest-as-promised');
|
const request = require('supertest-as-promised');
|
||||||
const createUser = require('test/helpers/createUser');
|
const createUser = require('test/helpers/createUser');
|
||||||
const createToken = require('test/helpers/createToken');
|
const createToken = require('test/helpers/createToken');
|
||||||
const infoMovieSuccess = require('test/fixtures/arrival-info-success-response.json');
|
const infoMovieSuccess = require('test/fixtures/blade_runner_2049-info-success-response.json');
|
||||||
|
|
||||||
describe('As a user I want to request a movie', () => {
|
describe('As a user I want to request a movie', () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
return resetDatabase()
|
return resetDatabase()
|
||||||
.then(() => createUser('test_user', 'test@gmail.com', 'password'));
|
.then(() => createUser('test_user', 'test@gmail.com', 'password'));
|
||||||
})
|
})
|
||||||
before(() => createCacheEntry('i:movie:329865', infoMovieSuccess));
|
before(() => createCacheEntry('mi:335984', infoMovieSuccess));
|
||||||
|
|
||||||
it('should return 200 when item is requested', () =>
|
it('should return 200 when item is requested', () =>
|
||||||
request(app)
|
request(app)
|
||||||
.post('/api/v1/plex/request/329865')
|
.post('/api/v2/request/335984', {tmdbType: 'movie'})
|
||||||
|
.send({ tmdbType: 'movie' })
|
||||||
.set('Authorization', createToken('test_user', 'secret'))
|
.set('Authorization', createToken('test_user', 'secret'))
|
||||||
.expect(200)
|
.expect(200)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -2,15 +2,15 @@ const createCacheEntry = require('test/helpers/createCacheEntry');
|
|||||||
const resetDatabase = require('test/helpers/resetDatabase');
|
const resetDatabase = require('test/helpers/resetDatabase');
|
||||||
const request = require('supertest-as-promised');
|
const request = require('supertest-as-promised');
|
||||||
const app = require('src/webserver/app');
|
const app = require('src/webserver/app');
|
||||||
const interstellarQuerySuccess = require('test/fixtures/interstellar-query-success-response.json');
|
const interstellarQuerySuccess = require('test/fixtures/interstellar-query-movie-success-response.json');
|
||||||
|
|
||||||
describe('As an anonymous user I want to search for a movie', () => {
|
describe('As an anonymous user I want to search for a movie', () => {
|
||||||
before(() => resetDatabase());
|
before(() => resetDatabase());
|
||||||
before(() => createCacheEntry('se:1:multi:interstellar', interstellarQuerySuccess));
|
before(() => createCacheEntry('mose:1:interstellar', interstellarQuerySuccess));
|
||||||
|
|
||||||
it('should return 200 with the search results even if user is not logged in', () =>
|
it('should return 200 with the search results even if user is not logged in', () =>
|
||||||
request(app)
|
request(app)
|
||||||
.get('/api/v1/tmdb/search?query=interstellar&page=1')
|
.get('/api/v2/search/movie?query=interstellar&page=1')
|
||||||
.expect(200)
|
.expect(200)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
30
seasoned_api/test/unit/tmdb/testConvertTmdbToMovie.js
Normal file
30
seasoned_api/test/unit/tmdb/testConvertTmdbToMovie.js
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
const assert = require('assert');
|
||||||
|
const convertTmdbToMovie = require('src/tmdb/convertTmdbToMovie');
|
||||||
|
const bladeRunnerQuerySuccess = require('test/fixtures/blade_runner_2049-info-success-response.json')
|
||||||
|
|
||||||
|
describe('Convert tmdb movieInfo to movie', () => {
|
||||||
|
beforeEach(() => this.bladeRunnerTmdbMovie = bladeRunnerQuerySuccess);
|
||||||
|
|
||||||
|
it('should translate the tmdb release date to movie year', () => {
|
||||||
|
const bladeRunner = convertTmdbToMovie(this.bladeRunnerTmdbMovie);
|
||||||
|
assert.strictEqual(bladeRunner.year, 2017);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should translate the tmdb release date to instance of Date', () => {
|
||||||
|
const bladeRunner = convertTmdbToMovie(this.bladeRunnerTmdbMovie);
|
||||||
|
assert(bladeRunner.release_date instanceof Date);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should translate the tmdb title to title', () => {
|
||||||
|
const bladeRunner = convertTmdbToMovie(this.bladeRunnerTmdbMovie);
|
||||||
|
assert.equal(bladeRunner.title, 'Blade Runner 2049');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should translate the tmdb vote_average to rank', () => {
|
||||||
|
const bladeRunner = convertTmdbToMovie(this.bladeRunnerTmdbMovie);
|
||||||
|
assert.equal(bladeRunner.rank, 7.3);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
31
seasoned_api/test/unit/tmdb/testTmdb.disabled
Normal file
31
seasoned_api/test/unit/tmdb/testTmdb.disabled
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
const assert = require('assert');
|
||||||
|
// const Movie = require('src/movie/movie');
|
||||||
|
const TMDB = require('src/tmdb/tmdb');
|
||||||
|
const Cache = require('src/tmdb/cache');
|
||||||
|
const SqliteDatabase = require('src/database/sqliteDatabase');
|
||||||
|
const tmdbMock = require('test/helpers/tmdbMock');
|
||||||
|
|
||||||
|
const emptyQuerySuccess = require('test/fixtures/empty-query-success-response.json');
|
||||||
|
const interstellarQuerySuccess = require('test/fixtures/arrival-info-success-response.json');
|
||||||
|
const popularMovieSuccessResponse = require('test/fixtures/popular-movies-success-response.json');
|
||||||
|
|
||||||
|
describe('TMDB', function test() {
|
||||||
|
beforeEach(() => {
|
||||||
|
this.mockMoviedb = tmdbMock();
|
||||||
|
this.database = new SqliteDatabase(':memory:');
|
||||||
|
return Promise.resolve()
|
||||||
|
.then(() => this.database.setUp());
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('popular', () => {
|
||||||
|
it('should return the "Blade Runner 2049" year in the collection of popular movies', () => {
|
||||||
|
this.mockMoviedb.response = popularMovieSuccessResponse;
|
||||||
|
const cache = new Cache(this.database);
|
||||||
|
const tmdb = new TMDB(cache, 'bogus-api-key', this.mockMoviedb);
|
||||||
|
return tmdb.popular()
|
||||||
|
.then(movies =>
|
||||||
|
assert.equal(movies[0].title, "Blade Runner 2049")
|
||||||
|
);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user