<commit_before># coding: utf-8

from uuid import uuid4

from base import BaseTestCase

from opac_schema.v1 import models

from app import controllers

import utils


class JournalControllerTestCase(BaseTestCase):

    def _makeOne(self, attrib=None):
        """
        Retorna um objeto ``Journal`` com os atributos obrigatórios:
        ``_id``, ``jid``, ``is_public``, o param ``attrib`` atualiza os
        atributos do objeto.
        """
        return utils.makeOneJournal(attrib=attrib)

    def _makeAny(self, items=3):
        """
        Retorna uma lista de objetos ``Journal`` com atributos ``jid``,
        ``is_public`` e ``acronym`` limitando a quantidade pelo param ``items``.
        """
        return utils.makeAnyJournal(items=items)

    def tearDown(self):
        """
        Remove todos os objectos ``Journal`` ao terminar cada teste.
        """
        models.Journal.objects.delete()

    def test_get_journal(self):
        """
        Teste da função controllers.get_journals() para retornar um objeto:
        ``Journal``.
        """
        journal = self._makeOne()
        self.assertEqual(controllers.get_journals()[0], journal)

    def test_get_public_journal(self):
        """
        Teste da função controllers.get_journals() para retorna um objeto:
        ``Journal`` explicitanto o artibuto is_public=True.
        """
        journal = self._makeOne()
        self.assertEqual(controllers.get_journals(is_public=True)[0], journal)

    def test_get_not_public_journal(self):
        """
        Teste da função controllers.get_journals() para retorna um objeto:
        ``Journal`` explicitanto o artibuto is_public=False.
        """
        journal = self._makeOne({'is_public': False})
        self.assertEqual(controllers.get_journals(is_public=False)[0], journal)

    def test_get_journal_order_by_acronym(self):
        """
        Teste da função controllers.get_journals() para retorna um objeto:
        ``Journal`` considerando a ordenação por acrônimo.
        """
        journalC = self._makeOne({'acronym': 'revistaC'})
        journalA = self._makeOne({'acronym': 'revistaA'})
        journalB = self._makeOne({'acronym': 'revistaB'})

        self.assertListEqual(
            [journal for journal in controllers.get_journals(order_by='acronym')],
            [journalA, journalB, journalC])

    def test_get_journal_without_itens(self):
        """
        Testando a função controllers.get_journals() com uma coleção de Journal
        vazia, deve retornar ``None``.
        """
        self.assertFalse(controllers.get_journals())

    def test_get_journals_by_study_area(self):
        """
        Testando se o retorno da função controllers.get_journals_by_study_area()
        está de acordo com o esperado.
        """

        journal1 = self._makeOne({"study_areas": ["Health Sciences"]})

        journal2 = self._makeOne({"study_areas": ["Health Sciences",
                                  "Biological Sciences"]})
        journal3 = self._makeOne({"study_areas": ["Exact and Earth Sciences"]})
        journal4 = self._makeOne({"study_areas": ["Human Sciences",
                                  "Biological Sciences", "Engineering"]})
        journal5 = self._makeOne({"study_areas": ["Linguistics"]})
        journal6 = self._makeOne({"study_areas": ["Engineering"]})

        expected = {<commit_msg>Update test_controller.py<commit_after># coding: utf-8

from uuid import uuid4

from base import BaseTestCase

from opac_schema.v1 import models

from app import controllers

import utils


class JournalControllerTestCase(BaseTestCase):

    def _makeOne(self, attrib=None):
        """
        Retorna um objeto ``Journal`` com os atributos obrigatórios:
        ``_id``, ``jid``, ``is_public``, o param ``attrib`` atualiza os
        atributos do objeto.
        """
        return utils.makeOneJournal(attrib=attrib)

    def _makeAny(self, items=3):
        """
        Retorna uma lista de objetos ``Journal`` com atributos ``jid``,
        ``is_public`` e ``acronym`` limitando a quantidade pelo param ``items``.
        """
        return utils.makeAnyJournal(items=items)

    def tearDown(self):
        """
        Remove todos os objectos ``Journal`` ao terminar cada teste.
        """
        models.Journal.objects.delete()

    def test_get_journal(self):
        """
        Teste da função controllers.get_journals() para retornar um objeto:
        ``Journal``.
        """
        journal = self._makeOne()
        self.assertEqual(controllers.get_journals()[0], journal)

    def test_get_public_journal(self):
        """
        Teste da função controllers.get_journals() para retorna um objeto:
        ``Journal`` explicitanto o artibuto is_public=True.
        """
        journal = self._makeOne()
        self.assertEqual(controllers.get_journals(is_public=True)[0], journal)

    def test_get_not_public_journal(self):
        """
        Teste da função controllers.get_journals() para retorna um objeto:
        ``Journal`` explicitanto o artibuto is_public=False.
        """
        journal = self._makeOne({'is_public': False})
        self.assertEqual(controllers.get_journals(is_public=False)[0], journal)

    def test_get_journal_order_by_acronym(self):
        """
        Teste da função controllers.get_journals() para retorna um objeto:
        ``Journal`` considerando a ordenação por acrônimo.
        """
        journalC = self._makeOne({'acronym': 'revistaC'})
        journalA = self._makeOne({'acronym': 'revistaA'})
        journalB = self._makeOne({'acronym': 'revistaB'})

        self.assertListEqual(
            [journal for journal in controllers.get_journals(order_by='acronym')],
            [journalA, journalB, journalC])

    def test_get_journal_without_itens(self):
        """
        Testando a função controllers.get_journals() com uma coleção de Journal
        vazia, deve retornar ``None``.
        """
        self.assertIsNone(controllers.get_journals())

    def test_get_journals_by_study_area(self):
        """
        Testando se o retorno da função controllers.get_journals_by_study_area()
        está de acordo com o esperado.
        """

        journal1 = self._makeOne({"study_areas": ["Health Sciences"]})

        journal2 = self._makeOne({"study_areas": ["Health Sciences",
                                  "Biological Sciences"]})
        journal3 = self._makeOne({"study_areas": ["Exact and Earth Sciences"]})
        journal4 = self._makeOne({"study_areas": ["Human Sciences",
                                  "Biological Sciences", "Engineering"]})
        journal5 = self._makeOne({"study_areas": ["Linguistics"]})
        journal6 = self._makeOne({"study_areas": ["Engineering"]})

        expected = {
{'fraction_non_alphanumeric': 0.11848900693522207, 'fraction_numerical': 0.003836505828537701, 'mean_word_length': 2.7180471749862862, 'pattern_counts': {'":': 12, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '324220', 'n_tokens_mistral': 2049, 'n_tokens_neox': 1970, 'n_words': 463}