src/notes/tests/api/fields.py
author ymh <ymh.work@gmail.com>
Wed, 18 Jul 2018 17:32:09 +0200
changeset 142 56850f5c73f6
permissions -rw-r--r--
- upgrade libraries - python 3.7 compatibility - First protocol management implementation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
142
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
"""
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
Tests the core api for sessions
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
"""
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
import logging
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
from django.contrib.auth import get_user_model
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
from django.contrib.auth.models import Group
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
from django.urls import reverse
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
from django.utils import timezone
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
from notes import constants
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
from notes.api.fields import ProtocolField
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
from rest_framework import serializers, status
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
from rest_framework.test import APITransactionTestCase
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
logger = logging.getLogger(__name__)
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
class ProtocolFieldTests(APITransactionTestCase):
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
    def setUp(self):
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
        User = get_user_model()
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
        self.user1 = User.objects.create_user(
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
            username='test_user1',
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
            email='test_user@emial.com',
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
            password='top_secret'
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
        )
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
        self.group = Group(name='group1')
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
        self.group.save()
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
        self.group.profile.owner = self.user1
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
        self.group.profile.save()
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    def test_to_representation(self):
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
        class GroupSerializer(serializers.Serializer):
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
            protocol = ProtocolField(source='profile.protocol')
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
        serializer = GroupSerializer(self.group)
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
        data = serializer.data
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
        logger.debug("serializer data : %r", repr(data))
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
        self.assertIn('protocol', data)
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
        protocol_data = data.get('protocol')
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
        self.assertIn('id', protocol_data)
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
        self.assertEqual(self.group.profile.protocol, "%s%s.%s" % (constants.PROTOCOL_URN_PREFIX,protocol_data['id'], protocol_data['version']))
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
    def test_to_internal_value(self):
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
        protocol_field = ProtocolField()
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
        protocol_id, protocol_version = self.group.profile.protocol[len(constants.PROTOCOL_URN_PREFIX):].split('.')
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
        data = {
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
            'id': protocol_id,
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
            'owner': 'group1',
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
            'title': 'Protocol group group1',
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
            'description': 'Protocol group group1',
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
            'version': protocol_version,
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
            'metacategories': []
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
        }
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
        value = protocol_field.to_internal_value(data)
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
        self.assertEqual(value, self.group.profile.protocol)