def _cria_curso(argumentos): nome_parametro = "--nome" materias_parametro = "--materias" numero_argumentos = 8 if nome_parametro in argumentos and materias_parametro in argumentos \ and len(argumentos) == numero_argumentos: try: nome = _pega_valor(argumentos, nome_parametro) materia_1 = _pega_valor(argumentos, materias_parametro) materia_2 = _pega_valor(argumentos, materias_parametro, 2) materia_3 = _pega_valor(argumentos, materias_parametro, 3) curso = Curso(nome) controller_curso = Controller(curso, bd) controller_curso.salva() registro = controller_curso.pega_registro_por_nome(nome) curso_id = registro.pega_id() controller = Controller(Materia(None), bd) for materia in [materia_1, materia_2, materia_3]: registro = controller.pega_registro_por_nome(materia) materia_id = registro.pega_id() curso.atualiza_materias(Materia(materia)) Controller(AssociaCursoMateria(curso_id, materia_id), bd).salva() print(f"Curso de {curso.pega_nome()} criado.") except Exception: raise else: raise ListaParametrosInvalida(LISTA_PARAMETROS_INVALIDA)
def _tuple_para_objeto(self, linha): (id_, aluno_id, curso_id) = linha aluno = Aluno() aluno.define_id(aluno_id) curso = Curso() curso.define_id(curso_id) return aluno, curso
def setup_method(self, method): self.catalogo = CatalogoCurso() self.catalogo.limpa_catalogo() self.curso = Curso("direito") self.curso.atualiza_materias(Materia("civil")) self.curso.atualiza_materias(Materia("penal")) self.curso.atualiza_materias(Materia("filosofia")) self.coordenador = CoordenadorCurso(self.curso)
def test_curso_criado_banco_dados(self, cria_banco): curso_id = 1 expected = Curso(curso_nome_1).pega_nome() controller = Controller(Curso(curso_nome_1), cria_banco) controller.salva() curso = controller.pega_registro_por_id(curso_id) actual = curso.pega_nome() assert actual == expected
def pega_tudo(self) -> list(): registros = super().pega_tudo() lista = list() for linha in registros: (id_, nome) = linha curso = Curso(nome) curso.define_id(id_) lista.append(curso) return lista
def pega_por_nome(self, nome): try: registro = super().pega_por_nome(nome) (id_, nome) = registro[0] obj = Curso(nome) obj.define_id(id_) return obj except Exception: raise
def test_numero_cursos_deve_ser_tres(self): expected = 3 self.gerenciador_curso = GerenciadorCurso() self.curso = Curso("vet") self.gerenciador_curso.atualiza_cursos(self.curso) self.gerenciador_curso.atualiza_cursos(self.curso) self.gerenciador_curso.atualiza_cursos(self.curso) # deve ser ignorado self.gerenciador_curso.atualiza_cursos(self.curso) actual = len(self.gerenciador_curso.pega_lista_cursos()) assert actual == expected
def test_curso_criado_banco_dados(self): self._cria_materias() expected = Curso(curso_nome_1).pega_nome() parametros = [ self._cria_curso, "--nome", curso_nome_1, "--materias", materia_nome_1, materia_nome_2, materia_nome_3 ] executa_comando(parametros) curso = Controller(Curso(curso_nome_1), self._bd).pega_registros()[self.first] actual = curso.pega_nome() assert actual == expected
def test_cursos_podem_ter_nomes_iguais_se_unidades_diferentes(self): unidade = Unidade(unidade_nome_1) curso_1 = Curso(curso_nome_1) curso_2 = Curso(curso_nome_2) expected = unidade_nome_1 curso_1.define_unidade(unidade) curso_2.define_unidade(unidade) actual = curso_1.pega_unidade() assert actual == expected
def test_curso_deve_ter_todas_materias_com_nomes_diferentes(self): curso = Curso("mat") curso.atualiza_materias(Materia("alg")) curso.atualiza_materias(Materia("calc")) with pytest.raises( Exception, match="O curso não pode ter duas matérias com mesmo nome."): curso.atualiza_materias(Materia("alg"))
def test_cursos_devem_ter_nomes_diferentes_se_mesma_unidade(self): unidade = Unidade(unidade_nome_1) curso_1 = Curso(curso_nome_1) curso_2 = Curso(curso_nome_1) expected = "Curso já existente na unidade {}".format(unidade_nome_1) curso_1.define_unidade(unidade) with pytest.raises(Exception, match=expected): curso_2.define_unidade(unidade)
def _setup_objetos(self, cria_banco): controller_aluno = Controller(Aluno(aluno_nome_1), cria_banco) controller_aluno.salva() aluno = controller_aluno.pega_registro_por_id(id_=1) controller_curso = Controller(Curso(curso_nome_1), cria_banco) controller_curso.salva() curso = controller_curso.pega_registro_por_id(id_=1) Controller(InscricaoAlunoCurso(aluno_id=1, curso_id=1), cria_banco).salva() controller_materia = Controller(Materia(materia_nome_1), cria_banco) controller_materia.salva() materia_1 = controller_materia.pega_registro_por_id(id_=1) controller_materia = Controller(Materia(materia_nome_1), cria_banco) controller_materia.salva() materia_2 = controller_materia.pega_registro_por_id(id_=2) controller_materia = Controller(Materia(materia_nome_1), cria_banco) controller_materia.salva() materia_3 = controller_materia.pega_registro_por_id(id_=3) Controller(AssociaCursoMateria(curso_id=1, materia_id=1), cria_banco).salva() Controller(AssociaCursoMateria(curso_id=1, materia_id=2), cria_banco).salva() Controller(AssociaCursoMateria(curso_id=1, materia_id=3), cria_banco).salva() controller_coordenador_geral = Controller(CoordenadorGeral(), cria_banco) controller_coordenador_geral.salva() coordenador_geral = controller_coordenador_geral \ .pega_registro_por_id(id_=1) curso.atualiza_materias(materia_1) curso.atualiza_materias(materia_2) curso.atualiza_materias(materia_3) aluno.inscreve_curso(curso) return coordenador_geral
def test_aluno_nao_pode_increver_curso_sem_materias(self): curso = Curso(curso_nome_1) aluno = Aluno(aluno_nome_1) with raises( Exception, match="Número mínimo que matérias é três. Adicione mais 3"): aluno.inscreve_curso(curso)
def setup(self, cria_banco): self.curso_id = 1 self.materia_id = 1 self.bd = cria_banco materia = "Química" curso = "Adm" DaoMateria(Materia(materia), self.bd).salva() DaoCurso(Curso(curso), self.bd).salva()
def cria_massa_dados(cria_banco_real): bd = cria_banco_real bd.deleta_tabela(cursos) bd.deleta_tabela(alunos) aluno_id = Controller(Aluno(aluno_nome_1), bd).salva() curso_id = Controller(Curso(curso_nome_1), bd).salva() yield aluno_id, curso_id bd.deleta_tabela(cursos) bd.deleta_tabela(alunos)
def test_aluno_inscrito_curso_salvo_banco_dados(self, cria_banco_real): Controller(Aluno(aluno_nome_1), cria_banco_real).salva() Controller(Curso(curso_nome_1), cria_banco_real).salva() expected = [tuple((1, self.aluno_id, self.curso_id))] parametros = [ "inscreve-aluno-curso", "--aluno-id", self.aluno_id, "--curso-id", self.curso_id ] executa_comando(parametros) inscricao = InscricaoAlunoCurso(self.aluno_id, self.curso_id) actual = Controller(inscricao, cria_banco_real).pega_registros() assert actual == expected
def test_curso_associado_materia_criado_banco_dados(self, cria_banco): associacao_id = 1 curso_id = 1 materia_id = 1 expected = [tuple((associacao_id, curso_id, materia_id))] Controller(Curso(curso_nome_1), cria_banco).salva() Controller(Materia(materia_nome_1), cria_banco).salva() controller = Controller(AssociaCursoMateria(curso_id, materia_id), cria_banco) controller.salva() actual = controller.pega_registro_por_id(associacao_id) assert actual == expected
def cria_curso_com_materias(): curso = Curso(curso_nome_1) curso.atualiza_materias(Materia(materia_nome_1)) curso.atualiza_materias(Materia(materia_nome_2)) curso.atualiza_materias(Materia(materia_nome_3)) yield curso curso = None
def _cria_curso(self, curso=curso, materia_1=materia_1, materia_2=materia_2, materia_3=materia_3): curso_1 = Curso(curso) curso_1.atualiza_materias(Materia(materia_1)) curso_1.atualiza_materias(Materia(materia_2)) curso_1.atualiza_materias(Materia(materia_3)) return curso_1
def test_situaca_aluno_muda_para__em_curso__apos_inscricao( self, cria_banco_real): Controller(Aluno(aluno_nome_1), cria_banco_real).salva() Controller(Curso(curso_nome_1), cria_banco_real).salva() expected = "em curso" parametros = [ "inscreve-aluno-curso", "--aluno-id", self.aluno_id, "--curso-id", self.curso_id ] executa_comando(parametros) InscricaoAlunoCurso(self.aluno_id, self.curso_id) aluno = Controller(Aluno().define_id(self.aluno_id), cria_banco_real).pega_registro_por_id(self.aluno_id) actual = aluno.pega_situacao() assert actual == expected
def test_cada_curso_deve_ter_tres_materias(self): expected = 3 gerenciador_curso = GerenciadorCurso() curso = Curso("med") gerenciador_curso.atualiza_cursos(curso) gerenciador_curso.atualiza_cursos(curso) gerenciador_curso.atualiza_cursos(curso) cursos = gerenciador_curso.pega_lista_cursos() cursos[0].atualiza_materias(Materia("mat")) cursos[0].atualiza_materias(Materia("adm")) cursos[0].atualiza_materias(Materia("med")) # deve ser ignorado cursos[0].atualiza_materias(Materia("vet")) actual = len(cursos[0].pega_lista_materias()) assert actual == expected
def cria_massa_dados_em_memoria(cria_banco): Controller(Aluno(aluno_nome_1), cria_banco).salva() Controller(Curso(curso_nome_1), cria_banco).salva() Controller(Materia(materia_nome_1), cria_banco).salva() Controller(Materia(materia_nome_2), cria_banco).salva() Controller(Materia(materia_nome_3), cria_banco).salva() Controller(AssociaCursoMateria(curso_id=1, materia_id=1), cria_banco).salva() Controller(AssociaCursoMateria(curso_id=2, materia_id=1), cria_banco).salva() Controller(AssociaCursoMateria(curso_id=3, materia_id=1), cria_banco).salva() Controller(InscricaoAlunoCurso(aluno_id=1, curso_id=1), cria_banco) yield cria_banco.deleta_tabela(cursos) cria_banco.deleta_tabela(alunos)
def test_curso_com_quantidade_materia_diferente_tres_retorna_uma_excecao( self): gerenciador_curso = GerenciadorCurso() curso = Curso("jornalismo") gerenciador_curso.atualiza_cursos(curso) gerenciador_curso.atualiza_cursos(curso) gerenciador_curso.atualiza_cursos(curso) cursos = gerenciador_curso.pega_lista_cursos() materia_1 = Materia("mat") materia_2 = Materia("bio") cursos[0].atualiza_materias(materia_1) cursos[0].atualiza_materias(materia_2) with pytest.raises( Exception, match="Número mínimo que matérias é três. Adicione mais 1."): cursos[0].pega_lista_materias()
def test_coordenador_curso_2_nao_pode_listar_alunos_curso_1(self): expected = {"alunos": []} aluno = Aluno("maria") curso = Curso("fisica") curso.atualiza_materias(Materia("optica")) curso.atualiza_materias(Materia("mecanica")) curso.atualiza_materias(Materia("eletrica")) coordenador_2 = CoordenadorCurso(curso) aluno.inscreve_curso(self.curso) actual = coordenador_2.listar_detalhe_alunos() assert actual == expected
def test_coordenador_geral_lista_detalhes_novo_curso(self): nome = "mario" curso = "patologia" aluno = Aluno(nome) materias = {"virus": 6} expected = { "alunos": [{ "nome": nome, "coeficiente rendimento": 6, "materias": materias, "curso": curso }] } coordenador = CoordenadorGeral() curso_novo = Curso(curso) curso_novo.atualiza_materias(Materia("bacterias")) curso_novo.atualiza_materias(Materia("virus")) curso_novo.atualiza_materias(Materia("vermes")) aluno.inscreve_curso(curso_novo) aluno.atualiza_materias_cursadas(materias) actual = coordenador.listar_detalhe_alunos() assert actual == expected
def setup_method(self, cria_banco): self.catalogo = CatalogoCurso() self.catalogo.limpa_catalogo() self.curso_1 = Curso("direito") self.curso_1.atualiza_materias(Materia("civil")) self.curso_1.atualiza_materias(Materia("penal")) self.curso_1.atualiza_materias(Materia("filosofia")) self.curso_2 = Curso("agricola") self.curso_2.atualiza_materias(Materia("solos")) self.curso_2.atualiza_materias(Materia("plantas")) self.curso_2.atualiza_materias(Materia("animais")) self.curso_3 = Curso("engenharia") self.curso_3.atualiza_materias(Materia("estrutura")) self.curso_3.atualiza_materias(Materia("mecanica")) self.curso_3.atualiza_materias(Materia("concreto"))
def test_inscricao_aluno_curso_pode_ser_criado_banco_dados( self, cria_banco): id_ = 1 aluno = Aluno(aluno_nome_1).define_id(id_) DaoAluno(aluno, cria_banco).salva() curso = Curso(curso_nome_1).define_id(id_) DaoCurso(curso, cria_banco).salva() materias = [materia_nome_1, materia_nome_2, materia_nome_3] for materia in materias: materia_obj = Materia(materia) DaoMateria(materia_obj, cria_banco).salva() associa_curso_materia = AssociaCursoMateria(curso, materia_obj) DaoAssociaCursoMateria(associa_curso_materia, cria_banco).salva() expected = [tuple((1, self.aluno_id, self.curso_id))] dao = DaoInscricao(InscricaoAlunoCurso(aluno, curso), cria_banco) dao.salva() actual = dao.pega_tudo() assert actual == expected
def cria_curso_materias_real(cria_banco_real): bd = cria_banco_real bd.deleta_tabela(cursos) bd.deleta_tabela(alunos) bd.deleta_tabela(materias) aluno = Aluno(aluno_nome_1) aluno = Controller(aluno, bd).salva() curso = Curso(curso_nome_1) curso = Controller(curso, bd).salva() Controller(InscricaoAlunoCurso(aluno, curso), bd).salva() lista_materias = [materia_nome_1, materia_nome_2, materia_nome_3] lista_materia_obj = [] for materia in lista_materias: materia_obj = Materia(materia) materia_obj = Controller(materia_obj, bd).salva() lista_materia_obj.append(materia_obj) Controller(AssociaCursoMateria(curso, materia), bd).salva() yield aluno, curso, lista_materia_obj
def test_faculdade_com_dois_alunos_aprovados_e_um_reprovado_no_curso(self): ''' Faculdade de exatas. Tem 3 alunos e 5 cursos. Dois alunos fazem matérias iguais e um não faz nenhuma matéria com os demais. ''' CatalogoCurso.limpa_catalogo() pedro = Aluno("Pedro") jose = Aluno("Jose") tiago = Aluno("Tiago") coordenador_geral = CoordenadorGeral() fisica = Curso("Fisica") fisica.atualiza_materias(Materia("Ótica")) fisica.atualiza_materias(Materia("Mecânica")) fisica.atualiza_materias(Materia("Elátrica")) coordenador_fisica = CoordenadorGeral(fisica) matematica = Curso("Matematica") matematica.atualiza_materias(Materia("Geometria")) matematica.atualiza_materias(Materia("Cálculo")) matematica.atualiza_materias(Materia("Algebra")) coordenador_matematica = CoordenadorGeral(matematica) informatica = Curso("Informatica") informatica.atualiza_materias(Materia("Programação")) informatica.atualiza_materias(Materia("Dados")) informatica.atualiza_materias(Materia("Hardware")) coordenador_informatica = CoordenadorGeral(informatica) engenharia_civil = Curso("Engenharia Civil") engenharia_civil.atualiza_materias(Materia("Estrutura")) engenharia_civil.atualiza_materias(Materia("Concreto armado")) engenharia_civil.atualiza_materias(Materia("Hidráulica")) coordenador_engenharia_civil = CoordenadorGeral(engenharia_civil) eletronica = Curso("Eletrônica") eletronica.atualiza_materias(Materia("Robótica")) eletronica.atualiza_materias(Materia("Chips")) eletronica.atualiza_materias(Materia("Circuitos")) coordenador_eletronica = CoordenadorGeral(eletronica) pedro.inscreve_curso(eletronica) jose.inscreve_curso(eletronica) tiago.inscreve_curso(engenharia_civil) print("\nPrimeiro semestre") pedro.atualiza_materias_cursadas({"Robótica": 10}) jose.atualiza_materias_cursadas({"Robótica": 6}) tiago.atualiza_materias_cursadas({"Concreto armado": 8}) print("\nRelatório geral") print(coordenador_geral.listar_detalhe_alunos()) print("\nRelatório dos cursos") print(coordenador_eletronica.listar_detalhe_alunos()) print(coordenador_engenharia_civil.listar_detalhe_alunos()) print(coordenador_fisica.listar_detalhe_alunos()) print(coordenador_informatica.listar_detalhe_alunos()) print(coordenador_matematica.listar_detalhe_alunos()) print("\nSegundo semestre") pedro.atualiza_materias_cursadas({"Chips": 9}) jose.atualiza_materias_cursadas({"Robótica": 9}) tiago.atualiza_materias_cursadas({"Estrutura": 0}) print("\nRelatório geral") print(coordenador_geral.listar_detalhe_alunos()) print("\nRelatório dos cursos") print(coordenador_eletronica.listar_detalhe_alunos()) print(coordenador_engenharia_civil.listar_detalhe_alunos()) print(coordenador_fisica.listar_detalhe_alunos()) print(coordenador_informatica.listar_detalhe_alunos()) print(coordenador_matematica.listar_detalhe_alunos()) print("\nTerceiro semestre") pedro.atualiza_materias_cursadas({"Circuitos": 7}) jose.atualiza_materias_cursadas({"Chips": 9}) tiago.atualiza_materias_cursadas({"Estrutura": 10}) print("\nRelatório geral") print(coordenador_geral.listar_detalhe_alunos()) print("\nRelatório dos cursos") print(coordenador_eletronica.listar_detalhe_alunos()) print(coordenador_engenharia_civil.listar_detalhe_alunos()) print(coordenador_fisica.listar_detalhe_alunos()) print(coordenador_informatica.listar_detalhe_alunos()) print(coordenador_matematica.listar_detalhe_alunos()) pedro.calcula_situacao() jose.calcula_situacao() tiago.calcula_situacao() print(pedro.pega_situacao()) print(jose.pega_situacao()) print(tiago.pega_situacao()) print("\nQuarto semestre") jose.atualiza_materias_cursadas({"Circuitos": 9.7}) tiago.atualiza_materias_cursadas({"Hidráulica": 3}) print("\nRelatório geral") print(coordenador_geral.listar_detalhe_alunos()) print("\nRelatório dos cursos") print(coordenador_eletronica.listar_detalhe_alunos()) print(coordenador_engenharia_civil.listar_detalhe_alunos()) print(coordenador_fisica.listar_detalhe_alunos()) print(coordenador_informatica.listar_detalhe_alunos()) print(coordenador_matematica.listar_detalhe_alunos()) pedro.calcula_situacao() jose.calcula_situacao() tiago.calcula_situacao() print(pedro.pega_situacao()) print(jose.pega_situacao()) print(tiago.pega_situacao())
def _tuple_para_objeto(self, linha): (id_, nome) = linha curso = Curso(nome) curso.define_id(id_) return curso