class TestAvaliador(TestCase):

    # test_quando_adicionados_em_ordem_crescente_deve_retornar_o_maior_e_o_menor_valor_de_um_lance

    def setUp(self):
        self.igor = Usuario('igor')
        self.lance_do_igor = Lance(self.igor, 150.0)
        self.leilao = Leilao('Celular')

    def test_deve_retornar_o_maior_e_o_menor_valor_de_um_lance_quando_adicionados_em_ordem_crescente(
            self):
        hugo = Usuario('hugo')
        lance_do_hugo = Lance(hugo, 100.0)

        self.leilao.propoe(lance_do_hugo)
        self.leilao.propoe(self.lance_do_igor)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 150.0

        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)

    def test_deve_retornar_o_maior_e_o_menor_valor_de_um_lance_quando_adicionados_em_ordem_decrescente(
            self):
        hugo = Usuario('hugo')
        lance_do_hugo = Lance(hugo, 100.0)

        self.leilao.propoe(self.lance_do_igor)
        self.leilao.propoe(lance_do_hugo)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 150.0

        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)

    def test_deve_retornar_o_mesmo_valor_para_o_maior_e_menor_lance_quando_leilao_tiver_um_lance(
            self):
        self.leilao.propoe(self.lance_do_igor)

        self.assertEqual(150.0, self.leilao.menor_lance)
        self.assertEqual(150.0, self.leilao.maior_lance)

    def test_deve_retornar_o_maior_e_o_menor_valor_quando_o_leilao_tiver_tres_lances(
            self):
        hugo = Usuario('hugo')
        lance_do_hugo = Lance(hugo, 100.0)
        marcela = Usuario('marcela')

        lance_da_marcela = Lance(marcela, 200.0)

        self.leilao.propoe(lance_do_hugo)
        self.leilao.propoe(self.lance_do_igor)
        self.leilao.propoe(lance_da_marcela)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 200.0

        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)
Exemple #2
0
from dominio import Usuario, Lance, Leilao

gui = Usuario("Gui")
yuri = Usuario("Yuri")

lance_do_yuri = Lance(yuri, 100.0)
lance_do_gui = Lance(gui, 150.0)

leilao = Leilao("Celular")
leilao.propoe(lance_do_yuri)
leilao.propoe(lance_do_gui)

for lance in leilao.lances:
    print(f"O usuario {lance.usuario.nome} deu um lance de {lance.valor}")

print(f"O maior lance foi {leilao.maior_lance} e o menor lance foi {leilao.menor_lance}")
Exemple #3
0
class TestLeilao(TestCase):
    def setUp(self):
        self.gui = Usuario('Gui', 500)
        self.lance_do_gui = Lance(self.gui, 150.0)
        self.leilao = Leilao('Celular')

    def test_deve_retornar_o_maior_e_o_menor_valor_de_um_lance_quando_adicionados_em_ordem_crescente(
            self):
        with self.assertRaises(LanceInvalido):
            yuri = Usuario('Yuri', 500)
            lance_do_yuri = Lance(yuri, 100.0)

            self.leilao.propoe(self.lance_do_gui)
            self.leilao.propoe(lance_do_yuri)

    def test_nao_deve_permitir_propor_um_lance_ordem_decresente(self):
        yuri = Usuario('Yuri', 500)
        lance_do_yuri = Lance(yuri, 100.0)

        self.leilao.propoe(lance_do_yuri)
        self.leilao.propoe(self.lance_do_gui)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 150.0

        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)

    def test_deve_retornar_o_mesmo_valor_para_o_maior_e_menor_lance_quando_leilao_tiver_um_lance(
            self):
        self.leilao.propoe(self.lance_do_gui)

        self.assertEqual(150.0, self.leilao.menor_lance)
        self.assertEqual(150.0, self.leilao.maior_lance)

    def test_deve_retornar_o_maior_e_o_menor_valor_quando_o_leilao_tiver_tres_lances(
            self):
        yuri = Usuario('Yuri', 500)
        lance_do_yuri = Lance(yuri, 100.0)
        vini = Usuario('Vini', 500)

        lance_do_vini = Lance(vini, 200.0)

        self.leilao.propoe(lance_do_yuri)
        self.leilao.propoe(self.lance_do_gui)
        self.leilao.propoe(lance_do_vini)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 200.0

        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)

    def test_deve_permitir_propor_um_lance_caso_o_leilao_nao_tenha_lance(self):
        self.leilao.propoe(self.lance_do_gui)
        self.assertEqual(1, len(self.leilao.lances))

    def test_deve_permitir_propor_um_lance_caso_o_ultimo_usuario_seja_diferente(
            self):
        yuri = Usuario("Yuri", 500)
        lance_do_yuri = Lance(yuri, 200)

        self.leilao.propoe(self.lance_do_gui)
        self.leilao.propoe(lance_do_yuri)

        quantidade_lances = len(self.leilao.lances)

        self.assertEqual(2, quantidade_lances)

    def test_nao_deve_permitir_propor_lance_caso_o_usuario_seja_o_mesmo(self):
        lance2 = Lance(self.gui, 200)

        with self.assertRaises(LanceInvalido):
            self.leilao.propoe(self.lance_do_gui)
            self.leilao.propoe(lance2)
Exemple #4
0
class TestLeilao(TestCase):
    def setUp(self):
        self.leo = Usuario("Leo", 500.0)
        self.lance_leo = Lance(self.leo, 100.00)
        self.leilao = Leilao("Celular")

    def test_quando_adicionado_lances_ordem_crescente_deve_retornar_maior_e_menor_valor_do_lance(self):
        lais = Usuario("Lais", 500.0)
        lance_lais = Lance(lais, 150.0)
        self.leilao.propoe(self.lance_leo)
        self.leilao.propoe(lance_lais)

        print(self.leilao.maior_lance)
        print(self.leilao.menor_lance)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 150.0

        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)

    def test_quando_adicionado_lances_ordem_decrescente_nao_deve_permitir_propor_lance(self):
        with self.assertRaises(LanceInvalido):
            lais = Usuario("Lais", 500.0)
            lance_lais = Lance(lais, 150.0)
            self.leilao.propoe(lance_lais)
            self.leilao.propoe(self.lance_leo)

            print(self.leilao.maior_lance)
            print(self.leilao.menor_lance)

            menor_valor_esperado = 100.0
            maior_valor_esperado = 150.0

            self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
            self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)

    def test_quando_adicionado_apenas_um_lance_deve_retornar_o_mesmo_valor_de_maior_e_menor_lance(self):
        self.leilao.propoe(self.lance_leo)

        print(self.leilao.maior_lance)
        print(self.leilao.menor_lance)

        menor_valor_esperado = 150.0
        maior_valor_esperado = 150.0

    def test_quando_adicionado_tres_lances_deve_retornar_maior_e_menor_valor_do_lance(self):
        lais = Usuario("Lais", 500.0)
        lance_lais = Lance(lais, 150.0)
        leona = Usuario("Leona", 500.0)

        self.lance_leo = Lance(self.leo, 100.00)
        lance_leona = Lance(leona, 200.0)
        lance_lais = Lance(lais, 150.0)


        self.leilao.propoe(self.lance_leo)
        self.leilao.propoe(lance_lais)
        self.leilao.propoe(lance_leona)


        print(self.leilao.maior_lance)
        print(self.leilao.menor_lance)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 200.0

        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)

    def test_quando_nao_tiver_lances_deve_permitir_lances(self):
        self.leilao.propoe(self.lance_leo)

        quantidade_lances_recebido = len(self.leilao.lances)
        self.assertEqual(1, quantidade_lances_recebido)

    def test_quando_ultimo_usuario_for_diferente_deve_permitir_lance(self):
        lais = Usuario("Lais", 500.0)
        lance_lais = Lance(lais, 150.0)

        self.leilao.propoe(self.lance_leo)
        self.leilao.propoe(lance_lais)

        quantidade_lances_recebido = len(self.leilao.lances)
        self.assertEqual(2, quantidade_lances_recebido)


    def test_quando_ultimo_usuario_for_igual_nao_deve_permitir_lance(self):
        lance_leo_200 = Lance(self.leo, 200)

        with self.assertRaises(LanceInvalido):
            self.leilao.propoe(self.lance_leo)
            self.leilao.propoe(lance_leo_200)
Exemple #5
0
from dominio import Cliente, Lance, Leilao

phyl = Cliente("Phyl")
igor = Cliente("Igor")
luana = Cliente("Luana")
sarah = Cliente("Sarah")

lance_do_phyl = Lance(phyl, 150.0)
lance_do_igor = Lance(igor, 100.0)
lance_da_luana = Lance(luana, 80.0)
lance_da_sarah = Lance(sarah, 200.0)

leilao = Leilao("1 Saco de Arroz de 5kg")

leilao.propoe(lance_do_igor)
leilao.propoe(lance_do_phyl)
leilao.propoe(lance_da_luana)
leilao.propoe(lance_da_sarah)

for lance in leilao.lances:
    print(f"O cliente {lance.cliente.nome} deu um lance de {lance.valor}.")

print(
    f"O menor lance foi de {leilao.menor_lance} e o maior lance foi de {leilao.maior_lance}"
)
class TestLeilao(TestCase):  # herda de TestCase

    # método setUp é herdado da classe TestCase
    # quando coloca self na frente do atributo, significa que é um atributo da classe
    # setUp método da classe unittest que já invoca o setup antes de todos os testes
    # serve para isolar o cenário comum de todos os testes
    # sempre cria um objeto novo a cada teste invocado
    def setUp(self):
        self.gui = Usuario('Gui', 500.0)
        self.lance_do_gui = Lance(self.gui, 150.0)
        self.leilao = Leilao('Celular')

    def test_deve_retornar_o_maior_e_o_menor_valor_de_um_lance_quando_adicionados_em_ordem_crescente(
            self):
        yuri = Usuario('Yuri', 500.0)
        lance_do_yuri = Lance(yuri, 100.0)

        self.leilao.propoe(lance_do_yuri)
        self.leilao.propoe(self.lance_do_gui)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 150.0

        # método para trabalhar com teste
        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)

    def test_nao_deve_permitir_propor_um_lance_em_ordem_descrescente(self):
        with self.assertRaises(LanceInvalido):
            yuri = Usuario('Yuri', 500.0)
            lance_do_yuri = Lance(yuri, 100.0)

            self.leilao.propoe(self.lance_do_gui)
            self.leilao.propoe(lance_do_yuri)

    def test_deve_retornar_o_mesmo_valor_para_o_maior_e_menor_lance_quando_leilao_tiver_um_lance(
            self):
        self.leilao.propoe(self.lance_do_gui)

        self.assertEqual(150.0, self.leilao.menor_lance)
        self.assertEqual(150.0, self.leilao.maior_lance)

    def test_deve_retornar_o_maior_e_o_menor_valor_quando_o_leilao_tiver_tres_lances(
            self):
        yuri = Usuario('Yuri', 500.0)
        vini = Usuario('Vini', 500.0)

        lance_do_yuri = Lance(yuri, 100.0)
        lance_do_vini = Lance(vini, 200.0)

        self.leilao.propoe(lance_do_yuri)
        self.leilao.propoe(self.lance_do_gui)
        self.leilao.propoe(lance_do_vini)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 200.0

        # método para trabalhar com teste
        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)

    # se o leilão não tiver lances, deve permitir propor um lance
    def test_deve_permitir_propor_um_lance_caso_o_leilao_nao_tenha_lances(
            self):
        self.leilao.propoe(self.lance_do_gui)

        quantidade_de_lances_recebido = len(self.leilao.lances)
        self.assertEqual(1, quantidade_de_lances_recebido)

    # se o último usuário for diferente, deve permitir propor o lance
    def test_deve_permitir_propor_um_lance_caso_o_ultimo_usuario_seja_diferente(
            self):
        yuri = Usuario('Yuri', 500.0)
        lance_do_yuri = Lance(yuri, 200.0)

        self.leilao.propoe(self.lance_do_gui)
        self.leilao.propoe(lance_do_yuri)

        quantidade_de_lances_recebido = len(self.leilao.lances)

        self.assertEqual(2, quantidade_de_lances_recebido)

    # se o último usuário for o mesmo, não deve permitir propor o lance
    def test_nao_deve_permitir_propor_lance_caso_o_usuario_seja_o_mesmo(self):
        lance_do_gui_200 = Lance(self.gui, 200.0)

        # uma forma de tratar a exceção
        # try:
        #     self.leilao.propoe(self.lance_do_gui)
        #     self.leilao.propoe(lance_do_gui_200)
        #     # se executou as linhas de cima, deveria ter dado excessão
        #     self.fail(msg='Não lançou exceção')
        # # dado a exceção e não executado as linhas de cima, faço a verificação abaixo.
        # except ValueError:
        #     quantidade_de_lances_recebidos = len(self.leilao.lances)
        #     self.assertEqual(1, quantidade_de_lances_recebidos)

        # outra forma de tratar exceção usando método do testcase
        # espera um erro
        with self.assertRaises(LanceInvalido):
            self.leilao.propoe(self.lance_do_gui)
            self.leilao.propoe(lance_do_gui_200)