def test_get_success(self): """Snippet list GET must return all the viewable snippets.""" create_snippet('foo') create_snippet('bar') response = self.get() self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 2) self.assertEqual(response.data[0]['content'], 'foo') self.assertEqual(response.data[1]['content'], 'bar')
def check_pagination(self, **kwargs): """Check that this view is able to handle pagination.""" for i in range(20): create_snippet(i, **kwargs) SnippetViewSet.pagination_class = _SnippetPagination try: response = self.get() self.assertEqual(len(response.data['results']), 10) finally: SnippetViewSet.pagination_class = None
def test_get_success(self): """User snippet list GET must return the queried user's viewable snippets. """ snippet = create_snippet('bar', owner=self.user) create_snippet('baz') create_snippet('test', owner=self.staff_user) response = self.get() self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 2) self.assertEqual(response.data[0]['id'], self.snippet.pk) self.assertEqual(response.data[1]['id'], snippet.pk)
def test_get_private(self): """Snippet list GET must return private snippets only to those authorized to view them. """ owner = create_user('owner') create_snippet('foo', private=True, owner=owner) expected = [0, 0, 1, 1] def check(i): response = self.get() self.assertEqual(len(response.data), expected[i]) self.check_for_users(check, owner)
def test_get_list_foreign(self): """Snippet list GET must not return snippets owned by other users if the LIST_FOREIGN setting is True, unless requested by a staff user. """ create_snippet('foo') create_snippet('bar', owner=self.user) expected = [0, 1, 2] def check(i): response = self.get() self.assertEqual(len(response.data), expected[i]) with constant('LIST_FOREIGN', False): self.check_for_users(check)
def test_language(self): """Snippet highlight GET must return an HTML page of the queried snippet's highlighted contents if its language is set. """ snippet = create_snippet('print("hello")', language='python') response = self.get(pk=snippet.pk) self.check_response(response, 'print("hello")')
def test_title_exclude(self): """Snippet highlight GET must return a response not containing the queried snippet's title if its embed_title field is False. """ snippet = create_snippet( 'example', title='baz 43!', embed_title=False) response = self.get('?full', pk=snippet.pk) self.assertNotIn('baz 43!', _response_text(response))
def test_get_private(self): """Snippet detail GET must return the private queried snippet only to those authorized to view it. """ owner = create_user('owner') snippet = create_snippet('testing', private=True, owner=owner) expected = [status.HTTP_404_NOT_FOUND] * 2 + [status.HTTP_200_OK] * 2 def check(i): self.assert_status('get', expected[i], pk=snippet.pk) self.check_for_users(check, owner)
def request(self, method_name, **kwargs): """Create a dummy snippet owned by the dummy user, authenticate as the dummy user, then send a request to the view's URL its type being specified by given method name, with given kwargs, as JSON, using the proper content-type and return the response. """ if kwargs: kwargs = {'data': json.dumps(kwargs)} snippet = create_snippet( 'content', title='title', language='python', embed_title=False, owner=self.user) self.client.force_authenticate(self.user) method = getattr(self.client, method_name) return method( self.url(pk=snippet.pk), content_type='application/json', **kwargs)
def setUp(self): """Create and store a dummy snippet.""" self.snippet = create_snippet('foo', owner=self.user)
def test_str_untitled(self): """An untitled snippet's string representation must include the localized string "Untitled" and its pk. """ snippet = create_snippet('foo') self.assertEqual(str(snippet), f'{_("Untitled")} ({snippet.pk})')
def test_str_titled(self): """A titled snippet's string representation must include its title and its pk. """ snippet = create_snippet('foo', title='bar') self.assertEqual(str(snippet), f'bar ({snippet.pk})')
def setUp(self): """Create a dummy snippet.""" create_snippet('foobaz bar', title='baz 42!')
def check(j): snippet = create_snippet('baz', owner=owner) self.assert_status(method, expected[i][j], pk=snippet.pk) snippet.delete()