diff options
Diffstat (limited to 'apps/notes/tests/test_views.py')
-rw-r--r-- | apps/notes/tests/test_views.py | 58 |
1 files changed, 44 insertions, 14 deletions
diff --git a/apps/notes/tests/test_views.py b/apps/notes/tests/test_views.py index 3f21b0b..05cb8db 100644 --- a/apps/notes/tests/test_views.py +++ b/apps/notes/tests/test_views.py @@ -1,9 +1,11 @@ import json from django.test import Client from django.test import RequestFactory, TestCase +from django.urls import reverse from rest_framework.test import force_authenticate from rest_framework.test import APIRequestFactory +from rest_framework.test import APIClient from mixer.backend.django import mixer from accounts.models import User @@ -11,28 +13,32 @@ from notes.models import Note from notes.views import NoteListView, NoteViewSet -class StoriesViewTest(TestCase): +class NotesViewsTest(TestCase): def setUp(self): # Every test needs access to the request factory. self.factory = RequestFactory() # test API with rest framework request factory. self.apifactory = APIRequestFactory() - self.user = mixer.blend(User, username='tpynchon', password="gravity") + self.client = Client() + # and test with rest client + self.apiclient = APIClient() + self.user = User.objects.create(username='testuser', password='password') + self.bad_user = User.objects.create(username='someoneelse', password='password') self.note = Note.objects.create( created_by=self.user, title="test note", - body_markdown="the body of the note", + body="the body of the note", url="https://luxagraf.net/", ) self.note.tags.add("mine,cool site") self.note.save() def test_list_view(self): - request = self.factory.get('/%s/notes/' % (self.user.username)) + request = self.factory.get('/notes/') request.user = self.user response = NoteListView.as_view()(request) self.assertEqual(response.status_code, 200) - response.render() + # bad_user def test_api_list(self): # Make an authenticated request to the view... @@ -45,13 +51,37 @@ class StoriesViewTest(TestCase): self.assertEqual(api_data['title'], 'test note') self.assertEqual(api_data['tags'], ['mine,cool site']) - def test_api_(self): - # Make an authenticated request to the view... - request = self.factory.get('/api/notes/') - force_authenticate(request, user=self.user) - response = NoteViewSet.as_view({'get': 'list'})(request) - self.assertEqual(response.status_code, 200) + def test_note_create(self): + ''' + post some data to create a new note + ''' + data = { + 'title': "test note post", + 'body': "the body of the note", + 'url': "https://luxagraf.net/", + 'tags': [], + } + self.apiclient.force_authenticate(self.user) + url = reverse("notes:notes-list") + response = self.apiclient.post(url, data, format='json') + self.assertEqual(response.status_code, 201) + self.assertEqual(Note.objects.count(), 2) response.render() - api_data = json.loads(response.content.decode('utf8'))[0] - self.assertEqual(api_data['title'], 'test note') - self.assertEqual(api_data['tags'], ['mine,cool site']) + api_data = json.loads(response.content.decode('utf8')) + self.assertEqual(api_data['title'], 'test note post') + self.assertEqual(api_data['body'], 'the body of the note') + self.assertEqual(api_data['tags'], []) + + def test_note_create_bad(self): + # create another user + data = { + 'title': "", + 'body': "the body of the note", + 'url': "https://luxagraf.net/", + 'tags': [], + } + url = reverse("notes:notes-list") + self.apiclient.force_authenticate(self.user) + response = self.apiclient.post(url, data, format='json') + self.assertEqual(response.status_code, 400) + self.assertEqual(Note.objects.count(), 1) |