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)
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"))
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"))
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'))
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 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'))
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'))
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'))
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'))
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)
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'))
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']))
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'))
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'))
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)
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']))
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'))
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'))
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'))
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'))
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'))
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'))
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')
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'))
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'))
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'))
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)
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)
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)