Example #1
0
    def test_exibe_numero_problemas_utilizados(self):
        """
        Deve exibir na página inicial a quantidade de vezes que
        algum problema foi utilizado em um Coding Dojo
        """
        problema1 = novo_problema({})
        problema2 = novo_problema({})

        contador = 0
        for utilizacao in range(1, 11):
            problema1.utilizar()
            problema2.utilizar()
            contador += 1

        response = self.client.get(reverse('inicio'))
        self.assertContains(
            response,
            u"Os problemas deste site já foram utilizados em 20 Coding Dojos!!!",
            1)

        problema2.utilizar()
        response = self.client.get(reverse('inicio'))
        self.assertContains(
            response,
            u"Os problemas deste site já foram utilizados em 21 Coding Dojos!!!",
            1)
Example #2
0
 def test_buscando_com_palavra_chave_repetida(self):
     """ Ao buscar um problema utilizando uma palavra chave que exista
     em mais de problema cadastrado deve exibir a lista de problemas encontrado """
     problema1 = novo_problema({'titulo': 'Título de Problema Repetido'})
     problema2 = novo_problema({'titulo': 'Outro Título Com Palavra Repetido'})
     dados_busca = {'titulo': 'repetido'}
     response = self.client.post(reverse('busca-problema-por-titulo'), dados_busca)
     self.assertContains(response, problema1.titulo)
     self.assertContains(response, problema2.titulo)
Example #3
0
 def test_nenhum_problema_utilizado(self):
     """
     Se nenhum problema foi utilizado ainda, não deve exibir nenhuma
     informação referente a problemas utilizados.
     """
     problema1 = novo_problema({})
     problema2 = novo_problema({})
     client = Client()
     response = client.get(reverse('inicio'))
     self.assertNotContains(response, u"Os problemas deste site já foram utilizados")
Example #4
0
 def test_buscando_com_palavra_chave_repetida(self):
     """ Ao buscar um problema utilizando uma palavra chave que exista
     em mais de problema cadastrado deve exibir a lista de problemas encontrado """
     problema1 = novo_problema({'titulo': 'Título de Problema Repetido'})
     problema2 = novo_problema(
         {'titulo': 'Outro Título Com Palavra Repetido'})
     dados_busca = {'titulo': 'repetido'}
     response = self.client.post(reverse('busca-problema-por-titulo'),
                                 dados_busca)
     self.assertContains(response, problema1.titulo)
     self.assertContains(response, problema2.titulo)
Example #5
0
    def test_listagem_exibe_so_publicados(self):
        """
        A listagem de problemas deve exibir somente os problemas publicados.
        """
        problema1 = novo_problema({'publicado': False})
        problema2 = novo_problema({'publicado': True})

        response = self.client.get(reverse('todos-problemas'))

        self.assertNotContains(response, problema1.titulo)
        self.assertContains(response, problema2.titulo, 1)
Example #6
0
    def test_listagem_exibe_so_publicados(self):
        """
        A listagem de problemas deve exibir somente os problemas publicados.
        """
        problema1 = novo_problema({'publicado': False})
        problema2 = novo_problema({'publicado': True})

        response = self.client.get(reverse('todos-problemas'))

        self.assertNotContains(response, problema1.titulo)
        self.assertContains(response, problema2.titulo, 1)
Example #7
0
 def test_nenhum_problema_utilizado(self):
     """
     Se nenhum problema foi utilizado ainda, não deve exibir nenhuma
     informação referente a problemas utilizados.
     """
     problema1 = novo_problema({})
     problema2 = novo_problema({})
     client = Client()
     response = client.get(reverse('inicio'))
     self.assertNotContains(response,
                            u"Os problemas deste site já foram utilizados")
Example #8
0
    def test_nao_deve_exibir_nao_publicado_como_aleatorio(self):
        """
        Ao solicitar um problema aleatório não deve exibir os problemas não publicados
        """
        Problema.objects.all().delete()
        problema_publicado = novo_problema({'publicado': True})
        problema_nao_publicado = novo_problema({'publicado': False})
        response = self.client.get(reverse('problema-aleatorio'), follow=True)
        titulo = "<title>DojoPuzzles.com - {0}</title>"
        self.assertContains(response, titulo.format(problema_publicado.titulo), 1)

        response = self.client.get(reverse('problema-aleatorio'), follow=True)
        self.assertRedirects(response, reverse('sem-problemas-novos'))
Example #9
0
    def test_nao_deve_exibir_nao_publicado_como_aleatorio(self):
        """
        Ao solicitar um problema aleatório não deve exibir os problemas não publicados
        """
        Problema.objects.all().delete()
        problema_publicado = novo_problema({'publicado': True})
        problema_nao_publicado = novo_problema({'publicado': False})
        response = self.client.get(reverse('problema-aleatorio'), follow=True)
        titulo = "<title>DojoPuzzles.com - {0}</title>"
        self.assertContains(response, titulo.format(problema_publicado.titulo),
                            1)

        response = self.client.get(reverse('problema-aleatorio'), follow=True)
        self.assertRedirects(response, reverse('sem-problemas-novos'))
Example #10
0
 def test_nao_exibe_problema_nao_publicado(self):
     """
     Um problema não publicado não pode ser exibido para o usuário
     """
     problema = novo_problema({'publicado': False})
     response = self.client.get(reverse('exibe-problema', args=[problema.slug]))
     self.assertTemplateUsed(response, '404.html')
Example #11
0
 def test_buscando_com_palavra_chave_unica(self):
     """ Ao buscar um problema utilizando uma palavra chave que só exista
     em um único problema cadastrado deve redirecionar diretamente para ele """
     problema_unico = novo_problema({'titulo': u'Teste de Busca de Problema Único'})
     dados_busca = {'titulo': 'Único'}
     response = self.client.post(reverse('busca-problema-por-titulo'), dados_busca)
     self.assertRedirects(response, reverse('exibe-problema', args=[problema_unico.slug]))
Example #12
0
 def test_problema_sem_contribuidor_nao_exibe_nome(self):
     """ Um problema onde o contribuidor não é indicado, não deve exibir o título 'Contribuição de:' """
     problema = novo_problema({})
     response = self.client.get(reverse('exibe-problema',
                                        args=[problema.slug]),
                                follow=True)
     self.assertNotContains(response, 'Contribuição de:')
Example #13
0
 def test_somente_problemas_publicados_podem_ser_utilizados(self):
     """
     Somente problemas publicados podem ser utilizados.
     """
     problema = novo_problema({'publicado': False})
     problema.utilizar()
     self.assertRaises(Exception, problema.utilizar())
Example #14
0
 def test_problema_com_contribuidor_exibe_nome(self):
     """ Um problema onde o contribuidor é indicado, deve exibir o título 'Contribuição de: nome_contribuidor' """
     problema = novo_problema({'nome_contribuidor': 'Eu Que Contribui'})
     response = self.client.get(reverse('exibe-problema',
                                        args=[problema.slug]),
                                follow=True)
     self.assertContains(response, 'Contribuição de: Eu Que Contribui', 1)
Example #15
0
 def test_nao_exibe_problema_nao_publicado(self):
     """
     Um problema não publicado não pode ser exibido para o usuário
     """
     problema = novo_problema({'publicado': False})
     response = self.client.get(
         reverse('exibe-problema', args=[problema.slug]))
     self.assertTemplateUsed(response, '404.html')
Example #16
0
 def test_nao_exibe_solucao_se_nao_tiver_nenhuma(self):
     """
     Ao exibir um problema, o botão que exibe as soluções que já estão cadastradas
     não deve ser exibido, caso o problema não tenha nenhuma solução.
     """
     problema = novo_problema({})
     response = self.client.get(reverse('exibe-problema', args=[problema.slug]))
     self.assertNotContains(response, 'id="botao_veja_solucoes"')
Example #17
0
 def test_utilizar_problema_aumenta_numero_utilizacoes(self):
     """
     Se utilizarmos um problema, o contador de utilizações deve ser incrementado
     """
     problema = novo_problema({})
     self.assertEqual(problema.utilizacoes, 0)
     problema.utilizar()
     self.assertEqual(problema.utilizacoes, 1)
Example #18
0
 def test_buscando_problema_nao_publicado(self):
     """ Ao buscar um problema utilizando uma palavra chave que só exista
     em um único problema cadastrado mas não publicado deve informar que a busca
     não retornou nenhum registro """
     problema_nao_publicado = novo_problema({'titulo': u'Teste de Busca de Problema Não Publicado', 'publicado': False})
     dados_busca = {'titulo': 'não publicado'}
     response = self.client.post(reverse('busca-problema-por-titulo'), dados_busca)
     self.assertContains(response, "Nenhum problema encontrado contendo 'não publicado' em seu título.")
    def teste_exibe_problemas_utilizados_em_ordem_decrescente(self):
        """
        Os problemas utilizados devem ser exibidos em ordem decrescente de
        utilizações.
        """
        problema1 = novo_problema({})
        problema2 = novo_problema({})

        problema2.utilizar()
        problema2.utilizar()
        problema1.utilizar()

        response = self.client.get(reverse('inicio'))

        # Estou verificando desta maneira pois ainda não sei como testar o conteúdo do
        # contexto de uma templatetag
        # O título do problema2 (mais utilizado) deve aparecer antes do título do problema1 (menos utilizado)
        self.assertTrue(response.content.find(problema2.titulo) < response.content.find(problema1.titulo))
Example #20
0
 def test_nao_exibe_solucao_se_nao_tiver_nenhuma(self):
     """
     Ao exibir um problema, o botão que exibe as soluções que já estão cadastradas
     não deve ser exibido, caso o problema não tenha nenhuma solução.
     """
     problema = novo_problema({})
     response = self.client.get(
         reverse('exibe-problema', args=[problema.slug]))
     self.assertNotContains(response, 'id="botao_veja_solucoes"')
Example #21
0
 def test_buscando_com_palavra_chave_unica(self):
     """ Ao buscar um problema utilizando uma palavra chave que só exista
     em um único problema cadastrado deve redirecionar diretamente para ele """
     problema_unico = novo_problema(
         {'titulo': u'Teste de Busca de Problema Único'})
     dados_busca = {'titulo': 'Único'}
     response = self.client.post(reverse('busca-problema-por-titulo'),
                                 dados_busca)
     self.assertRedirects(
         response, reverse('exibe-problema', args=[problema_unico.slug]))
Example #22
0
 def test_exibe_solucao_se_tiver_alguma(self):
     """
     Ao exibir um problema, o botão que exibe as soluções que já estão cadastradas
     não deve ser exibido, caso o problema não tenha nenhuma solução.
     """
     problema = novo_problema({})
     solucao = SolucaoProblema(problema=problema, solucao='http://teste.com/solucao')
     solucao.save()
     response = self.client.get(reverse('exibe-problema', args=[problema.slug]))
     self.assertContains(response, 'id="botao_veja_solucoes"')
    def teste_existe_problema_utilizado(self):
        """
        Se ao menos um problema tiver sido indicado como utilizado
        deve exibir o bloca de problemas utilizados.
        """
        problema = novo_problema({})
        problema.utilizar()

        response = self.client.get(reverse('inicio'))
        self.assertContains(response, u'MAIS UTILIZADOS', 1)
    def teste_problemas_mais_recentes(self):
        """
        Se dois problemas foram utilizados o mesmo número de vezes, o problema que foi utilizado mais
        recentemente deve aparecer antes na listagem.
        """
        problema1 = novo_problema({})
        problema2 = novo_problema({})

        problema2.utilizar()
        problema1.utilizar()
        problema2.utilizar()
        problema2.utilizar()
        problema1.utilizar()
        problema1.utilizar()

        response = self.client.get(reverse('inicio'))

        # Como o problema1 foi utilizado pela última vez, ele deve aparecer antes do problema2
        self.assertTrue(response.content.find(problema1.titulo) < response.content.find(problema2.titulo))
Example #25
0
    def teste_existe_problema_utilizado(self):
        """
        Se ao menos um problema tiver sido indicado como utilizado
        deve exibir o bloca de problemas utilizados.
        """
        problema = novo_problema({})
        problema.utilizar()

        response = self.client.get(reverse('inicio'))
        self.assertContains(response, u'MAIS UTILIZADOS', 1)
Example #26
0
    def test_exibe_numero_problemas_utilizados(self):
        """
        Deve exibir na página inicial a quantidade de vezes que
        algum problema foi utilizado em um Coding Dojo
        """
        problema1 = novo_problema({})
        problema2 = novo_problema({})

        contador = 0
        for utilizacao in range(1, 11):
            problema1.utilizar()
            problema2.utilizar()
            contador += 1

        response = self.client.get(reverse('inicio'))
        self.assertContains(response, u"Os problemas deste site já foram utilizados em 20 Coding Dojos!!!", 1)

        problema2.utilizar()
        response = self.client.get(reverse('inicio'))
        self.assertContains(response, u"Os problemas deste site já foram utilizados em 21 Coding Dojos!!!", 1)
Example #27
0
    def teste_exibe_problemas_utilizados_em_ordem_decrescente(self):
        """
        Os problemas utilizados devem ser exibidos em ordem decrescente de
        utilizações.
        """
        problema1 = novo_problema({})
        problema2 = novo_problema({})

        problema2.utilizar()
        problema2.utilizar()
        problema1.utilizar()

        response = self.client.get(reverse('inicio'))

        # Estou verificando desta maneira pois ainda não sei como testar o conteúdo do
        # contexto de uma templatetag
        # O título do problema2 (mais utilizado) deve aparecer antes do título do problema1 (menos utilizado)
        self.assertTrue(
            response.content.find(problema2.titulo) < response.content.find(
                problema1.titulo))
Example #28
0
    def teste_problemas_mais_recentes(self):
        """
        Se dois problemas foram utilizados o mesmo número de vezes, o problema que foi utilizado mais
        recentemente deve aparecer antes na listagem.
        """
        problema1 = novo_problema({})
        problema2 = novo_problema({})

        problema2.utilizar()
        problema1.utilizar()
        problema2.utilizar()
        problema2.utilizar()
        problema1.utilizar()
        problema1.utilizar()

        response = self.client.get(reverse('inicio'))

        # Como o problema1 foi utilizado pela última vez, ele deve aparecer antes do problema2
        self.assertTrue(
            response.content.find(problema1.titulo) < response.content.find(
                problema2.titulo))
Example #29
0
 def test_exibe_solucao_se_tiver_alguma(self):
     """
     Ao exibir um problema, o botão que exibe as soluções que já estão cadastradas
     não deve ser exibido, caso o problema não tenha nenhuma solução.
     """
     problema = novo_problema({})
     solucao = SolucaoProblema(problema=problema,
                               solucao='http://teste.com/solucao')
     solucao.save()
     response = self.client.get(
         reverse('exibe-problema', args=[problema.slug]))
     self.assertContains(response, 'id="botao_veja_solucoes"')
Example #30
0
 def test_buscando_problema_nao_publicado(self):
     """ Ao buscar um problema utilizando uma palavra chave que só exista
     em um único problema cadastrado mas não publicado deve informar que a busca
     não retornou nenhum registro """
     problema_nao_publicado = novo_problema({
         'titulo': u'Teste de Busca de Problema Não Publicado',
         'publicado': False
     })
     dados_busca = {'titulo': 'não publicado'}
     response = self.client.post(reverse('busca-problema-por-titulo'),
                                 dados_busca)
     self.assertContains(
         response,
         "Nenhum problema encontrado contendo 'não publicado' em seu título."
     )
    def teste_so_exibe_os_5_ultimos_mais_utilizados(self):
        """
        Só devem ser exibidos os 5 últimos problemas mais utilizados.
        """
        problema1 = novo_problema({})
        problema2 = novo_problema({})
        problema3 = novo_problema({})
        problema4 = novo_problema({})
        problema5 = novo_problema({})
        problema6 = novo_problema({})

        problema1.utilizar()
        problema1.utilizar()
        problema1.utilizar()
        problema1.utilizar()

        problema2.utilizar()
        problema2.utilizar()
        problema2.utilizar()

        problema3.utilizar()
        problema3.utilizar()

        problema4.utilizar()
        problema4.utilizar()

        problema5.utilizar()
        problema5.utilizar()

        problema6.utilizar()
        problema6.utilizar()

        response = self.client.get(reverse('inicio'))

        self.assertNotContains(response, problema6.titulo)
        self.assertContains(response, problema1.titulo, 1)
        self.assertContains(response, problema2.titulo, 1)
        self.assertContains(response, problema3.titulo, 1)
        self.assertContains(response, problema4.titulo, 1)
        self.assertContains(response, problema5.titulo, 1)
Example #32
0
    def teste_so_exibe_os_5_ultimos_mais_utilizados(self):
        """
        Só devem ser exibidos os 5 últimos problemas mais utilizados.
        """
        problema1 = novo_problema({})
        problema2 = novo_problema({})
        problema3 = novo_problema({})
        problema4 = novo_problema({})
        problema5 = novo_problema({})
        problema6 = novo_problema({})

        problema1.utilizar()
        problema1.utilizar()
        problema1.utilizar()
        problema1.utilizar()

        problema2.utilizar()
        problema2.utilizar()
        problema2.utilizar()

        problema3.utilizar()
        problema3.utilizar()

        problema4.utilizar()
        problema4.utilizar()

        problema5.utilizar()
        problema5.utilizar()

        problema6.utilizar()
        problema6.utilizar()

        response = self.client.get(reverse('inicio'))

        self.assertNotContains(response, problema6.titulo)
        self.assertContains(response, problema1.titulo, 1)
        self.assertContains(response, problema2.titulo, 1)
        self.assertContains(response, problema3.titulo, 1)
        self.assertContains(response, problema4.titulo, 1)
        self.assertContains(response, problema5.titulo, 1)
Example #33
0
 def test_problema_sem_contribuidor_nao_exibe_nome(self):
     """ Um problema onde o contribuidor não é indicado, não deve exibir o título 'Contribuição de:' """
     problema = novo_problema({})
     response = self.client.get(reverse('exibe-problema', args=[problema.slug]), follow=True)
     self.assertNotContains(response, 'Contribuição de:')
Example #34
0
 def setUp(self):
     self.problema = novo_problema({})
     self.client = Client()
Example #35
0
 def setUp(self):
     # Cadastra 2 problemas que serão utilizados nos testes
     for i in xrange(1, 3):
         novo_problema({})
     self.client = Client()
Example #36
0
 def test_problema_com_contribuidor_exibe_nome(self):
     """ Um problema onde o contribuidor é indicado, deve exibir o título 'Contribuição de: nome_contribuidor' """
     problema = novo_problema({'nome_contribuidor': 'Eu Que Contribui'})
     response = self.client.get(reverse('exibe-problema', args=[problema.slug]), follow=True)
     self.assertContains(response, 'Contribuição de: Eu Que Contribui', 1)
Example #37
0
 def setUp(self):
     self.problema = novo_problema({})
     self.client = Client()
Example #38
0
 def setUp(self):
     # Cadastra 5 problemas que serão utilizados nos testes
     for i in xrange(1, 6):
         novo_problema({})
     self.client = Client()