Пример #1
0
    def test_get_next_issue_when_first_item(self):
        """
        Testando o get_next_issue quando é acessado o primiero índice, deve
        retorna None.

        Acessando o primiero item da lista irá retornar None.

        IMPORTANTE: A lista é invertida.
        """

        issue1 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '1', 'order': '1', })
        issue2 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '2', 'order': '2', })
        issue3 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '3', 'order': '3', })
        issue4 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '4', 'order': '4', })

        # criando uma lista de fascículos ordenada
        issues = [issue1, issue2, issue3, issue4]

        next_issue = wutils.get_next_issue(issues, issue1)

        self.assertIsNone(next_issue)
Пример #2
0
    def test_get_prev_issue_when_the_last_issue(self):
        """
        Testando o get_prev_issue quando é acessado um índice inexistente, deve
        retorna None.

        Acessando o a um índice inexistente, o último item da lista irá retornar
        None pois não existe o índice [último] + 1 (Lembrando que a lista de
        fascículo é invertida)

        Portanto a função get_prev_issue soma 1.

        IMPORTANTE: A lista é invertida.
        """

        issue1 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '1', 'order': '1', })
        issue2 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '2', 'order': '2', })
        issue3 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '3', 'order': '3', })
        issue4 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '4', 'order': '4', })

        # criando uma lista de fascículos ordenada
        issues = [issue1, issue2, issue3, issue4]

        prev_issue = wutils.get_prev_issue(issues, issue4)

        self.assertIsNone(prev_issue)
Пример #3
0
    def test_issue_feed(self):
        """
        Teste da ``view function`` ``issue_feed``, deve retornar um rss
        que usa o template ``issue/feed_content.html`` e o título do periódico no
        corpo da página.
        """

        with current_app.app_context():
            collection = utils.makeOneCollection()

            journal = utils.makeOneJournal()

            issue = utils.makeOneIssue({'number': '31',
                                        'volume': '10',
                                        'journal': journal})
            articles = utils.makeAnyArticle(
                issue=issue,
                attrib={'journal': issue.journal.id, 'issue': issue.id}
            )

            response = self.client.get(url_for('main.issue_feed',
                                       url_seg=journal.url_segment,
                                       url_seg_issue=issue.url_segment))

            self.assertStatus(response, 200)
            self.assertTemplateUsed('issue/feed_content.html')
            self.assertIn(u'Vol. 10 No. 31', response.data.decode('utf-8'))
Пример #4
0
    def test_collection_list_feed(self):
        """
        Teste para verificar a reposta da ``view funciton``collection_list_feed
        Se cadastra 10 periódicos, deve retornar na interface do rss, utilizando
        o template ``collection/list_feed_content.html```.
        """

        with current_app.app_context():

            collection = utils.makeOneCollection()
            journals = utils.makeAnyJournal(items=10)
            issues = []

            for journal in journals:
                issue = utils.makeOneIssue({'journal': journal.id})
                utils.makeAnyArticle(
                    issue=issue,
                    attrib={'journal': journal.id, 'issue': issue.id}
                )
                issues.append(issue)

            response = self.client.get(url_for('main.collection_list_feed'))

            self.assertStatus(response, 200)
            self.assertTemplateUsed('collection/list_feed_content.html')

            for journal in journals:
                self.assertIn('%s' % journal.url_segment,
                              response.data.decode('utf-8'))

            for issue in issues:
                self.assertIn('%s' % issue.url_segment,
                              response.data.decode('utf-8'))
Пример #5
0
    def test_the_title_of_the_article_list_when_language_EN(self):
        """
        Teste para verificar se a interface do TOC esta retornando o título no
        idioma Inglês.
        """
        journal = utils.makeOneJournal()

        with self.client as c:
            # Criando uma coleção para termos o objeto ``g`` na interface
            collection = utils.makeOneCollection()

            issue = utils.makeOneIssue({"journal": journal})

            translated_titles = [
                {"name": "Artigo Com Título Em Português", "language": "pt"},
                {"name": "Título Del Artículo En Portugués", "language": "es"},
                {"name": "Article Title In Portuguese", "language": "en"},
            ]

            article = utils.makeOneArticle(
                {"issue": issue, "title": "Article Y", "translated_titles": translated_titles}
            )

            header = {
                "Referer": url_for("main.issue_toc", url_seg=journal.url_segment, url_seg_issue=issue.url_segment)
            }

            response = c.get(url_for("main.set_locale", lang_code="en"), headers=header, follow_redirects=True)

            self.assertEqual(200, response.status_code)

            self.assertEqual(flask.session["lang"], "en")

            self.assertIn(u"Article Title In Portuguese", response.data.decode("utf-8"))
Пример #6
0
    def test_journal_open_access_in_issue_grid(self):
        """
        Testa se os links e o conteúdo da licença este de acordo com a licença
        cadastrado no periódico.
        """

        with current_app.app_context():
            collection = utils.makeOneCollection()

            journal = utils.makeOneJournal()

            issue = utils.makeOneIssue({'journal': journal})

            with self.client as c:

                response = c.get(url_for('main.issue_grid',
                                         url_seg=journal.url_segment))

                self.assertStatus(response, 200)

                self.assertTemplateUsed('issue/grid.html')

                self.assertIn('/static/img/oa_logo_32.png', response.data)
                self.assertIn('href="%s"' % url_for('main.open_access'), response.data)
                self.assertIn('Open Access', response.data)
Пример #7
0
    def test_article_detail_with_article_attrib_is_public_false(self):
        """
        Teste da ``view function`` ``article_detail`` acessando um artigo
        com atributo is_public=False, deve retorna uma página com
         ``status_code`` 404 e msg cadastrada no atributo ``reason`` do artigo.
        """

        journal = utils.makeOneJournal()

        issue = utils.makeOneIssue({'journal': journal.id})

        article = utils.makeOneArticle({
            'is_public': False,
            'unpublish_reason': 'Artigo com problemas de licença',
            'issue': issue,
            'journal': journal})

        response = self.client.get(url_for('main.article_detail',
                                           url_seg=journal.url_segment,
                                           url_seg_issue=issue.url_segment,
                                           url_seg_article=article.url_segment,
                                           lang_code='pt'))

        self.assertStatus(response, 404)
        self.assertIn(u'Artigo com problemas de licença', response.data.decode('utf-8'))
Пример #8
0
    def test_get_next_issue_with_one_item(self):
        """
        Teste da função utils.get_next_issue() without itens, deve retorna None.
        """

        issue1 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '1', 'order': '1', })

        issue = utils.makeOneIssue()

        # criando uma lista de fascículos vazia
        issues = [issue1]

        next_issue = wutils.get_next_issue(issues, issue)

        self.assertIsNone(next_issue)
Пример #9
0
 def _makeOne(self, attrib=None):
     """
     Retorna um objeto ``Issue`` com os atributos obrigatórios:
     ``_id``, ``jid``, ``is_public`` e ``journal``, o param ``attrib`` atualiza os
     atributos do objeto.
     """
     return utils.makeOneIssue(attrib=attrib)
Пример #10
0
    def test_article_detail(self):
        """
        Teste da ``view function`` ``article_detail``, deve retornar uma página
        que usa o template ``article/detail.html``.
        """
        with current_app.app_context():

            collection = utils.makeOneCollection()

            resource = utils.makeOneResource()

            journal = utils.makeOneJournal()

            issue = utils.makeOneIssue({'journal': journal})

            article = utils.makeOneArticle({'title': 'Article Y',
                                            'htmls': [resource],
                                            'issue': issue,
                                            'journal': journal,
                                            'url_segment': '10-11'})

            response = self.client.get(url_for('main.article_detail',
                                               url_seg=journal.url_segment,
                                               url_seg_issue=issue.url_segment,
                                               url_seg_article=article.url_segment,
                                               lang_code='pt'))

            self.assertStatus(response, 200)
            self.assertTemplateUsed('article/detail.html')
            self.assertEqual(self.get_context_variable('article').id, article.id)
            self.assertEqual(self.get_context_variable('journal').id, article.journal.id)
            self.assertEqual(self.get_context_variable('issue').id, article.issue.id)
Пример #11
0
    def test_the_title_of_the_article_list_without_unknow_language_for_article(self):
        """
        Teste para verificar se a interface do TOC esta retornando o título no
        idioma original quando não conhece o idioma.
        """
        journal = utils.makeOneJournal()

        with self.client as c:
            # Criando uma coleção para termos o objeto ``g`` na interface
            collection = utils.makeOneCollection()

            issue = utils.makeOneIssue({"journal": journal})

            translated_titles = []

            article = utils.makeOneArticle(
                {"issue": issue, "title": "Article Y", "translated_titles": translated_titles}
            )

            header = {
                "Referer": url_for("main.issue_toc", url_seg=journal.url_segment, url_seg_issue=issue.url_segment)
            }

            response = c.get(url_for("main.set_locale", lang_code="es_MX"), headers=header, follow_redirects=True)

            self.assertEqual(200, response.status_code)

            self.assertEqual(flask.session["lang"], "es_MX")

            self.assertIn(u"Article Y", response.data.decode("utf-8"))
Пример #12
0
    def test_article_detail_with_journal_attrib_is_public_false(self):
        """
        Teste da ``view function`` ``article_detail`` acessando um artigo
        com atributo is_public=True, porém com um periódico com atributo
        is_public=False deve retorna uma página com ``status_code`` 404 e msg
        cadastrada no atributo ``reason`` do periódico.
        """

        journal = utils.makeOneJournal({
            'is_public': False,
            'unpublish_reason': 'Revista removida da coleção'})

        issue = utils.makeOneIssue({
            'is_public': True,
            'journal': journal.id})

        article = utils.makeOneArticle({
            'issue': issue.id,
            'journal': journal.id})

        response = self.client.get(url_for('main.article_detail',
                                           article_id=article.id))

        self.assertStatus(response, 404)
        self.assertIn(u'Revista removida da coleção', response.data.decode('utf-8'))
Пример #13
0
    def test_get_next_issue(self):
        """
        Teste da função utils.get_next_issue().

        IMPORTANTE: A lista é invertida.
        """

        issue1 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '1', 'order': '1', })
        issue2 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '2', 'order': '2', })
        issue3 = utils.makeOneIssue({'year': '2016', 'volume': '1',
                                     'number': '3', 'order': '3', })

        # criando uma lista de fascículos ordenada
        issues = [issue1, issue2, issue3]

        next_issue = wutils.get_next_issue(issues, issue2)

        self.assertEqual(next_issue, issue1)
Пример #14
0
    def test_issue_toc_unknow_issue_id(self):
        """
        Teste para avaliar o retorno da ``view function`` ``issue_toc``
        quando é acessado utilizando um identificador do issue desconhecido,
        deve retorna status_code 404 com a msg ``Fascículo não encontrado``.
        """

        issue = utils.makeOneIssue()
        unknow_id = '9wks9sjdu9j'

        response = self.client.get(url_for('main.issue_toc',
                                   issue_id=unknow_id))

        self.assertStatus(response, 404)
        self.assertIn(u'Fascículo não encontrado', response.data.decode('utf-8'))
Пример #15
0
    def test_issue_toc(self):
        """
        Teste da ``view function`` ``issue_toc`` acessando a página do fascículo,
        deve retorna status_code 200 e o template ``issue/toc.html``.
        """
        issue = utils.makeOneIssue({'number': '31',
                                    'volume': '10'})

        response = self.client.get(url_for('main.issue_toc',
                                   issue_id=issue.id))

        self.assertStatus(response, 200)
        self.assertTemplateUsed('issue/toc.html')
        self.assertIn(u'Vol. 10 No. 31', response.data.decode('utf-8'))
        self.assertEqual(self.get_context_variable('issue').id, issue.id)
Пример #16
0
    def test_issue_toc_with_attrib_is_public_false(self):
        """
        Teste da ``view function`` ``issue_toc`` acessando um fascículo
        com atributo is_public=False, deve retorna uma página com ``status_code``
        404 e msg cadastrada no atributo ``reason``.
        """

        issue = utils.makeOneIssue({
            'is_public': False,
            'unpublish_reason': 'Fascículo incorreto'})

        response = self.client.get(url_for('main.issue_toc',
                                           issue_id=issue.id))

        self.assertStatus(response, 404)
        self.assertIn(u'Fascículo incorreto', response.data.decode('utf-8'))
Пример #17
0
    def test_issue_feed_unknow_issue_id(self):
        """
        Teste para avaliar o retorno da ``view function`` ``issue_feed``
        quando é acessado utilizando um identificador do issue desconhecido,
        deve retorna status_code 404 com a msg ``Fascículo não encontrado``.
        """
        journal = utils.makeOneJournal()

        issue = utils.makeOneIssue({'journal': journal})

        unknow_url_seg= '2015.v6n3'

        response = self.client.get(url_for('main.issue_feed',
                                   url_seg=journal.url_segment,
                                   url_seg_issue=unknow_url_seg))

        self.assertStatus(response, 404)
        self.assertIn(u'Fascículo não encontrado', response.data.decode('utf-8'))
Пример #18
0
    def test_article_detail_without_articles(self):
        """
        Teste para avaliar o retorno da ``view function`` ``article_detail``
        quando não existe artigos cadastrados deve retornar ``status_code`` 404
        e a msg ``Artigo não encontrado``
        """

        journal = utils.makeOneJournal()

        issue = utils.makeOneIssue({'journal': journal})

        response = self.client.get(url_for('main.article_detail',
                                           url_seg=journal.url_segment,
                                           url_seg_issue=issue.url_segment,
                                           url_seg_article='9827-817',
                                           lang_code='pt'))

        self.assertStatus(response, 404)
        self.assertIn(u'Artigo não encontrado', response.data.decode('utf-8'))
Пример #19
0
    def test_issue_feed_with_attrib_is_public_false(self):
        """
        Teste da ``view function`` ``issue_feed`` acessando um fascículo
        com atributo is_public=False, deve retorna uma página com ``status_code``
        404 e msg cadastrada no atributo ``reason``.
        """

        journal = utils.makeOneJournal()

        issue = utils.makeOneIssue({
            'is_public': False,
            'unpublish_reason': 'Fascículo incorreto',
            'journal': journal})

        response = self.client.get(url_for('main.issue_feed',
                                           url_seg=journal.url_segment,
                                           url_seg_issue=issue.url_segment))

        self.assertStatus(response, 404)
        self.assertIn(u'Fascículo incorreto', response.data.decode('utf-8'))
Пример #20
0
    def test_issue_feed_with_journal_attrib_is_public_false(self):
        """
        Teste da ``view function`` ``issue_toc`` acessando um fascículo
        com atributo is_public=True, porém com um periódico com atributo
        is_public=False deve retorna uma página com ``status_code`` 404 e msg
        cadastrada no atributo ``reason`` do periódico.
        """

        journal = utils.makeOneJournal({
            'is_public': False,
            'unpublish_reason': 'Revista removida da coleção'})
        issue = utils.makeOneIssue({
            'is_public': True,
            'journal': journal.id})

        response = self.client.get(url_for('main.issue_feed',
                                           url_seg=journal.url_segment,
                                           url_seg_issue=issue.url_segment))

        self.assertStatus(response, 404)
        self.assertIn(u'Revista removida da coleção', response.data.decode('utf-8'))
Пример #21
0
    def test_journal_feed(self):
        """
        Teste da ``view function`` ``journal_feed``, deve retornar um rss
        que usa o template ``issue/feed_content.html`` e o título do periódico no
        corpo da página.
        """

        with current_app.app_context():
            collection = utils.makeOneCollection()
            journal = utils.makeOneJournal({'title': 'Revista X'})
            issue = utils.makeOneIssue({'journal': journal})
            articles = utils.makeAnyArticle(
                issue=issue,
                attrib={'journal': journal.id, 'issue': issue.id}
            )

            response = self.client.get(url_for('main.journal_feed',
                                               url_seg=journal.url_segment))

            self.assertTrue(200, response.status_code)
            self.assertTemplateUsed('issue/feed_content.html')
Пример #22
0
    def test_abstract_detail_with_article_attrib_is_public_false(self):
        """
        Teste da ``view function`` ``abstract_detail`` acessando o resumo do
        artigo com atributo is_public=False, deve retorna uma página com
         ``status_code`` 404 e msg cadastrada no atributo ``reason`` do artigo.
        """

        journal = utils.makeOneJournal()

        issue = utils.makeOneIssue({'journal': journal.id})

        article = utils.makeOneArticle({
            'is_public': False,
            'unpublish_reason': 'Resumo incorreto',
            'issue': issue.id,
            'journal': journal.id})

        response = self.client.get(url_for('main.abstract_detail',
                                           article_id=article.id))

        self.assertStatus(response, 404)
        self.assertIn(u'Resumo incorreto', response.data.decode('utf-8'))
Пример #23
0
    def test_issue_toc(self):
        """
        Teste da ``view function`` ``issue_toc`` acessando a página do fascículo,
        deve retorna status_code 200 e o template ``issue/toc.html``.
        """

        with current_app.app_context():

            collection = utils.makeOneCollection()

            journal = utils.makeOneJournal()

            issue = utils.makeOneIssue({'number': '31',
                                        'volume': '10',
                                        'journal': journal})

            response = self.client.get(url_for('main.issue_toc',
                                       url_seg=journal.url_segment,
                                       url_seg_issue=issue.url_segment))

            self.assertStatus(response, 200)
            self.assertTemplateUsed('issue/toc.html')
            # self.assertIn(u'Vol. 10 No. 31', response.data.decode('utf-8'))
            self.assertEqual(self.get_context_variable('issue').id, issue.id)
Пример #24
0
    def test_count_elements_by_type_and_visibility_issue_public_only(self):
        """
        Testando a função count_elements_by_type_and_visibility() com 50
        fascículos cadastrados com atributo puclic=true e 6 public=false,
        deve retornar apenas 20 fascículo(somente os fascículos marcados como
        publicos).
        """

        utils.makeAnyIssue(items=50)
        utils.makeOneIssue({'is_public': False})
        utils.makeOneIssue({'is_public': False})
        utils.makeOneIssue({'is_public': False})
        utils.makeOneIssue({'is_public': False})
        utils.makeOneIssue({'is_public': False})
        utils.makeOneIssue({'is_public': False})

        total_issue = controllers.count_elements_by_type_and_visibility('issue', public_only=True)

        self.assertEqual(total_issue, 50)