--- a/src/notes/tests/api/session.py Sun Jul 30 01:02:09 2017 +0200
+++ b/src/notes/tests/api/session.py Mon Jul 31 23:18:38 2017 +0200
@@ -6,12 +6,13 @@
from uuid import uuid4
from django.contrib.auth import get_user_model
+from django.contrib.auth.models import Group
from django.urls import reverse
from django.utils import timezone
from rest_framework import status
from rest_framework.test import APITransactionTestCase
-from notes.models import Session, Note
+from notes.models import Session, Note, GroupProfile
logger = logging.getLogger(__name__)
@@ -19,12 +20,12 @@
def setUp(self):
User = get_user_model()
- user1 = User.objects.create_user(
+ self.user1 = User.objects.create_user(
username='test_user1',
email='test_user@emial.com',
password='top_secret'
)
- user2 = User.objects.create_user(
+ self.user2 = User.objects.create_user(
username='test_user2',
email='test_user@emial.com',
password='top_secret'
@@ -35,24 +36,38 @@
password='top_secret'
)
+ self.group1 = Group(name='group1')
+ self.group1.save()
+ self.group1.user_set.add(self.user1)
+ self.group1.user_set.add(self.user2)
+ self.group1.profile.owner = self.user1
+ self.group1.profile.description = "This is the group 1"
+ self.group1.profile.save()
+
+ self.user2.profile.default_group = self.group1
+ self.user2.profile.save()
+
self.session1 = Session.objects.create(
title="a new session 1",
description="Description 1",
protocol="[]",
- owner=user1
+ group=self.user1.profile.default_group,
+ owner=self.user1
)
self.session2 = Session.objects.create(
title="a new session 2",
description="Description 2",
protocol="[]",
- owner=user2
+ group=self.user2.profile.default_group,
+ owner=self.user2
)
self.session3 = Session.objects.create(
title="a new session 3",
description="Description 3",
protocol="[]",
+ group=user3.profile.default_group,
owner=user3
)
@@ -60,6 +75,7 @@
title="a new session 4",
description="Description 4",
protocol="[]",
+ group=user3.profile.default_group,
owner=user3
)
@@ -150,14 +166,89 @@
response = self.client.post(url, {
'title': "a new session",
'description': "description of the session",
- 'protocol': "[]"
+ 'protocol': "[]",
+ 'group': 'group1'
}, format='json')
-
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
json = response.json()
self.assertIn('ext_id', json)
+ session = Session.objects.get(ext_id=json['ext_id'])
+ self.assertIsNotNone(session)
+ self.assertEqual(self.group1, session.group)
+
+
+ def test_create_session_no_group(self):
+ url = reverse('notes:session-list')
+ self.client.login(username='test_user1', password='top_secret')
+ response = self.client.post(url, {
+ 'title': "a new session",
+ 'description': "description of the session",
+ 'protocol': "[]",
+ }, format='json')
+
+ self.assertEqual(response.status_code, status.HTTP_201_CREATED, "Error when creating session %r" % response.json())
+ json = response.json()
+ self.assertIn('ext_id', json)
+
+ session = Session.objects.get(ext_id=json['ext_id'])
+ self.assertIsNotNone(session)
+ user1_personal_group = Group.objects.get(profile__owner_personal=self.user1)
+ self.assertEqual(user1_personal_group, session.group)
+
+ def test_create_session_no_group_default(self):
+ url = reverse('notes:session-list')
+ self.client.login(username='test_user2', password='top_secret')
+ response = self.client.post(url, {
+ 'title': "a new session",
+ 'description': "description of the session",
+ 'protocol': "[]",
+ }, format='json')
+
+ self.assertEqual(response.status_code, status.HTTP_201_CREATED, "Error when creating session %r" % response.json())
+ json = response.json()
+ self.assertIn('ext_id', json)
+
+ session = Session.objects.get(ext_id=json['ext_id'])
+ self.assertIsNotNone(session)
+ self.assertEqual(self.group1, session.group)
+
+
+ def test_create_session_no_group_default(self):
+ url = reverse('notes:session-list')
+ self.client.login(username='test_user2', password='top_secret')
+ response = self.client.post(url, {
+ 'title': "a new session",
+ 'description': "description of the session",
+ 'protocol': "[]",
+ }, format='json')
+
+ self.assertEqual(response.status_code, status.HTTP_201_CREATED, "Error when creating session %r" % response.json())
+ json = response.json()
+ self.assertIn('ext_id', json)
+
+ session = Session.objects.get(ext_id=json['ext_id'])
+ self.assertIsNotNone(session)
+ self.assertEqual(self.group1, session.group)
+
+
+ def test_create_session_bad_group(self):
+ url = reverse('notes:session-list')
+ self.client.login(username='test_user3', password='top_secret')
+ response = self.client.post(url, {
+ 'title': "a new session",
+ 'description': "description of the session",
+ 'protocol': "[]",
+ 'group': "group1"
+ }, format='json')
+
+ self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
+ json = response.json()
+ self.assertIn('non_field_errors', json)
+ self.assertIn('Owner must be in group', json['non_field_errors'])
+
+
def test_create_session_with_ext_id(self):
url = reverse('notes:session-list')
self.client.login(username='test_user1', password='top_secret')
@@ -166,6 +257,7 @@
'ext_id': ext_id,
'title': "a new session",
'description': "description of the session",
+ 'group': 'group1',
'protocol': "[]"
}, format='json')