1# -*- coding: utf-8 -*- 2import pytest 3 4from flexget.api.app import base_message 5from flexget.components.tmdb.api import ObjectsContainer as oc 6from flexget.utils import json 7 8 9@pytest.mark.online 10class TestTMDBMovieLookupAPI: 11 config = 'tasks: {}' 12 13 def test_tmdb_movies_lookup_by_title(self, api_client, schema_match): 14 # Bad API call 15 rsp = api_client.get('/tmdb/movies/') 16 assert rsp.status_code == 400, 'Response code is %s' % rsp.status_code 17 data = json.loads(rsp.get_data(as_text=True)) 18 errors = schema_match(base_message, data) 19 assert not errors 20 21 rsp = api_client.get('/tmdb/movies/?title=the matrix/') 22 assert rsp.status_code == 200, 'Response code is %s' % rsp.status_code 23 24 data = json.loads(rsp.get_data(as_text=True)) 25 errors = schema_match(oc.movie_object, data) 26 assert not errors 27 28 values = {'id': 603, 'name': 'The Matrix', 'year': 1999, 'imdb_id': 'tt0133093'} 29 for field, value in values.items(): 30 assert data.get(field) == value 31 32 def test_tmdb_movies_lookup_year_param(self, api_client, schema_match): 33 rsp = api_client.get('/tmdb/movies/?title=the matrix reloaded&year=2003') 34 assert rsp.status_code == 200, 'Response code is %s' % rsp.status_code 35 36 data = json.loads(rsp.get_data(as_text=True)) 37 errors = schema_match(oc.movie_object, data) 38 assert not errors 39 40 values = {'id': 604, 'name': 'The Matrix Reloaded', 'year': 2003, 'imdb_id': 'tt0234215'} 41 for field, value in values.items(): 42 assert data.get(field) == value 43 44 def test_tmdb_movies_lookup_posters_params(self, api_client, schema_match): 45 rsp = api_client.get('/tmdb/movies/?title=the matrix&include_posters=true') 46 assert rsp.status_code == 200, 'Response code is %s' % rsp.status_code 47 48 data = json.loads(rsp.get_data(as_text=True)) 49 errors = schema_match(oc.movie_object, data) 50 assert not errors 51 52 assert 'posters' in data 53 assert len(data['posters']) > 0 54 55 def test_tmdb_movies_lookup_backdrops_params(self, api_client, schema_match): 56 rsp = api_client.get('/tmdb/movies/?title=the matrix&include_backdrops=true') 57 assert rsp.status_code == 200, 'Response code is %s' % rsp.status_code 58 59 data = json.loads(rsp.get_data(as_text=True)) 60 errors = schema_match(oc.movie_object, data) 61 assert not errors 62 63 assert 'backdrops' in data 64 assert len(data['backdrops']) > 0 65