Exemplo n.º 1
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)
Exemplo n.º 2
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"))
Exemplo n.º 3
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"))
Exemplo n.º 4
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'))
Exemplo n.º 5
0
 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)
Exemplo n.º 6
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'))
Exemplo n.º 7
0
    def test_journal_without_social_networks_show_no_links(self):
        """
        COM:
            - Periódico sem redes socials
        QUANDO:
            - Acessarmos a home do periódico
        VERIFICAMOS:
            - Que não aparece a seção de redes sociais
            - O div com class="journalLinks" deve aparecer
        """

        with current_app.app_context():
            # with
            collection = utils.makeOneCollection()
            journal = utils.makeOneJournal({'collection': collection})
            with self.client as c:
                # when
                response = c.get(url_for('main.journal_detail', url_seg=journal.url_segment))
                # then
                self.assertEqual(journal.social_networks, [])
                self.assertStatus(response, 200)
                social_networks_class = u"journalLinks"
                self.assertIn(social_networks_class, response.data.decode('utf-8'))
                twitter_btn_class = u"bigTwitter"
                self.assertNotIn(twitter_btn_class, response.data.decode('utf-8'))
                facebook_btn_class = u"bigFacebook"
                self.assertNotIn(facebook_btn_class, response.data.decode('utf-8'))
                google_btn_class = u"bigGooglePlus"
                self.assertNotIn(google_btn_class, response.data.decode('utf-8'))
Exemplo n.º 8
0
    def test_journal_detail_mission_with_EN_language(self):
        """
        Teste para verificar se na interface inicial da revista esta retornando
        o texto 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()

            header = {'Referer': url_for('main.journal_detail',
                                         url_seg=journal.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"This journal is aiming xpto",
                          response.data.decode('utf-8'))
Exemplo n.º 9
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'))
Exemplo n.º 10
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)
Exemplo n.º 11
0
    def test_journal_feed_with_attrib_is_public_false(self):
        """
        Teste da ``view function`` ``journal_feed`` acessando um periódico
        com atributo is_public=False, deve retorna uma página com ``status_code``
        404 e msg cadastrada no atributo ``reason``.
        """

        journal = utils.makeOneJournal({
            'is_public': False,
            'unpublish_reason': 'plágio'})

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

        self.assertStatus(response, 404)
        self.assertIn(u'plágio', response.data.decode('utf-8'))
Exemplo n.º 12
0
    def test_get_issues_by_jid_with_many_items(self):
        """
        Teste da função controllers.get_issue_by_jid() com vários itens, deve
        deve retorna uma lista.
        """

        journal = utils.makeOneJournal()

        self._makeOne({'_id': '1', 'journal': journal.id})
        self._makeOne({'_id': '2', 'journal': journal.id})
        self._makeOne({'_id': '3', 'journal': journal.id})
        self._makeOne({'_id': '4', 'journal': journal.id})

        issues = [issue.id for issue in controllers.get_issues_by_jid(journal.id)]

        self.assertListEqual(sorted(issues), sorted(['1', '2', '3', '4']))
Exemplo n.º 13
0
    def test_issue_grid_with_attrib_is_public_false(self):
        """
        Teste da ``view function`` ``issue_grid`` acessando um periódico
        com atributo is_public=False, deve retorna uma página com ``status_code``
        404 e msg cadastrada no atributo ``reason``.
        """

        journal = utils.makeOneJournal({'is_public': False,
                                       'unpublish_reason': 'Problema de Direito Autoral'})

        response = self.client.get(url_for('main.issue_grid',
                                           journal_id=journal.id))

        self.assertStatus(response, 404)
        self.assertIn(u'Problema de Direito Autoral',
                      response.data.decode('utf-8'))
Exemplo n.º 14
0
    def test_issue_grid_without_issues(self):
        """
        Teste para avaliar o retorno da ``view function`` ``issue_grid``
        quando não existe fascículo cadastrado deve retornar ``status_code`` 200
        e a msg ``Nenhum fascículo encontrado para esse perióico``
        """

        journal = utils.makeOneJournal()

        response = self.client.get(url_for('main.issue_grid',
                                   journal_id=journal.id))

        self.assertStatus(response, 200)
        self.assertTemplateUsed('issue/grid.html')

        self.assertIn(u'Nenhum fascículo encontrado para esse perióico',
                      response.data.decode('utf-8'))
Exemplo n.º 15
0
    def test_journal_detail(self):
        """
        Teste da ``view function`` ``journal_detail``, deve retornar uma página
        que usa o template ``journal/detail.html`` e o título do periódico no
        corpo da página.
        """

        journal = utils.makeOneJournal({'title': 'Revista X'})

        response = self.client.get(url_for('main.journal_detail',
                                           journal_id=journal.id))

        self.assertTrue(200, response.status_code)
        self.assertTemplateUsed('journal/detail.html')
        self.assertIn(u'Revista X',
                      response.data.decode('utf-8'))
        self.assertEqual(self.get_context_variable('journal').id, journal.id)
Exemplo n.º 16
0
    def test_get_issues_by_jid_changing_default_order_by(self):
        """
        Teste da função controllers.get_issue_by_jid() com vários itens, deve
        deve retorna uma lista considerando o valor explicito do atributo
        ``order_by``
        """

        journal = utils.makeOneJournal()

        self._makeOne({'_id': '1', 'journal': journal.id, 'number': '10'})
        self._makeOne({'_id': '2', 'journal': journal.id, 'number': '9'})
        self._makeOne({'_id': '3', 'journal': journal.id, 'number': '8'})
        self._makeOne({'_id': '4', 'journal': journal.id, 'number': '7'})

        issues = [issue.id for issue in controllers.get_issues_by_jid(journal.id, order_by=['number'])]

        self.assertListEqual(sorted(issues), sorted(['4', '3', '2', '1']))
Exemplo n.º 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'))
Exemplo n.º 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'))
Exemplo n.º 19
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``.
        """
        journal = utils.makeOneJournal()

        issue = utils.makeOneIssue({
            'is_public': False,
            'unpublish_reason': 'Fascículo incorreto',
            '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, 404)
        self.assertIn(u'Fascículo incorreto', response.data.decode('utf-8'))
Exemplo n.º 20
0
    def test_journal_with_googleplus_social_networks_show_links(self):
        """
        COM:
            - Periódico COM redes socials
        QUANDO:
            - Acessarmos a home do periódico
        VERIFICAMOS:
            - Que SIM aparece a seção de redes sociais
            - O div com class="journalLinks" deve aparecer
        """

        with current_app.app_context():
            # with
            collection = utils.makeOneCollection()
            journal_data = {
                'collection': collection,
                'social_networks': [
                    {
                        'network': u'google',
                        'account': u'http://plus.google.com/+foo'
                    }
                ]
            }
            journal = utils.makeOneJournal(journal_data)
            with self.client as c:
                # when
                response = c.get(url_for('main.journal_detail', url_seg=journal.url_segment))
                # then
                self.assertStatus(response, 200)
                social_networks_class = u"journalLinks"
                self.assertIn(social_networks_class, response.data.decode('utf-8'))
                twitter_btn_class = u"bigTwitter"
                self.assertNotIn(twitter_btn_class, response.data.decode('utf-8'))
                facebook_btn_class = u"bigFacebook"
                self.assertNotIn(facebook_btn_class, response.data.decode('utf-8'))
                google_btn_class = u"bigGooglePlus"
                self.assertIn(google_btn_class, response.data.decode('utf-8'))

                expected_social_link = u'<a href="{account}" data-toggle="tooltip" title="{network}">'.format(
                    account=journal_data['social_networks'][0]['account'],
                    network=journal_data['social_networks'][0]['network'].title(),
                )
                self.assertIn(expected_social_link, response.data.decode('utf-8'))
Exemplo n.º 21
0
    def test_issue_grid_with_unknow_journal_id(self):
        """
        Teste para avaliar o retorno da ``view function`` ``issue_grid``
        quando é acessado utilizando um identificador do periódico desconhecido,
        deve retornar status_code 404 com a msg ```Periódico não encontrado``.
        """

        journal = utils.makeOneJournal()

        issues = utils.makeAnyIssue(attrib={'journal': journal.id})

        unknow_id = '9km2g78o2mnu7'

        response = self.client.get(url_for('main.issue_grid',
                                   journal_id=unknow_id))

        self.assertStatus(response, 404)

        self.assertIn(u'Periódico não encontrado',
                      response.data.decode('utf-8'))
Exemplo n.º 22
0
    def test_issue_grid(self):
        """
        Teste da ``view function`` ``issue_grid`` acessando a grade de fascículos
        de um periódico, nesse teste deve ser retornado todos os fascículos com
        o atributo is_public=True de um fascículo, sendo que o template deve ser
        ``issue/grid.html``.
        """

        journal = utils.makeOneJournal()

        issues = utils.makeAnyIssue(attrib={'journal': journal.id})

        response = self.client.get(url_for('main.issue_grid',
                                   journal_id=journal.id))

        self.assertStatus(response, 200)
        self.assertTemplateUsed('issue/grid.html')

        for issue in issues:
            self.assertIn('/issues/%s' % issue.id, response.data.decode('utf-8'))
Exemplo n.º 23
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')
Exemplo n.º 24
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'))
Exemplo n.º 25
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'))
Exemplo n.º 26
0
    def test_issue_grid(self):
        """
        Teste da ``view function`` ``issue_grid`` acessando a grade de fascículos
        de um periódico, nesse teste deve ser retornado todos os fascículos com
        o atributo is_public=True de um fascículo, sendo que o template deve ser
        ``issue/grid.html``.
        """

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

            journal = utils.makeOneJournal()

            issues = utils.makeAnyIssue(attrib={'journal': journal.id})

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

            self.assertStatus(response, 200)
            self.assertTemplateUsed('issue/grid.html')

            for issue in issues:
                self.assertIn('/journal_acron', response.data.decode('utf-8'))
Exemplo n.º 27
0
    def test_collection_open_access_journal_home(self):
        """
        Testa se os links e o conteúdo da licença esta de acordo com a licença
        cadastrada na coleção.
        """

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

            journal = utils.makeOneJournal()

            with self.client as c:

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

                self.assertStatus(response, 200)

                self.assertTemplateUsed('journal/detail.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)
Exemplo n.º 28
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)
Exemplo n.º 29
0
    def test_count_elements_by_type_and_visibility_journal_public_only(self):
        """
        Testando a função count_elements_by_type_and_visibility() com 20
        periódicos cadastrados com atributo puclic=true e 6 public=false,
        deve retornar apenas 20 periódicos(somente os periódicos marcados como
        publicos).
        """

        utils.makeAnyJournal(items=20)
        utils.makeOneJournal({'is_public': False})
        utils.makeOneJournal({'is_public': False})
        utils.makeOneJournal({'is_public': False})
        utils.makeOneJournal({'is_public': False})
        utils.makeOneJournal({'is_public': False})
        utils.makeOneJournal({'is_public': False})

        total_journal = controllers.count_elements_by_type_and_visibility('journal', public_only=True)

        self.assertEqual(total_journal, 20)