src/protocols/tests/serializers.py
author ymh <ymh.work@gmail.com>
Tue, 04 Dec 2018 18:56:31 +0100
changeset 192 e4c2c1919c20
parent 142 56850f5c73f6
permissions -rw-r--r--
Add placeholder translation for empty title and description

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)