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)
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)
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_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'))
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_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_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 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)
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)
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_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_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_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)
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'))
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)
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'))
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_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'))
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_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_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_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_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)