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