예제 #1
0
class TestLeilao(TestCase):
    def setUp(self):
        self.gui = Usuario('Gui', 500.0)
        self.lance_gui = Lance(self.gui, 150.0)
        self.leilao = Leilao('Celular')

    def test_deve_retornar_valores_corretos_ao_inserir_em_ordem_crescente(
            self):
        yuri = Usuario('Yuri', 500.0)
        lance_yuri = Lance(yuri, 100.0)

        self.leilao.propor_lance(lance_yuri)
        self.leilao.propor_lance(self.lance_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_nao_deve_permitir_propor_novo_lance_com_valor_menor_que_lance_anterior(
            self):
        yuri = Usuario('Yuri', 500.0)
        lance_yuri = Lance(yuri, 100.0)

        with self.assertRaises(LanceInvalido):
            self.leilao.propor_lance(self.lance_gui)
            self.leilao.propor_lance(lance_yuri)

    def test_deve_retornar_o_mesmo_valor_para_os_dois_lances_ao_inserir_um_lance(
            self):
        self.leilao.propor_lance(self.lance_gui)

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

    def test_deve_retornar_valores_corretos_ao_inserir_tres_lances(self):
        yuri = Usuario('Yuri', 500.0)
        vini = Usuario('Vini', 500.0)
        lance_yuri = Lance(yuri, 200.0)
        lance_vini = Lance(vini, 250.0)

        self.leilao.propor_lance(self.lance_gui)
        self.leilao.propor_lance(lance_yuri)
        self.leilao.propor_lance(lance_vini)

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

    def test_deve_permitir_propor_lance_caso_nao_exista_lances(self):
        self.leilao.propor_lance(self.lance_gui)
        quantidade_lances = len(self.leilao.lances)

        self.assertEqual(1, quantidade_lances)

    def test_deve_permitir_propor_lance_caso_ultimo_usuario_seja_diferente(
            self):
        yuri = Usuario('Yuri', 500.0)
        lance_yuri = Lance(yuri, 200.0)

        self.leilao.propor_lance(self.lance_gui)
        self.leilao.propor_lance(lance_yuri)

        quantidade_lances = len(self.leilao.lances)

        self.assertEqual(2, quantidade_lances)

    def test_nao_deve_permitir_propor_lance_caso_usuario_seja_o_mesmo(self):
        lance_gui_2 = Lance(self.gui, 200)

        with self.assertRaises(LanceInvalido):
            self.leilao.propor_lance(self.lance_gui)
            self.leilao.propor_lance(lance_gui_2)
예제 #2
0
class TestLeilao(TestCase):
    def setUp(self):
        self.primeiro_usuario = Usuario("Gui", 100.00)
        self.segundo_usuario = Usuario("Pedro", 150.00)
        self.terceiro_usuario = Usuario("Vini", 80.00)

        self.lance_do_pedro = Lance(self.segundo_usuario, 100.00)
        self.lance_do_gui = Lance(self.primeiro_usuario, 150.00)
        self.lance_do_vini = Lance(self.terceiro_usuario, 80.00)

        self.leilao = Leilao("Celular")

    def test_deve_retornar_maior_e_menor_valor_quando_adicionado_em_ordem_crescente(
            self):
        self.leilao.propor_lance(self.lance_do_pedro)
        self.leilao.propor_lance(self.lance_do_gui)

        self.assertEqual(100.00, self.leilao.menor_lance)
        self.assertEqual(150.00, self.leilao.maior_lance)

    def test_deve_retornar_maior_e_menor_valor_quando_adicionado_em_ordem_decrescente(
            self):
        self.leilao.propor_lance(self.lance_do_pedro)
        self.leilao.propor_lance(self.lance_do_gui)

        self.assertEqual(100.00, self.leilao.menor_lance)
        self.assertEqual(150.00, self.leilao.maior_lance)

    def test_deve_retornar_o_mesmo_valor_para_maior_e_menor_lance_quando_adicionado_apenas_um_lance(
            self):
        self.leilao.propor_lance(self.lance_do_gui)

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

    def test_deve_retornar_maior_e_menor_valor_quando_tiver_mais_de_dois_lances(
            self):
        self.leilao.propor_lance(self.lance_do_vini)
        self.leilao.propor_lance(self.lance_do_pedro)
        self.leilao.propor_lance(self.lance_do_gui)

        self.assertEqual(80.00, self.leilao.menor_lance)
        self.assertEqual(150.00, self.leilao.maior_lance)

    def test_nao_deve_permitir_que_o_usuario_faca_dois_lances_seguidos(self):
        with self.assertRaises(LanceInvalido):
            self.leilao.propor_lance(self.lance_do_pedro)
            self.leilao.propor_lance(self.lance_do_pedro)

    def test_nao_deve_permitir_que_o_usuario_faca_lances_com_valor_menor_que_o_lance_anterior(
            self):
        with self.assertRaises(LanceInvalido):
            self.leilao.propor_lance(self.lance_do_gui)
            self.leilao.propor_lance(self.lance_do_pedro)