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(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 _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_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 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 _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 pega_por_nome(self, nome): try: registro = super().pega_por_nome(nome) (id_, nome) = registro[0] obj = Materia(nome) obj.define_id(id_) return obj except Exception: raise
def pega_tudo(self) -> list(): registros = super().pega_tudo() lista = list() for linha in registros: (id_, nome) = linha obj = Materia(nome) obj.define_id(id_) lista.append(obj) return lista
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_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 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 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 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 test_cria_materia_por_cli(self, cria_banco_real): nome = materia_nome_1 expected = nome parametros = ["cria-materia", "--nome", nome] executa_comando(parametros) materia = Materia(nome) registro = Controller(materia, cria_banco_real).pega_registros()[0] actual = registro.pega_nome() 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 _cria_materia(argumentos): nome = "--nome" numero_argumentos = 4 if nome in argumentos and len(argumentos) == numero_argumentos: nome = _pega_valor(argumentos, nome) materia = Materia(nome) Controller(materia, bd).salva() print(f"Matéria de {materia.pega_nome()} criada.") else: raise ListaParametrosInvalida(LISTA_PARAMETROS_INVALIDA)
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 test_os_nomes_das_materias_nao_precisam_ser_diferentes(self): expected = "matematica" materia_1 = Materia(expected) materia_2 = Materia(expected) actual_1 = materia_1.pega_nome() actual_2 = materia_2.pega_nome() assert actual_1 == actual_2
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 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_materia_sem_nome_nao_pode_ser_salva_banco(self, cria_banco): with raises(Exception, match="Matéria especificada sem nome."): DaoMateria(Materia(None), cria_banco).salva()
def test_materia_pode_ser_salva_banco(self, cria_banco): expected = "Química" dao = DaoMateria(Materia(expected), cria_banco) dao.salva() actual = dao.pega_por_id(id_=1) assert actual.pega_nome() == expected
def setup_method(self, method): self.curso = Curso("Administra") self.curso.atualiza_materias(Materia("Política")) self.curso.atualiza_materias(Materia("Trabalho")) self.curso.atualiza_materias(Materia("Pessoas"))
def pega_por_id(self, id_): registro = super().pega_por_id(id_) (id_, nome) = registro[0] materia = Materia(nome) materia.define_id(id_) return materia
def _cria_materias(self): Controller(Materia(materia_nome_1), self._bd).salva() Controller(Materia(materia_nome_2), self._bd).salva() Controller(Materia(materia_nome_3), self._bd).salva()
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 test_cada_materia_deve_ter_um_nome(self): expected = "matematica" materia = Materia(expected) actual = materia.pega_nome() assert actual == expected
def test_materias_curso_devem_ter_identificadores_unicos(self): expected = "1" materia = (Materia("mat")) materia.define_id(expected) actual = materia.pega_id() assert actual == expected