src/protocols/tests/serializers.py
author ymh <ymh.work@gmail.com>
Fri, 30 Nov 2018 10:53:15 +0100
changeset 183 f8f3af9e5c83
parent 142 56850f5c73f6
permissions -rw-r--r--
Change the settings to avoid using Session authentication for rest framework as it raise exceptions in case client and backend are on the same domain On the filter, adapt to take into account new version of django_filters

import logging

from django.contrib.auth import get_user_model
from django.test import TestCase
from protocols.models import (Metacategory, MetacategoryRevision, Protocol,
                              ProtocolRevision)
from protocols.serializers import (MetacategoryRevisionSerializer,
                                   ProtocolRevisionSerializer)

# Create your tests here.

logger = logging.getLogger(__name__)

class SerializerTest(TestCase):

    maxDiff=None

    def setUp(self):
        User = get_user_model()
        self.user1 = User.objects.create_user(
            username='user1',
            email='user1@email.com',
            password='hiddenpassword'
        )

    def test_protocol_simple_serialization(self):
        protocol = Protocol.objects.create(app=self.user1, owner='admin')
        protocol_revision = ProtocolRevision.objects.create(title="protocol1", description="Protocol nº1", protocol=protocol)
        serializer = ProtocolRevisionSerializer(protocol_revision)

        expected_data = {
            'id': str(protocol.ext_id),
            'version': 1,
            'title': 'protocol1',
            'description': 'Protocol nº1',
            'owner' : 'admin',
            'metacategories' : []
        }

        self.assertDictEqual(expected_data, serializer.data)


    def test_protocol_complete_serialization(self):
        protocol = Protocol.objects.create(app=self.user1, owner='admin')
        protocol_revision = ProtocolRevision.objects.create(title="protocol2", description="Protocol nº2", protocol=protocol)

        metacategory1 = Metacategory.objects.create(
            app=self.user1,
            title="Important base",
            label="important-base",
            description="Important base.",
            color="#F1C41F",
            has_comment=False,
            is_default=False
        )
        metacategory_revision1 = MetacategoryRevision.objects.create(
            base=metacategory1,
            title="Important",
            label="important",
            description="Important.",
            color="#F1C40F",
            has_comment=False
        )

        metacategory2 = Metacategory.objects.create(
            app=self.user1,
            title="Mot-clé base",
            label="mot-cle-base",
            description="Mot-clé base.",
            color="#2ECC72",
            has_comment=False,
            is_default=False
        )
        metacategory_revision2 = MetacategoryRevision.objects.create(
            base=metacategory2,
            title="Mot-clé",
            label="mot-cle",
            description="Mot-clé.",
            color="#2ECC71",
            has_comment=False
        )

        metacategory3 = Metacategory.objects.create(
            app=self.user1,
            title="Commentaire base",
            label="commentaire-base",
            description="Commentaire base.",
            color="#3498DC",
            has_comment=False,
            is_default=False
        )
        metacategory_revision3 = MetacategoryRevision.objects.create(
            base=metacategory3,
            title="Commentaire",
            label="commentaire",
            description="Commentaire.",
            color="#3498DB",
            has_comment=True
        )

        protocol_revision.metacategories.add(metacategory_revision1, metacategory_revision2, metacategory_revision3)

        serializer = ProtocolRevisionSerializer(protocol_revision)

        expected_data = {
            'id': str(protocol.ext_id),
            'owner': 'admin',
            'version': 1,
            'title': 'protocol2',
            'description': 'Protocol nº2',
            'metacategories' : [{
                'id': str(metacategory_revision1.ext_id),
                'base': str(metacategory1.ext_id),
                'title': 'Important',
                'label': 'important',
                'description': "Important.",
                'color': '#F1C40F',
                'version': 1,
                'has_comment': False
            }, {
                'id': str(metacategory_revision2.ext_id),
                'base': str(metacategory2.ext_id),
                'title': 'Mot-clé',
                'label': 'mot-cle',
                'description': "Mot-clé.",
                'color': '#2ECC71',
                'version': 1,
                'has_comment': False
            }, {
                'id': str(metacategory_revision3.ext_id),
                'base': str(metacategory3.ext_id),
                'title': 'Commentaire',
                'label': 'commentaire',
                'description': "Commentaire.",
                'color': '#3498DB',
                'version': 1,
                'has_comment': True
            }]
        }

        self.assertDictEqual(expected_data, serializer.data)


    def test_metacategory_simple_serialization(self):
        metacategory = Metacategory.objects.create(
            app=self.user1,
            title="Important",
            label="important",
            description="Important.",
            color="#F1C40F",
            has_comment=False,
            is_default=False
        )
        metacategory_revision = MetacategoryRevision.objects.create(
            base=metacategory,
            title="Important",
            label="important",
            description="Important.",
            color="#F1C40F",
            has_comment=False
        )
        serializer = MetacategoryRevisionSerializer(metacategory_revision)

        expected_data = {
            'id': str(metacategory_revision.ext_id),
            'base': str(metacategory.ext_id),
            'title': 'Important',
            'label': 'important',
            'description': "Important.",
            'color': '#F1C40F',
            'version': 1,
            'has_comment': False
        }

        self.assertDictEqual(expected_data, serializer.data)