Ejemplo n.º 1
0
class TestComboAtividades(unittest.TestCase):

	def setUp(self):

		self.horario1 = Horario("10/11/2017 10:00")
		self.horario2 = self.horario1.mais("2 horas")
		self.horario3 = self.horario2.mais("50 minutos")

		self.tdd  = AtividadeSimples(TipoAtividade.TUTORIAL,"Introdução à TDD",self.horario1,15.00)
		self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON,"Soluções Inteligentes",self.horario2,50.00)
		self.workshop  = AtividadeSimples(TipoAtividade.WORKSHOP,"Hackeando Dados Públicos",self.horario2,20.00)

		self.jsf = AtividadeSimples(TipoAtividade.TUTORIAL,"Java pra Web",self.horario1,10.00)
		self.primefaces = AtividadeSimples(TipoAtividade.PALESTRA,"Framework Web Java",self.horario2,20.00)
		self.junit = AtividadeSimples(TipoAtividade.WORKSHOP,"Testando aplicações Java",self.horario3,20.00)

	def test_deve_gerar_excecao_se_atividade_simples_adicionar_atividades(self):

		with self.assertRaises(TypeError):
			self.tdd.add(self.hackathon)


	def test_deve_retornar_preco_de_combo_com_logica_aplicada_aos_seus_precos(self):

		kit_java = KitAtividade("Kit Javeiro")

		for atividade in [self.jsf , self.primefaces , self.junit]:
			kit_java.add(atividade)

		preco_kit_java = kit_java.preco_total

		self.assertEqual(50.00,preco_kit_java)

	def test_misturando_atividades_simples_com_compostas_em_um_kit(self):

		kit_python = KitAtividade("Pythonista")
		kit_java   = KitAtividade("Javeiro")
		kit_geral  = KitAtividade("Melhores Práticas Dev")

		for atividade in [ self.tdd , self.workshop]:
			kit_python.add(atividade)

		for atividade in [self.junit , self.primefaces]:
			kit_java.add(atividade)

		for kit in [ kit_java , kit_python]:
			kit_geral.add(kit)
			
		kit_geral.add(self.jsf)

		self.assertEqual(85.00,kit_geral.preco_total)
Ejemplo n.º 2
0
class TestResponsavel(unittest.TestCase):

	def setUp(self):
		self.hoje = Horario()

		data_inicio = self.hoje.mais("1 dia")
		self.duracao1 = Duracao(data_inicio,durando="50 minutos")

		self.espaco = EspacoSimples("SALA-01",40,None)

		self.palestra = AtividadeSimples(TipoAtividade.PALESTRA,"Introdução à Vuejs",self.duracao1,0.0)
		self.palestra.definir_espaco(self.espaco)

	def test_deve_retornar_responsavel_da_atividade(self):
		
		marlysson = Pessoa("Marlysson",20,TipoSexo.MASCULINO)
		marcelo = Pessoa("Marcelo",22,TipoSexo.MASCULINO)

		self.palestra.add_responsavel(marlysson)
		self.palestra.add_responsavel(marcelo)

		self.assertListEqual(self.palestra.ministrantes,[marlysson,marcelo])

	def test_deve_retornar_curriculo_do_responsavel_atividade(self):

		pessoa = Pessoa("Luciano Ramalho",50,TipoSexo.MASCULINO)
		curriculo = Curriculo("Python",15,"Thougthworks","")

		pessoa.add_curriculo(curriculo)

		self.palestra.add_responsavel(pessoa)

		self.assertEqual(self.palestra.ministrantes[0],pessoa)

	if __name__ == "__main__":
		unittest.main(verbosity=2)
Ejemplo n.º 3
0
class TestComboAtividades(unittest.TestCase):
    def setUp(self):

        self.horario1 = Horario("10/11/2017 10:00")
        self.horario2 = self.horario1.mais("2 horas")
        self.horario3 = self.horario2.mais("50 minutos")

        self.tdd = AtividadeSimples(TipoAtividade.TUTORIAL, "Introdução à TDD",
                                    self.horario1, 15.00)
        self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON,
                                          "Soluções Inteligentes",
                                          self.horario2, 50.00)
        self.workshop = AtividadeSimples(TipoAtividade.WORKSHOP,
                                         "Hackeando Dados Públicos",
                                         self.horario2, 20.00)

        self.jsf = AtividadeSimples(TipoAtividade.TUTORIAL, "Java pra Web",
                                    self.horario1, 10.00)
        self.primefaces = AtividadeSimples(TipoAtividade.PALESTRA,
                                           "Framework Web Java", self.horario2,
                                           20.00)
        self.junit = AtividadeSimples(TipoAtividade.WORKSHOP,
                                      "Testando aplicações Java",
                                      self.horario3, 20.00)

    def test_deve_gerar_excecao_se_atividade_simples_adicionar_atividades(
            self):

        with self.assertRaises(TypeError):
            self.tdd.add(self.hackathon)

    def test_deve_retornar_preco_de_combo_com_logica_aplicada_aos_seus_precos(
            self):

        kit_java = KitAtividade("Kit Javeiro")

        for atividade in [self.jsf, self.primefaces, self.junit]:
            kit_java.add(atividade)

        preco_kit_java = kit_java.preco_total

        self.assertEqual(50.00, preco_kit_java)

    def test_misturando_atividades_simples_com_compostas_em_um_kit(self):

        kit_python = KitAtividade("Pythonista")
        kit_java = KitAtividade("Javeiro")
        kit_geral = KitAtividade("Melhores Práticas Dev")

        for atividade in [self.tdd, self.workshop]:
            kit_python.add(atividade)

        for atividade in [self.junit, self.primefaces]:
            kit_java.add(atividade)

        for kit in [kit_java, kit_python]:
            kit_geral.add(kit)

        kit_geral.add(self.jsf)

        self.assertEqual(85.00, kit_geral.preco_total)
Ejemplo n.º 4
0
class AgendaEvento(unittest.TestCase):
    def setUp(self):

        self.local = Local("Av. Frei Serafim", "Centro", 1010, "Teresina-Pi")

        self.hoje = Horario()

        data_inicio = self.hoje.mais("1 dia")
        self.duracao_evento = Duracao(data_inicio, durando="3 dias")

        self.prazo_inscricoes = self.hoje.mais("1 dia")

        self.duracao1 = Duracao(data_inicio, durando="50 minutos")
        self.duracao2 = Duracao(self.duracao1.horario_final,
                                durando="50 minutos")
        self.duracao3 = Duracao(self.duracao2.horario_final,
                                durando="50 minutos")
        self.duracao4 = Duracao(self.duracao3.horario_final,
                                durando="50 minutos")

        #Horario Atividades
        horario_tutorial = self.duracao1
        horario_palestra = self.duracao2
        horario_mesa_redonda = self.duracao3
        horario_workshop = self.duracao4
        horario_hackathon = Duracao(self.duracao4.inicio, durando="50 minutos")

        #Atividades
        self.palestra = AtividadeSimples(TipoAtividade.PALESTRA,
                                         "Lucrando com open-source",
                                         horario_palestra, 0.0)
        self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,
                                         "Boas Práticas com Django",
                                         horario_tutorial, 15.00)
        self.mesa_redonda = AtividadeSimples(TipoAtividade.MESA_REDONDA,
                                             "Pirataria na Web",
                                             horario_mesa_redonda, 0.0)
        self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON,
                                          "Soluções Financeiras - Nubank",
                                          horario_hackathon, 50.00)

        self.predio_B = EspacoComposto("Prédio B", self.local)

        self.andar_1 = EspacoComposto("B1", self.local)
        self.andar_2 = EspacoComposto("B2", self.local)

        self.salas = [
            EspacoSimples("B" + str(num + 1) + "-01", 40, self.local)
            for num in range(1, 5)
        ]

        self.andar_1.add(self.salas[0])
        self.andar_1.add(self.salas[1])
        self.andar_2.add(self.salas[2])
        self.andar_2.add(self.salas[3])

        self.predio_B.add(self.andar_1)
        self.predio_B.add(self.andar_2)

        self.palestra.definir_espaco(self.salas[0])
        self.tutorial.definir_espaco(self.salas[1])
        self.mesa_redonda.definir_espaco(self.salas[2])
        self.hackathon.definir_espaco(self.salas[3])

        self.evento = Evento("Software Freedom Day", "Descrição do Evento",
                             self.duracao_evento)
        self.evento.prazo_inscricoes = self.prazo_inscricoes

        atividades = [
            self.palestra, self.tutorial, self.mesa_redonda, self.hackathon
        ]

        for atividade in atividades:
            self.evento.adicionar_atividade(atividade)

        self.evento.adicionar_espaco(self.predio_B)

    def test_deve_retornar_lista_de_atividades_ordenada_do_espaco_fisico_simples(
            self):

        agenda_evento = self.evento.gerar_agenda()

        self.assertListEqual(
            agenda_evento,
            [self.palestra, self.tutorial, self.mesa_redonda, self.hackathon])

    def test_deve_retornar_lista_de_atividades_ordenada_do_espaco_fisico_composto(
            self):

        agenda_andar_2 = self.andar_2.gerar_agenda()

        self.assertListEqual(agenda_andar_2,
                             [self.mesa_redonda, self.hackathon])
Ejemplo n.º 5
0
class TestInscricao(unittest.TestCase):
	
	def setUp(self):

		self.hoje = Horario()

		data_inicio = self.hoje.mais("1 dia")
		self.duracao = Duracao(data_inicio,durando="3 dias")

		self.prazo_inscricoes = self.hoje.mais("10 dias")

		self.evento = Evento("Congresso de Profissionais Web","lorem ipsum....",self.duracao)
		self.evento.prazo_inscricoes = self.prazo_inscricoes

		self.duracao1 = Duracao(data_inicio,durando="50 minutos")
		self.duracao2 = Duracao(self.duracao1.horario_final,durando="50 minutos")
		self.duracao3 = Duracao(self.duracao2.horario_final,durando="50 minutos")
		self.duracao4 = Duracao(self.duracao3.horario_final,durando="50 minutos")

		#Salas
		self.sala1 = EspacoSimples("Sala-01",50,None)
		self.sala2 = EspacoSimples("Sala-02",50,None)
		self.sala3 = EspacoSimples("Sala-03",50,None)
		self.sala4 = EspacoSimples("Sala-04",50,None)

		self.palestra = AtividadeSimples(TipoAtividade.PALESTRA,"Introdução à Vuejs",self.duracao1,0.0)
		self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,"Iniciando com Unittest",self.duracao2,15.00)
		self.mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,"Python Avançado",self.duracao3,30.00)
		self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON,"Hackeando Dados Públicos",self.duracao4,10.00)

		self.palestra.definir_espaco(self.sala1)
		self.tutorial.definir_espaco(self.sala2)
		self.mini_curso.definir_espaco(self.sala3)
		self.hackathon.definir_espaco(self.sala4)

		self.participante = Pessoa("Marlysson",20,TipoSexo.MASCULINO)
	
	def test_inscricao_recem_criada_deve_ter_zero_atividades(self):

		inscricao = Inscricao(self.participante,self.evento)

		self.assertEqual(0,len(inscricao.atividades))
	
	def test_deve_settar_automaticamente_em_inscricao_o_evento_adicionado(self):

		inscricao = Inscricao(self.participante,self.evento)

		self.assertEqual(inscricao.evento,self.evento)
	
	def test_deve_gerar_excecao_quando_se_inscrever_repetidamente_no_evento(self):

		inscricao1 =  Inscricao(self.participante,self.evento)
		inscricao2 =  Inscricao(self.participante,self.evento)

		compra = Compra(inscricao1)
		compra.pagar(10)

		with self.assertRaises(InscricaoJaExisteNoEvento):
			compra = Compra(inscricao2)
			compra.pagar(10)
	
	def test_deve_gerar_excecao_ao_adicionar_atividade_repetida_na_inscricao(self):
		
		inscricao = Inscricao(self.participante,self.evento)

		for atividade in [self.palestra,self.hackathon]:
			self.evento.adicionar_atividade(atividade)	

		with self.assertRaises(AtividadeJaExisteNaInscricao):
			
			for atividade in [self.hackathon,self.palestra,self.hackathon]:
				inscricao.adicionar_atividade(atividade)
	
	def test_deve_gerar_excecao_adicionar_atividade_nao_associada_ao_evento_inscrito(self):

		for atividade in [self.palestra,self.hackathon,self.tutorial]:
			self.evento.adicionar_atividade(atividade)	

		inscricao = Inscricao(self.participante,self.evento)

		with self.assertRaises(AtividadeNaoEncontradaNoEvento):
			
			for atividade in [self.hackathon,self.mini_curso]:
				inscricao.adicionar_atividade(atividade)
			
	def test_deve_aceitar_adicionar_atividades_que_estejam_no_seu_evento(self):

		palestra = AtividadeSimples(TipoAtividade.PALESTRA,"CSS Escalável",self.duracao1,0.0)
		tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,"Javascript e SVG",self.duracao2,15.00)
		mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,"Javascript + StorageLocal",self.duracao3,30.00)
		hackathon = AtividadeSimples(TipoAtividade.HACKATHON,"Aplicações em NodeJS",self.duracao4,10.00)

		for atividade in [palestra,tutorial,mini_curso,hackathon]:
			self.evento.adicionar_atividade(atividade)

		inscricao = Inscricao(self.participante,self.evento)
		
		for atividade in [palestra,hackathon,tutorial]:
			inscricao.adicionar_atividade(atividade)
	
	# @unittest.skip("Não implementado")
	# def test_deve_gerar_excecao_quando_ocorrer_uma_inscricao_fora_do_prazo(self):
		
	# 	from unittest.mock import Mock

	# 	data_inicio = self.hoje + timedelta(days=1)
	# 	data_final  = data_inicio + timedelta(days=3)


	# 	evento = Evento("Congresso de Profissionais Web","lorem ipsum....",data_inicio,data_final)
	# 	evento.prazo_inscricoes = (data_inicio + timedelta(days=2)).date()

	# 	evento.apto_inscricoes = Mock(return_value=False)

	# 	evento.adicionar_atividade(self.tutorial)
	# 	evento.adicionar_atividade(self.palestra)

	# 	with self.assertRaises(PeriodoInvalidoParaInscricoes):
	# 		inscricao = Inscricao(self.participante,evento)

	def test_deve_retornar_data_do_checkin_da_inscricao(self):
		
		for atividade in [self.palestra,self.tutorial,self.mini_curso,self.hackathon]:
			self.evento.adicionar_atividade(atividade)

		inscricao = Inscricao(self.participante,self.evento)
		
		for atividade in [self.palestra,self.hackathon,self.tutorial]:
			inscricao.adicionar_atividade(atividade)

		compra = Compra(inscricao)
		compra.pagar(25.00)

		inscricao.realizar_checkin()

		from datetime import date

		hoje = date.today()

		self.assertEqual(inscricao.data_checkin,hoje)

	def test_deve_gerar_excecao_de_checkin_de_inscricao_nao_encontrada_no_evento(self):
		
		for atividade in [self.palestra,self.tutorial,self.mini_curso,self.hackathon]:
			self.evento.adicionar_atividade(atividade)

		inscricao = Inscricao(self.participante,self.evento)
		
		for atividade in [self.palestra,self.hackathon,self.tutorial]:
			inscricao.adicionar_atividade(atividade)

		with self.assertRaises(InscricaoNaoExisteNoEvento):
			inscricao.realizar_checkin()
		

	def test_inscricao_unica_deve_adicionar_todas_as_atividades_do_evento_inscrito(self):
		
		self.evento.inscricao_unica = True

		tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,"Javascript e SVG",self.duracao2,15.00)
		mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,"Javascript + StorageLocal",self.duracao3,30.00)
		hackathon = AtividadeSimples(TipoAtividade.HACKATHON,"Aplicações em NodeJS",self.duracao4,10.00)

		for atividade in [tutorial,mini_curso,hackathon]:
			self.evento.adicionar_atividade(atividade)

		inscricao = Inscricao(self.participante,self.evento)
		
		self.assertListEqual(inscricao.atividades,[tutorial,mini_curso,hackathon])
Ejemplo n.º 6
0
class TestEvento(unittest.TestCase):
    def setUp(self):

        logger = Logger('../novas_atividades.txt')

        self.hoje = Horario()

        data_inicio = self.hoje.mais("10 dias")

        duracao = Duracao(data_inicio, durando="3 dias")

        self.evento = Evento("Semana de informática", "asdasdasd", duracao)

        self.evento.registrar(logger)

        self.palestra = AtividadeSimples(TipoAtividade.PALESTRA,
                                         "Acessibilidade Web", self.hoje, 0.0)
        self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,
                                         "Javascript funcional", self.hoje,
                                         15.00)
        self.mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,
                                           "Javascript - Best Pratices",
                                           self.hoje, 30.00)

    def test_deve_criar_evento_com_nome_e_descricao_nao_publicado(self):
        self.assertEqual(StatusEvento.NAO_PUBLICADO, self.evento.visibilidade)

    def test_deve_alterar_visibilidade_valida_do_evento(self):

        self.evento.mudar_visibilidade(StatusEvento.PUBLICADO)

        self.assertEqual(StatusEvento.PUBLICADO, self.evento.visibilidade)

    def test_deve_retornar_exception_com_visibilidade_invalida(self):

        with self.assertRaises(ValueError):
            self.evento.mudar_visibilidade("Visibilidade Inválida")

    def test_deve_iniciar_evento_com_status_nao_iniciado(self):
        self.assertEqual(StatusEvento.NAO_INICIADO, self.evento.ocorrencia)

    def test_evento_recem_criado_deve_ter_zero_atividades(self):

        self.assertEqual(0, len(self.evento.atividades))

    def test_evento_com_atividades_adicionadas(self):

        for atividade in [self.palestra, self.tutorial, self.mini_curso]:
            self.evento.adicionar_atividade(atividade)

        self.assertEqual(3, len(self.evento.atividades))

    def test_nao_deve_aceitar_eventos_data_passada(self):

        data_inicio = Horario("1/1/2015 12:00")

        duracao = Duracao(data_inicio, durando="3 dias")

        with self.assertRaises(EventoDataInvalida):
            evento_erro = Evento("Python Day", "Evento de Python", duracao)

    def test_deve_aceitar_eventos_com_data_hoje_ou_futura(self):

        duracao1 = Duracao(self.hoje, durando="2 dias")

        inicio2 = self.hoje.mais("10 dias")
        duracao2 = Duracao(inicio2, durando="10 dias")

        evento1 = Evento("Python Beach", "Python na praia", duracao1)

        evento2 = Evento("Java Day", "Java na Prática", duracao2)

    def test_deve_gerar_excecao_quando_adicionar_atividades_repetidas_no_evento(
            self):

        inicio = self.hoje.mais("2 dias")

        duracao = Duracao(inicio, durando="2 dias")

        evento = Evento("Python Beach", "Python na praia", duracao)

        with self.assertRaises(AtividadeJaExisteNoEvento):

            for atividade in [self.tutorial, self.mini_curso, self.tutorial]:
                evento.adicionar_atividade(atividade)
Ejemplo n.º 7
0
class TestEvento(unittest.TestCase):
		
	def setUp(self):
		
		logger = Logger('../novas_atividades.txt')

		self.hoje = Horario()

		data_inicio = self.hoje.mais("10 dias")

		duracao = Duracao(data_inicio,durando="3 dias")

		self.evento = Evento("Semana de informática","asdasdasd",duracao)

		self.evento.registrar(logger)
		
		self.palestra = AtividadeSimples(TipoAtividade.PALESTRA,"Acessibilidade Web",self.hoje,0.0)
		self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,"Javascript funcional",self.hoje,15.00)
		self.mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,"Javascript - Best Pratices",self.hoje,30.00)
	
	def test_deve_criar_evento_com_nome_e_descricao_nao_publicado(self):
		self.assertEqual(StatusEvento.NAO_PUBLICADO,self.evento.visibilidade)
	
	def test_deve_alterar_visibilidade_valida_do_evento(self):

		self.evento.mudar_visibilidade(StatusEvento.PUBLICADO)

		self.assertEqual(StatusEvento.PUBLICADO,self.evento.visibilidade)
	
	def test_deve_retornar_exception_com_visibilidade_invalida(self):

		with self.assertRaises(ValueError):
			self.evento.mudar_visibilidade("Visibilidade Inválida")
	
	def test_deve_iniciar_evento_com_status_nao_iniciado(self):
		self.assertEqual(StatusEvento.NAO_INICIADO,self.evento.ocorrencia)
	
	def test_evento_recem_criado_deve_ter_zero_atividades(self):
		
		self.assertEqual(0,len(self.evento.atividades))
	
	def test_evento_com_atividades_adicionadas(self):

		for atividade in [self.palestra,self.tutorial,self.mini_curso]:
			self.evento.adicionar_atividade(atividade)

		self.assertEqual(3,len(self.evento.atividades))
	
	def test_nao_deve_aceitar_eventos_data_passada(self):
		
		data_inicio = Horario("1/1/2015 12:00")

		duracao = Duracao(data_inicio,durando="3 dias")

		with self.assertRaises(EventoDataInvalida):
			evento_erro = Evento("Python Day","Evento de Python",duracao)
	
	def test_deve_aceitar_eventos_com_data_hoje_ou_futura(self):

		duracao1 = Duracao(self.hoje,durando="2 dias")
		
		inicio2 = self.hoje.mais("10 dias")
		duracao2 = Duracao(inicio2,durando="10 dias")

		evento1 = Evento("Python Beach","Python na praia",duracao1)

		evento2 = Evento("Java Day","Java na Prática",duracao2)
	
	def test_deve_gerar_excecao_quando_adicionar_atividades_repetidas_no_evento(self):
		
		inicio = self.hoje.mais("2 dias")

		duracao = Duracao(inicio,durando="2 dias")

		evento = Evento("Python Beach","Python na praia",duracao)

		with self.assertRaises(AtividadeJaExisteNoEvento):
			
			for atividade in [self.tutorial,self.mini_curso,self.tutorial]:
				evento.adicionar_atividade(atividade)
Ejemplo n.º 8
0
class TestInscricao(unittest.TestCase):
    def setUp(self):

        self.hoje = Horario()

        data_inicio = self.hoje.mais("1 dia")
        self.duracao = Duracao(data_inicio, durando="3 dias")

        self.prazo_inscricoes = self.hoje.mais("10 dias")

        self.evento = Evento("Congresso de Profissionais Web",
                             "lorem ipsum....", self.duracao)
        self.evento.prazo_inscricoes = self.prazo_inscricoes

        self.duracao1 = Duracao(data_inicio, durando="50 minutos")
        self.duracao2 = Duracao(self.duracao1.horario_final,
                                durando="50 minutos")
        self.duracao3 = Duracao(self.duracao2.horario_final,
                                durando="50 minutos")
        self.duracao4 = Duracao(self.duracao3.horario_final,
                                durando="50 minutos")

        #Salas
        self.sala1 = EspacoSimples("Sala-01", 50, None)
        self.sala2 = EspacoSimples("Sala-02", 50, None)
        self.sala3 = EspacoSimples("Sala-03", 50, None)
        self.sala4 = EspacoSimples("Sala-04", 50, None)

        self.palestra = AtividadeSimples(TipoAtividade.PALESTRA,
                                         "Introdução à Vuejs", self.duracao1,
                                         0.0)
        self.tutorial = AtividadeSimples(TipoAtividade.TUTORIAL,
                                         "Iniciando com Unittest",
                                         self.duracao2, 15.00)
        self.mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,
                                           "Python Avançado", self.duracao3,
                                           30.00)
        self.hackathon = AtividadeSimples(TipoAtividade.HACKATHON,
                                          "Hackeando Dados Públicos",
                                          self.duracao4, 10.00)

        self.palestra.definir_espaco(self.sala1)
        self.tutorial.definir_espaco(self.sala2)
        self.mini_curso.definir_espaco(self.sala3)
        self.hackathon.definir_espaco(self.sala4)

        self.participante = Pessoa("Marlysson", 20, TipoSexo.MASCULINO)

    def test_inscricao_recem_criada_deve_ter_zero_atividades(self):

        inscricao = Inscricao(self.participante, self.evento)

        self.assertEqual(0, len(inscricao.atividades))

    def test_deve_settar_automaticamente_em_inscricao_o_evento_adicionado(
            self):

        inscricao = Inscricao(self.participante, self.evento)

        self.assertEqual(inscricao.evento, self.evento)

    def test_deve_gerar_excecao_quando_se_inscrever_repetidamente_no_evento(
            self):

        inscricao1 = Inscricao(self.participante, self.evento)
        inscricao2 = Inscricao(self.participante, self.evento)

        compra = Compra(inscricao1)
        compra.pagar(10)

        with self.assertRaises(InscricaoJaExisteNoEvento):
            compra = Compra(inscricao2)
            compra.pagar(10)

    def test_deve_gerar_excecao_ao_adicionar_atividade_repetida_na_inscricao(
            self):

        inscricao = Inscricao(self.participante, self.evento)

        for atividade in [self.palestra, self.hackathon]:
            self.evento.adicionar_atividade(atividade)

        with self.assertRaises(AtividadeJaExisteNaInscricao):

            for atividade in [self.hackathon, self.palestra, self.hackathon]:
                inscricao.adicionar_atividade(atividade)

    def test_deve_gerar_excecao_adicionar_atividade_nao_associada_ao_evento_inscrito(
            self):

        for atividade in [self.palestra, self.hackathon, self.tutorial]:
            self.evento.adicionar_atividade(atividade)

        inscricao = Inscricao(self.participante, self.evento)

        with self.assertRaises(AtividadeNaoEncontradaNoEvento):

            for atividade in [self.hackathon, self.mini_curso]:
                inscricao.adicionar_atividade(atividade)

    def test_deve_aceitar_adicionar_atividades_que_estejam_no_seu_evento(self):

        palestra = AtividadeSimples(TipoAtividade.PALESTRA, "CSS Escalável",
                                    self.duracao1, 0.0)
        tutorial = AtividadeSimples(TipoAtividade.TUTORIAL, "Javascript e SVG",
                                    self.duracao2, 15.00)
        mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,
                                      "Javascript + StorageLocal",
                                      self.duracao3, 30.00)
        hackathon = AtividadeSimples(TipoAtividade.HACKATHON,
                                     "Aplicações em NodeJS", self.duracao4,
                                     10.00)

        for atividade in [palestra, tutorial, mini_curso, hackathon]:
            self.evento.adicionar_atividade(atividade)

        inscricao = Inscricao(self.participante, self.evento)

        for atividade in [palestra, hackathon, tutorial]:
            inscricao.adicionar_atividade(atividade)

    # @unittest.skip("Não implementado")
    # def test_deve_gerar_excecao_quando_ocorrer_uma_inscricao_fora_do_prazo(self):

    # 	from unittest.mock import Mock

    # 	data_inicio = self.hoje + timedelta(days=1)
    # 	data_final  = data_inicio + timedelta(days=3)

    # 	evento = Evento("Congresso de Profissionais Web","lorem ipsum....",data_inicio,data_final)
    # 	evento.prazo_inscricoes = (data_inicio + timedelta(days=2)).date()

    # 	evento.apto_inscricoes = Mock(return_value=False)

    # 	evento.adicionar_atividade(self.tutorial)
    # 	evento.adicionar_atividade(self.palestra)

    # 	with self.assertRaises(PeriodoInvalidoParaInscricoes):
    # 		inscricao = Inscricao(self.participante,evento)

    def test_deve_retornar_data_do_checkin_da_inscricao(self):

        for atividade in [
                self.palestra, self.tutorial, self.mini_curso, self.hackathon
        ]:
            self.evento.adicionar_atividade(atividade)

        inscricao = Inscricao(self.participante, self.evento)

        for atividade in [self.palestra, self.hackathon, self.tutorial]:
            inscricao.adicionar_atividade(atividade)

        compra = Compra(inscricao)
        compra.pagar(25.00)

        inscricao.realizar_checkin()

        from datetime import date

        hoje = date.today()

        self.assertEqual(inscricao.data_checkin, hoje)

    def test_deve_gerar_excecao_de_checkin_de_inscricao_nao_encontrada_no_evento(
            self):

        for atividade in [
                self.palestra, self.tutorial, self.mini_curso, self.hackathon
        ]:
            self.evento.adicionar_atividade(atividade)

        inscricao = Inscricao(self.participante, self.evento)

        for atividade in [self.palestra, self.hackathon, self.tutorial]:
            inscricao.adicionar_atividade(atividade)

        with self.assertRaises(InscricaoNaoExisteNoEvento):
            inscricao.realizar_checkin()

    def test_inscricao_unica_deve_adicionar_todas_as_atividades_do_evento_inscrito(
            self):

        self.evento.inscricao_unica = True

        tutorial = AtividadeSimples(TipoAtividade.TUTORIAL, "Javascript e SVG",
                                    self.duracao2, 15.00)
        mini_curso = AtividadeSimples(TipoAtividade.MINI_CURSO,
                                      "Javascript + StorageLocal",
                                      self.duracao3, 30.00)
        hackathon = AtividadeSimples(TipoAtividade.HACKATHON,
                                     "Aplicações em NodeJS", self.duracao4,
                                     10.00)

        for atividade in [tutorial, mini_curso, hackathon]:
            self.evento.adicionar_atividade(atividade)

        inscricao = Inscricao(self.participante, self.evento)

        self.assertListEqual(inscricao.atividades,
                             [tutorial, mini_curso, hackathon])
Ejemplo n.º 9
0
class AgendaEvento(unittest.TestCase):

	def setUp(self):

		self.local = Local("Av. Frei Serafim","Centro",1010,"Teresina-Pi")
		
		self.hoje = Horario()

		data_inicio = self.hoje.mais("1 dia")
		self.duracao_evento = Duracao(data_inicio,durando="3 dias")

		self.prazo_inscricoes = self.hoje.mais("1 dia")

		self.duracao1 = Duracao(data_inicio,durando="50 minutos")
		self.duracao2 = Duracao(self.duracao1.horario_final,durando="50 minutos")
		self.duracao3 = Duracao(self.duracao2.horario_final,durando="50 minutos")
		self.duracao4 = Duracao(self.duracao3.horario_final,durando="50 minutos")

		#Horario Atividades
		horario_tutorial     = self.duracao1
		horario_palestra     = self.duracao2
		horario_mesa_redonda = self.duracao3
		horario_workshop     = self.duracao4
		horario_hackathon    = Duracao(self.duracao4.inicio,durando="50 minutos")
		
		#Atividades
		self.palestra     = AtividadeSimples(TipoAtividade.PALESTRA,"Lucrando com open-source",horario_palestra,0.0)
		self.tutorial     = AtividadeSimples(TipoAtividade.TUTORIAL,"Boas Práticas com Django",horario_tutorial,15.00)
		self.mesa_redonda = AtividadeSimples(TipoAtividade.MESA_REDONDA,"Pirataria na Web",horario_mesa_redonda,0.0)
		self.hackathon    = AtividadeSimples(TipoAtividade.HACKATHON,"Soluções Financeiras - Nubank",horario_hackathon,50.00)
		
		self.predio_B = EspacoComposto("Prédio B",self.local)

		self.andar_1 = EspacoComposto("B1",self.local)
		self.andar_2 = EspacoComposto("B2",self.local)

		self.salas = [ EspacoSimples("B"+str(num+1)+"-01",40,self.local) for num in range(1,5)]

		self.andar_1.add(self.salas[0])
		self.andar_1.add(self.salas[1])
		self.andar_2.add(self.salas[2])
		self.andar_2.add(self.salas[3])

		self.predio_B.add(self.andar_1)
		self.predio_B.add(self.andar_2)

		self.palestra.definir_espaco(self.salas[0])
		self.tutorial.definir_espaco(self.salas[1])    
		self.mesa_redonda.definir_espaco(self.salas[2])    
		self.hackathon.definir_espaco(self.salas[3])    

		self.evento = Evento("Software Freedom Day","Descrição do Evento",self.duracao_evento)
		self.evento.prazo_inscricoes = self.prazo_inscricoes
		
		atividades = [self.palestra , self.tutorial , self.mesa_redonda , self.hackathon ]

		for atividade in atividades:
			self.evento.adicionar_atividade(atividade)

		self.evento.adicionar_espaco(self.predio_B)

	def test_deve_retornar_lista_de_atividades_ordenada_do_espaco_fisico_simples(self):
		
		agenda_evento = self.evento.gerar_agenda()

		self.assertListEqual(agenda_evento,[self.palestra,self.tutorial,self.mesa_redonda,self.hackathon])

	def test_deve_retornar_lista_de_atividades_ordenada_do_espaco_fisico_composto(self):
		
		agenda_andar_2 = self.andar_2.gerar_agenda()

		self.assertListEqual(agenda_andar_2,[self.mesa_redonda,self.hackathon])
Ejemplo n.º 10
0
class TestCompraInscricao(unittest.TestCase):

	def setUp(self):

		self.hoje = Horario()

		data_inicio = self.hoje.mais("1 dia")
		self.duracao_evento = Duracao(data_inicio,durando="3 dias")

		self.prazo_inscricoes = self.hoje.mais("1 dia")

		self.duracao1 = Duracao(data_inicio,durando="50 minutos")
		self.duracao2 = Duracao(self.duracao1.horario_final,durando="50 minutos")
		self.duracao3 = Duracao(self.duracao2.horario_final,durando="50 minutos")
		self.duracao4 = Duracao(self.duracao3.horario_final,durando="50 minutos")

		self.data_cupons = Horario()
		
		#Horario Atividades
		horario_tutorial     = self.duracao1
		horario_palestra     = self.duracao2
		horario_mesa_redonda = self.duracao3
		horario_workshop     = self.duracao4
		horario_hackathon    = Duracao(horario_workshop.inicio,durando="50 minutos")
		
		#Participante
		self.participante1 = Pessoa("Marlysson",18,TipoSexo.MASCULINO)
		self.participante2 = Pessoa("Marcos",25,TipoSexo.MASCULINO)
		
		#Salas
		self.sala1 = EspacoSimples("Sala-01",50,None)
		self.sala2 = EspacoSimples("Sala-02",50,None)
		self.sala3 = EspacoSimples("Sala-03",50,None)
		self.sala4 = EspacoSimples("Sala-04",50,None)
		self.sala5 = EspacoSimples("Sala-05",50,None)
		self.sala6 = EspacoSimples("Sala-06",50,None)

		#Atividades
		self.palestra     = AtividadeSimples(TipoAtividade.PALESTRA,"Lucrando com open-source",horario_palestra,0.0)
		self.tutorial     = AtividadeSimples(TipoAtividade.TUTORIAL,"Boas Práticas com Django",horario_tutorial,15.00)
		self.mesa_redonda = AtividadeSimples(TipoAtividade.MESA_REDONDA,"Pirataria na Web",horario_mesa_redonda,0.0)
		self.hackathon    = AtividadeSimples(TipoAtividade.HACKATHON,"Soluções Financeiras - Nubank",horario_hackathon,50.00)
		
		self.workshop1     = AtividadeSimples(TipoAtividade.WORKSHOP,"Python na Ciência",horario_workshop,30.00)
		self.workshop2     = AtividadeSimples(TipoAtividade.WORKSHOP,"Python no Ensino",horario_workshop,25.00)

		self.palestra.definir_espaco(self.sala1)
		self.tutorial.definir_espaco(self.sala2)
		self.mesa_redonda.definir_espaco(self.sala3)
		self.hackathon.definir_espaco(self.sala4)
		self.workshop1.definir_espaco(self.sala5)
		self.workshop2.definir_espaco(self.sala6)

		horarios_cupons = {
			"valido1" :   self.data_cupons.mais("1 dia"),
			"valido2" :   self.data_cupons.mais("1 dia"),
			"invalido1" : Horario("11/10/2015 16:00"),
			"invalido2":  Horario("20/1/2016 10:00")
		}

		self.cupom_geral = Cupom("LOTE_1",0.5,horarios_cupons.get("valido1"))
		self.cupom_geral.regra = DescontoGeral()

		self.cupom_tutorial = Cupom("TUTORIAIS_50",0.5,horarios_cupons.get("valido2"))
		self.cupom_tutorial.regra = DescontoTutorial()
		
		self.cupom_workshop = Cupom("WORKSHOP_10",0.1,horarios_cupons.get("invalido1"))
		self.cupom_workshop.regra = DescontoWorkshop()
		
		self.cupom_hackathon = Cupom("HACKATHON_50",0.5,horarios_cupons.get("invalido2"))
		self.cupom_hackathon.regra = DescontoHackathon()

		self.evento = Evento("Software Freedom Day","Descrição do Evento",self.duracao_evento)
		self.evento.prazo_inscricoes = self.prazo_inscricoes

		atividades = [self.palestra , self.tutorial , self.mesa_redonda , self.workshop1 , self.workshop2 , self.hackathon ]

		for atividade in atividades:
			self.evento.adicionar_atividade(atividade)

		cupons = [ self.cupom_geral , self.cupom_tutorial , self.cupom_workshop]
		
		for cupom in cupons:
			self.evento.adicionar_cupom(cupom)

	def test_inscricao_sem_itens_deve_ter_valor_zero(self):
		
		inscricao = Inscricao(self.participante1,self.evento)

		compra = Compra(inscricao)

		self.assertEqual(0,compra.preco_total)

	def test_valor_da_inscricao_e_o_valor_dos_seus_itens(self):
		
		inscricao = Inscricao(self.participante1,self.evento)

		inscricao.adicionar_atividade(self.workshop1)
		inscricao.adicionar_atividade(self.tutorial)

		compra = Compra(inscricao)

		valor_total = compra.preco_total

		self.assertEqual(45.00,valor_total)
	
	def test_ao_efetuar_compra_settar_inscricao_como_paga(self):
		
		inscricao = Inscricao(self.participante2,self.evento)

		inscricao.adicionar_atividade(self.tutorial)
		inscricao.adicionar_atividade(self.workshop1)

		compra = Compra(inscricao)
		compra.pagar(150.00)

		self.assertTrue(inscricao.paga)

	def test_deve_gerar_excecao_quando_pagar_uma_inscricao_ja_paga(self):

		inscricao = Inscricao(self.participante2,self.evento)

		inscricao.adicionar_atividade(self.tutorial)
		inscricao.adicionar_atividade(self.workshop1)

		compra = Compra(inscricao)
		compra.pagar(150.00)

		with self.assertRaises(InscricaoJaPaga):
			compra.pagar(100.00)
			
	def test_deve_retornar_data_de_pagamento_correta_ao_efetuar_compra(self):
		
		inscricao = Inscricao(self.participante2,self.evento)

		atividades = [ self.workshop1 , self.workshop2 , self.hackathon]

		for atividade in atividades:
			inscricao.adicionar_atividade(atividade)

		compra = Compra(inscricao)
		compra.aplicar_cupom(self.cupom_tutorial)

		self.assertEqual(105.00,compra.preco_total)

		compra.pagar(105.00)

		from datetime import datetime
		dia_pagamento = date.today()

		self.assertEqual(dia_pagamento,inscricao.data_pagamento)

	def test_nao_deve_aplicar_descontos_de_cupons_nao_ativos(self):
		
		inscricao = Inscricao(self.participante1,self.evento)

		atividades = [self.tutorial, self.workshop1 , self.workshop2 , self.hackathon]
		
		for atividade in atividades:
			inscricao.adicionar_atividade(atividade)

		compra = Compra(inscricao)

		with self.assertRaises(CupomExpirado):
			compra.aplicar_cupom(self.cupom_workshop)

	def test_deve_gerar_excecao_quando_aplicar_um_cupom_nao_cadastrado_no_evento(self):
		
		inscricao = Inscricao(self.participante2,self.evento)
		
		atividades = [self.tutorial, self.workshop1 , self.workshop2 , self.hackathon]
		
		for atividade in atividades:
			inscricao.adicionar_atividade(atividade)
		
		compra = Compra(inscricao)

		with self.assertRaises(CupomNaoEncontradoNoEvento):
			compra.aplicar_cupom(self.hackathon)

	def test_deve_gerar_excecao_ao_realizar_pagamento_inferior_ao_valor(self):

		inscricao = Inscricao(self.participante1,self.evento)

		inscricao.adicionar_atividade(self.tutorial)
		inscricao.adicionar_atividade(self.workshop1)

		compra = Compra(inscricao)

		with self.assertRaises(ValorPagoInferior):
			compra.pagar(40.00)
			
	def test_inscricao_paga_nao_deve_aceitar_novos_itens(self):

		inscricao = Inscricao(self.participante1,self.evento)

		inscricao.adicionar_atividade(self.tutorial)
		inscricao.adicionar_atividade(self.workshop1)

		compra = Compra(inscricao)
		compra.pagar(150.00)

		with self.assertRaises(InscricaoJaPagaNaoAceitaItens):
			inscricao.adicionar_atividade(self.hackathon)

	def test_compra_de_uma_inscricao_com_cupom_deve_retornar_valor_atualizado(self):
		
		inscricao = Inscricao(self.participante1,self.evento)

		atividades = [self.tutorial, self.workshop1 , self.workshop2 , self.hackathon]
		
		for atividade in atividades:
			inscricao.adicionar_atividade(atividade)

		compra = Compra(inscricao)
		compra.aplicar_cupom(self.cupom_tutorial) #Desconto de 50% nos tutoriais

		valor_compra = compra.preco_total

		self.assertEqual(112.5,valor_compra)

	def test_compra_deve_retornar_o_troco_correto_ao_participante(self):
		
		inscricao = Inscricao(self.participante1,self.evento)

		atividades = [self.tutorial, self.workshop1 , self.workshop2 , self.hackathon]
		
		for atividade in atividades:
			inscricao.adicionar_atividade(atividade)

		compra = Compra(inscricao)
		compra.aplicar_cupom(self.cupom_tutorial) #Cupom de 50% nos Tutoriais

		valor_compra = compra.preco_total

		compra.pagar(115.00)

		self.assertEqual(2.5,compra.troco)