コード例 #1
0
ファイル: tests.py プロジェクト: wieczorek1990/movies-2
    def test_list_movies(self):
        movie = models.Movie(title='Song of Water and Mud',
                             year='2020',
                             runtime='136 min',
                             genre='Fantasy',
                             external_api_response={})
        movie.save()
        movie = models.Movie(title='Song of Ice and Fire',
                             year='2020',
                             runtime='136 min',
                             genre='Fantasy',
                             external_api_response={})
        movie.save()

        response = self.client.get('/movies/')
        self.assertEqual(response.json()['movies'],
                         [
                             {
                                 'title': 'Song of Ice and Fire',
                                 'year': '2020',
                                 'runtime': '136 min',
                                 'genre': 'Fantasy',
                                 'external_api_response': {}
                             },
                             {
                                 'title': 'Song of Water and Mud',
                                 'year': '2020',
                                 'runtime': '136 min',
                                 'genre': 'Fantasy',
                                 'external_api_response': {}
                             },
                         ])
コード例 #2
0
ファイル: tests.py プロジェクト: wieczorek1990/movies-2
    def test_list(self):
        first_movie = models.Movie(title='Song of Water and Mud',
                                   year='2020',
                                   runtime='136 min',
                                   genre='Fantasy',
                                   external_api_response={})
        first_movie.save()
        second_movie = models.Movie(title='Song of Ice and Fire',
                                    year='2020',
                                    runtime='136 min',
                                    genre='Fantasy',
                                    external_api_response={})
        second_movie.save()

        comment = models.Comment(movie=first_movie, text_body='It is my first comment.')
        comment.save()
        comment = models.Comment(movie=first_movie, text_body='It is my second comment.')
        comment.save()
        comment = models.Comment(movie=second_movie, text_body='It is my third comment.')
        comment.save()

        response = self.client.get('/comments/')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()['comments']), 3)

        response = self.client.get('/comments/?movie_pk={}'.format(second_movie.pk))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()['comments']), 1)
コード例 #3
0
    def post(cls, request):
        serializer = serializers.CreateMovieSerializer(data=request.data)
        if not serializer.is_valid():
            return response.Response(status=400)
        title = serializer.validated_data['title']

        body = cls.get_omdb_api_body(title)
        body = {key.lower(): value for key, value in body.items()}

        try:
            movie = models.Movie.objects.get(title=body['title'])
            status = 200
        except models.Movie.DoesNotExist:
            movie = models.Movie(title=body['title'],
                                 year=body['year'],
                                 runtime=body['runtime'],
                                 genre=body['genre'],
                                 external_api_response=body)
            movie.save()
            status = 201

        return response.Response(status=status,
                                 data={
                                     'movie': movie.to_json(),
                                     'external_api_response': body,
                                 })
コード例 #4
0
ファイル: tests.py プロジェクト: wieczorek1990/movies-2
 def test_delete(self):
     movie = models.Movie(title='Song of Water and Mud',
                          year='2020',
                          runtime='136 min',
                          genre='Fantasy',
                          external_api_response={})
     movie.save()
     response = self.client.delete('/movies/{}/'.format(movie.pk))
     self.assertEqual(response.status_code, 204)
コード例 #5
0
ファイル: tests.py プロジェクト: wieczorek1990/movies-2
    def test_top(self):
        first_movie = models.Movie(title='Song of Water and Mud 1',
                                   year='2020',
                                   runtime='136 min',
                                   genre='Fantasy',
                                   external_api_response={})
        first_movie.save()
        comment = models.Comment(movie=first_movie, text_body='1')
        comment.save()
        comment = models.Comment(movie=first_movie, text_body='1')
        comment.save()
        second_movie = models.Movie(title='Song of Water and Mud 2',
                                    year='2020',
                                    runtime='136 min',
                                    genre='Fantasy',
                                    external_api_response={})
        second_movie.save()
        comment = models.Comment(movie=second_movie, text_body='1')
        comment.save()
        third_movie = models.Movie(title='Song of Water and Mud 3',
                                   year='2020',
                                   runtime='136 min',
                                   genre='Fantasy',
                                   external_api_response={})
        third_movie.save()
        comment = models.Comment(movie=third_movie, text_body='1')
        comment.save()
        fourth_movie = models.Movie(title='Song of Water and Mud 4',
                                    year='2020',
                                    runtime='136 min',
                                    genre='Fantasy',
                                    external_api_response={})
        fourth_movie.save()

        now = django.utils.timezone.now()
        day_ago = now - timedelta(days=1)
        start = day_ago.timestamp()
        end = now.timestamp()
        response = self.client.get('/top/?start={}&end={}'.format(start, end))
        self.assertEqual(response.status_code, 200)
        self.assertListEqual(response.json(),
                             [{'movie_id': first_movie.pk, 'rank': 1, 'total_comments': 2},
                              {'movie_id': second_movie.pk, 'rank': 2, 'total_comments': 1},
                              {'movie_id': third_movie.pk, 'rank': 2, 'total_comments': 1}])
コード例 #6
0
ファイル: tests.py プロジェクト: wieczorek1990/movies-2
    def test_create(self):
        movie = models.Movie(title='Song of Water and Mud',
                             year='2020',
                             runtime='136 min',
                             genre='Fantasy',
                             external_api_response={})
        movie.save()

        response = self.client.post('/comments/',
                                    data={'movie': movie.pk,
                                          'text_body': 'My first comment ever.'},
                                    content_type='application/json')
        self.assertEqual(response.status_code, 200)
コード例 #7
0
ファイル: tests.py プロジェクト: wieczorek1990/movies-2
 def test_update(self):
     movie = models.Movie(title='Song of Water and Mud',
                          year='2020',
                          runtime='136 min',
                          genre='Fantasy',
                          external_api_response={})
     movie.save()
     response = self.client.put('/movies/{}/'.format(movie.pk),
                                data={'title': 'Song of Ice and Mud',
                                      'year': '2021',
                                      'runtime': '133 min',
                                      'genre': 'Science Fiction'},
                                content_type='application/json')
     self.assertEqual(response.status_code, 200)
     movie = models.Movie.objects.get(pk=movie.pk)
     self.assertEqual(movie.to_json(),
                      {'title': 'Song of Ice and Mud',
                       'year': '2021',
                       'runtime': '133 min',
                       'genre': 'Science Fiction',
                       'external_api_response': {}})