def test_get_parent_object(self): """ Tests that get_parent_object() returns the correct parent object. """ repo = models.Repository.objects.create(name='foo') viewset = viewsets.RepositoryVersionViewSet() viewset.kwargs = {'repository_pk': repo.pk} self.assertEquals(repo, viewset.get_parent_object())
def test_no_parent_object(self): """ Tests that get_parent_field_and_object() raises django.http.Http404 if the parent object does not exist on a nested viewset. """ viewset = viewsets.RepositoryVersionViewSet() viewset.kwargs = {'repository_pk': 500} with self.assertRaises(Http404): viewset.get_parent_field_and_object()
def test_get_parent_field_and_object(self): """ Tests that get_parent_field_and_object() returns the correct parent field and parent object. """ repo = models.Repository.objects.create(name="foo") viewset = viewsets.RepositoryVersionViewSet() viewset.kwargs = {"repository_pk": repo.pk} self.assertEquals(("repository", repo), viewset.get_parent_field_and_object())
def test_adds_filters(self): """ Tests to make sure the correct lookup is being added to the queryset based on its 'parent_lookup_kwargs' value. """ repo = models.Repository.objects.create(name='foo') repo2 = models.Repository.objects.create(name='foo2') # no concurrency so this is fine models.RepositoryVersion.objects.create(repository=repo, number=1) models.RepositoryVersion.objects.create(repository=repo2, number=1) viewset = viewsets.RepositoryVersionViewSet() viewset.kwargs = {'repository_pk': repo.pk} queryset = viewset.get_queryset() expected = models.RepositoryVersion.objects.filter( repository__pk=repo.pk) # weird, stupid django quirk # https://docs.djangoproject.com/en/2.0/topics/testing/tools/#django.test.TransactionTestCase.assertQuerysetEqual self.assertQuerysetEqual(queryset, map(repr, expected))