Beispiel #1
0
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)
Beispiel #2
0
 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)
Beispiel #4
0
 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
Beispiel #5
0
 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
Beispiel #6
0
 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
Beispiel #7
0
 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
Beispiel #9
0
 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
Beispiel #10
0
 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"))
Beispiel #11
0
 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
Beispiel #13
0
 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()
Beispiel #15
0
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)
Beispiel #16
0
 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
Beispiel #17
0
 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
Beispiel #18
0
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
Beispiel #19
0
 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
Beispiel #20
0
 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
Beispiel #21
0
 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
Beispiel #22
0
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)
Beispiel #23
0
 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
Beispiel #25
0
 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
Beispiel #26
0
 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
Beispiel #28
0
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())
Beispiel #30
0
 def _tuple_para_objeto(self, linha):
     (id_, nome) = linha
     curso = Curso(nome)
     curso.define_id(id_)
     return curso