Exemplo n.º 1
0
    def test_planet_have_films_field(self):
        """ Check if films list is present in planet object """

        planet = Planet.objects.get(name="Tatooine")
        request = self.factory.get(self.object_url(planet.pk))
        planet_retrieve = PlanetViewSet.as_view({'get': 'retrieve'})
        response = planet_retrieve(request, pk=planet.pk)
        self.assertTrue('films' in response.data.keys())
        self.assertIsInstance(response.data['films'], list)
Exemplo n.º 2
0
    def test_delete_planet(self):
        """ DELETE planet """

        planet = Planet.objects.last()
        request = self.factory.delete(self.object_url(planet.pk))
        planet_destoy = PlanetViewSet.as_view({'delete': 'destroy'})
        response = planet_destoy(request, pk=planet.pk)
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
        self.assertFalse(Planet.objects.filter(pk=planet.pk).exists())
Exemplo n.º 3
0
    def test_planet_retrieve(self):
        """ GET planet object """

        planet = Planet.objects.first()
        request = self.factory.get(self.object_url(planet.pk))
        serializer = PlanetSerializer(planet, context={'request': request})
        planet_retrieve = PlanetViewSet.as_view({'get': 'retrieve'})
        response = planet_retrieve(request, pk=planet.pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data, serializer.data)
Exemplo n.º 4
0
    def test_search_planet_by_terrain(self):
        """ Get planet by terrain """

        planet = Planet.objects.get(terrain='deserts')
        request = self.factory.get("%s?terrain=%s" %
                                   (self.path, planet.terrain))
        serializer = PlanetSerializer(planet, context={'request': request})
        planet_list = PlanetViewSet.as_view({'get': 'list'})
        response = planet_list(request)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn(serializer.data, response.data['results'])
Exemplo n.º 5
0
    def test_search_planet_by_name_exact(self):
        """ Get planet by name with exact lookup"""

        planet = Planet.objects.get(name__iexact='Tatooine')
        request = self.factory.get("%s?name__exact=%s" %
                                   (self.path, planet.name))
        serializer = PlanetSerializer(planet, context={'request': request})
        planet_list = PlanetViewSet.as_view({'get': 'list'})
        response = planet_list(request)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(next(iter(response.data['results'])), serializer.data)
Exemplo n.º 6
0
    def test_search_planet_by_name(self):
        """ Get planet by name """

        planet = Planet.objects.first()
        request = self.factory.get("%s?name=%s" %
                                   (self.path, planet.name.lower()))
        serializer = PlanetSerializer(planet, context={'request': request})
        planet_list = PlanetViewSet.as_view({'get': 'list'})
        response = planet_list(request)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(next(iter(response.data['results'])), serializer.data)
Exemplo n.º 7
0
    def test_partial_update_planet(self):
        """ PATCH planet """

        planet = Planet.objects.last()
        new_data = {"terrain": "a nice great terrain"}
        request = self.factory.patch(self.object_url(planet.pk), data=new_data)
        planet_partial_update = PlanetViewSet.as_view(
            {'patch': 'partial_update'})
        response = planet_partial_update(request, pk=planet.pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(
            Planet.objects.filter(terrain=new_data['terrain']).exists())
Exemplo n.º 8
0
    def test_planet_list(self):
        """ GET planets """

        request = self.factory.get(self.path)
        planets = Planet.objects.all()
        serializer = PlanetSerializer(planets,
                                      many=True,
                                      context={'request': request})
        planet_list = PlanetViewSet.as_view({'get': 'list'})
        response = planet_list(request)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data['results'], serializer.data)
Exemplo n.º 9
0
    def test_create_planet(self):
        """ POST planets """

        data = {
            "name": "Polis Massa",
            "climate": "artificial temperate",
            "terrain": "airless asteroid"
        }
        request = self.factory.post(self.path, data=data)
        planet_create = PlanetViewSet.as_view({'post': 'create'})
        response = planet_create(request)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertTrue(Planet.objects.filter(name="Polis Massa").exists())
Exemplo n.º 10
0
    def test_update_planet(self):
        """ PUT planet """

        planet = Planet.objects.create(name="x", climate="y", terrain="x")
        new_data = {
            "name": "Rodia",
            "climate": "hot",
            "terrain": "jungles, oceans, urban, swamps"
        }
        request = self.factory.put(self.object_url(planet.pk), data=new_data)
        planet_update = PlanetViewSet.as_view({'put': 'update'})
        response = planet_update(request, pk=planet.pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(Planet.objects.filter(name="Rodia").exists())
Exemplo n.º 11
0
    def test_planet_films_appearances_calc(self):
        """ Check field films_appearances is properly calculated """

        planet = Planet.objects.get(name="Tatooine")
        planet_films = [
            f"{settings.SWAPI_URL}/films/1/", f"{settings.SWAPI_URL}/films/3/",
            f"{settings.SWAPI_URL}/films/4/", f"{settings.SWAPI_URL}/films/5/",
            f"{settings.SWAPI_URL}/films/6/"
        ]
        request = self.factory.get(self.object_url(planet.pk))
        planet_retrieve = PlanetViewSet.as_view({'get': 'retrieve'})
        response = planet_retrieve(request, pk=planet.pk)
        self.assertTrue('films_appearances' in response.data.keys())
        self.assertIsInstance(response.data['films_appearances'], int)
        self.assertEqual(response.data['films_appearances'], len(planet_films))