src/notes/tests/api/fields.py
changeset 142 56850f5c73f6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/notes/tests/api/fields.py	Wed Jul 18 17:32:09 2018 +0200
@@ -0,0 +1,64 @@
+"""
+Tests the core api for sessions
+"""
+import logging
+
+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 notes import constants
+from notes.api.fields import ProtocolField
+from rest_framework import serializers, status
+from rest_framework.test import APITransactionTestCase
+
+logger = logging.getLogger(__name__)
+
+class ProtocolFieldTests(APITransactionTestCase):
+
+    def setUp(self):
+        User = get_user_model()
+        self.user1 = User.objects.create_user(
+            username='test_user1',
+            email='test_user@emial.com',
+            password='top_secret'
+        )
+
+        self.group = Group(name='group1')
+        self.group.save()
+        self.group.profile.owner = self.user1
+        self.group.profile.save()
+
+
+    def test_to_representation(self):
+        class GroupSerializer(serializers.Serializer):
+            protocol = ProtocolField(source='profile.protocol')
+
+        serializer = GroupSerializer(self.group)
+        data = serializer.data
+
+        logger.debug("serializer data : %r", repr(data))
+
+        self.assertIn('protocol', data)
+        protocol_data = data.get('protocol')
+
+        self.assertIn('id', protocol_data)
+        self.assertEqual(self.group.profile.protocol, "%s%s.%s" % (constants.PROTOCOL_URN_PREFIX,protocol_data['id'], protocol_data['version']))
+
+    def test_to_internal_value(self):
+        protocol_field = ProtocolField()
+
+        protocol_id, protocol_version = self.group.profile.protocol[len(constants.PROTOCOL_URN_PREFIX):].split('.')
+
+        data = {
+            'id': protocol_id,
+            'owner': 'group1',
+            'title': 'Protocol group group1',
+            'description': 'Protocol group group1',
+            'version': protocol_version,
+            'metacategories': []
+        }
+
+        value = protocol_field.to_internal_value(data)
+
+        self.assertEqual(value, self.group.profile.protocol)