Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
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_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())
Ejemplo n.º 4
0
 def _adiciona_catalogo_cursos(self):
     catalogo = CatalogoCurso()
     catalogo.adiciona_curso(self)
Ejemplo n.º 5
0
 def __init__(self):
     self._catalogo = CatalogoCurso()
     self._cursos = CatalogoCurso.pega_cursos()
     self._id = None
     super().__init__()
Ejemplo n.º 6
0
class TestCatalogo:

    curso = "marcenaria"
    materia_1 = "prego"
    materia_2 = "parafuso"
    materia_3 = "martelo"

    def setup_method(self, method):
        self.catalogo = CatalogoCurso()
        self.catalogo.limpa_catalogo()

    def teardown_method(self, method):
        self.catalogo.limpa_catalogo()

    def test_singleton_funciona(self):
        catalogo_1 = CatalogoCurso()
        catalogo_2 = CatalogoCurso()
        assert catalogo_1 == catalogo_2 

    def test_limpa_catalogo(self):
        self._cria_curso()
        self._cria_curso(curso="pedreiro")
        expected = list()
        self.catalogo.limpa_catalogo()
        actual = self.catalogo.pega_cursos()
        assert actual == expected

    def test_remove_curso_do_catalogo(self):
        curso_1 = self._cria_curso()
        curso_2 = self._cria_curso(curso="pedreiro")
        expected = [curso_1]
        self.catalogo.remove_curso(curso_2)
        actual = self.catalogo.pega_cursos()
        assert actual == expected

    def test_catalogo_vazio_retorna_lista_vazia(self):
        expected = list()
        actual = self.catalogo.pega_cursos()
        assert actual == expected

    def test_adiciona_dois_cursos_no_catalogo(self):
        curso_1 = self._cria_curso()
        curso_2 = self._cria_curso("pedreiro")
        expected = [curso_1, curso_2]
        actual = self.catalogo.pega_cursos()
        assert actual == expected

    def test_adiciona_curso_no_catalogo(self):
        curso_1 = self._cria_curso()
        expected = [curso_1]
        actual = self.catalogo.pega_cursos()
        assert actual == expected

    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
Ejemplo n.º 7
0
 def test_singleton_funciona(self):
     catalogo_1 = CatalogoCurso()
     catalogo_2 = CatalogoCurso()
     assert catalogo_1 == catalogo_2 
Ejemplo n.º 8
0
 def setup_method(self, method):
     self.catalogo = CatalogoCurso()
     self.catalogo.limpa_catalogo()
Ejemplo n.º 9
0
class TestCoordenadorGeral:
    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 teardown_method(self, method):
        self.catalogo.limpa_catalogo()
        self.curso_1 = None
        self.curso_2 = None
        self.curso_3 = None

    def test_define_id_retorna_coordenador_com_id_atualizado(self):
        expected = 1
        coordenador = CoordenadorGeral().define_id(expected)
        actual = coordenador.pega_id()
        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 test_coordenador_geral_lista_detalhe_2_cursos_2_alunos_com_notas(self):
        nome_1 = "joao"
        nome_2 = "maria"
        materias_1 = {"penal": 3}
        materias_2 = {"plantas": 3, "solos": 3}
        cr = 3
        expected = {
            "alunos": [{
                "nome": nome_1,
                "coeficiente rendimento": cr,
                "materias": materias_1,
                "curso": self.curso_1.pega_nome()
            }, {
                "nome": nome_2,
                "coeficiente rendimento": cr,
                "materias": materias_2,
                "curso": self.curso_2.pega_nome()
            }]
        }
        aluno_1 = Aluno(nome_1)
        aluno_2 = Aluno(nome_2)
        aluno_1.inscreve_curso(self.curso_1)
        aluno_2.inscreve_curso(self.curso_2)
        aluno_1.atualiza_materias_cursadas(materias_1)
        aluno_2.atualiza_materias_cursadas(materias_2)
        coordenador = CoordenadorGeral()
        actual = coordenador.listar_detalhe_alunos()
        assert actual == expected

    def test_coordenador_geral_lista_detalhes_quando_2_cursos_com_alunos(self):
        nome_1 = "joao"
        nome_2 = "maria"
        expected = {
            "alunos": [{
                "nome": nome_1,
                "coeficiente rendimento": 0,
                "materias": {},
                "curso": self.curso_1.pega_nome()
            }, {
                "nome": nome_2,
                "coeficiente rendimento": 0,
                "materias": {},
                "curso": self.curso_2.pega_nome()
            }]
        }
        aluno_1 = Aluno(nome_1)
        aluno_2 = Aluno(nome_2)
        aluno_1.inscreve_curso(self.curso_1)
        aluno_2.inscreve_curso(self.curso_2)
        coordenador = CoordenadorGeral()
        actual = coordenador.listar_detalhe_alunos()
        assert actual == expected

    def test_coordenador_geral_lista_detalhes_quando_dois_cursos(self):
        expected = {"alunos": []}
        coordenador = CoordenadorGeral()
        actual = coordenador.listar_detalhe_alunos()
        assert actual == expected

    def test_coordenador_geral_lista_detalhes_quando_dois_alunos(self):
        nome_1 = "joao"
        nome_2 = "maria"
        expected = {
            "alunos": [{
                "nome": nome_1,
                "coeficiente rendimento": 0,
                "materias": {},
                "curso": self.curso_1.pega_nome()
            }, {
                "nome": nome_2,
                "coeficiente rendimento": 0,
                "materias": {},
                "curso": self.curso_1.pega_nome()
            }]
        }
        aluno_1 = Aluno(nome_1)
        aluno_2 = Aluno(nome_2)
        aluno_1.inscreve_curso(self.curso_1)
        aluno_2.inscreve_curso(self.curso_1)
        coordenador = CoordenadorGeral()
        actual = coordenador.listar_detalhe_alunos()
        assert actual == expected

    def test_coordenador_geral_lista_detalhes_alunos_quando_um_aluno(self):
        nome = "maria"
        materias = {"civil": 6}
        cr = 6
        expected = {
            "alunos": [{
                "nome": nome,
                "materias": materias,
                "coeficiente rendimento": cr,
                "curso": self.curso_1.pega_nome()
            }]
        }
        aluno = Aluno("maria")
        aluno.inscreve_curso(self.curso_1)
        aluno.atualiza_materias_cursadas(materias)
        coordenador = CoordenadorGeral()
        actual = coordenador.listar_detalhe_alunos()
        assert actual == expected
Ejemplo n.º 10
0
class TestCoordenador:
    coordenador = None

    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 tear_down(self, method):
        self.catalogo.limpa_catalogo()
        self.curso = None
        self.coordenador = None

    def test_coordenador_nao_pode_coordenar_curso_cancelado(
            self, cria_curso_cancelado):
        curso = cria_curso_cancelado
        with pytest.raises(
                Exception,
                match="O coordenador não pode se associar a um curso cancelado"
        ):
            CoordenadorCurso(curso)

    def test_coordenador_pode_listar_info_todos_alunos_dos_cursos(
            self, cria_curso_com_materias):
        nome_1 = "diogo"
        nome_2 = "miguel"
        curso_1 = cria_curso_com_materias
        curso_1_nome = curso_1.pega_nome()
        curso_2 = self.curso
        curso_2_nome = curso_2.pega_nome()
        materias_1 = {materia_nome_1: 1.0}
        materias_2 = {"civil": 8.0, "penal": 8.0}
        cr_1 = 1.0
        cr_2 = 8.0
        coordenador = CoordenadorCurso(curso_1)
        coordenador.adiciona_cursos(curso_2)
        expected = {
            "alunos": [
                {
                    "nome": nome_1,
                    "materias": materias_1,
                    "coeficiente rendimento": cr_1,
                    "curso": curso_1_nome
                },
                {
                    "nome": nome_2,
                    "materias": materias_2,
                    "coeficiente rendimento": cr_2,
                    "curso": curso_2_nome
                },
            ]
        }
        self._cria_aluno_no_curso(nome_1, curso_1, materias_1)
        self._cria_aluno_no_curso(nome_2, curso_2, materias_2)
        actual = coordenador.listar_detalhe_alunos()
        assert actual == expected

    def test_coordenador_pode_coordenar_mais_de_um_curso(
            self, cria_curso_com_materias):
        curso_1 = cria_curso_com_materias
        curso_2 = cria_curso_com_materias
        curso_3 = cria_curso_com_materias
        expected = curso_3
        cursos = [curso_2, curso_3]
        cursos.append(curso_1)
        coordenador = CoordenadorCurso(curso_1)
        coordenador.adiciona_cursos(cursos)
        actual = coordenador.pega_lista_cursos()
        assert expected in actual

    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_curso_pode_listar_alunos_do_curso_com_dois_aluno(
            self):
        nome_1 = "diogo"
        nome_2 = "miguel"
        materias_1 = {"civil": 1}
        materias_2 = {"penal": 8, "civil": 8}
        cr_1 = 1
        cr_2 = 8
        expected = {
            "alunos": [
                {
                    "nome": nome_1,
                    "materias": materias_1,
                    "coeficiente rendimento": cr_1,
                    "curso": self.curso.pega_nome()
                },
                {
                    "nome": nome_2,
                    "materias": materias_2,
                    "coeficiente rendimento": cr_2,
                    "curso": self.curso.pega_nome()
                },
            ]
        }
        self._cria_aluno_no_curso(nome_1, self.curso, materias_1)
        self._cria_aluno_no_curso(nome_2, self.curso, materias_2)
        actual = self.coordenador.listar_detalhe_alunos()
        assert actual == expected

    def test_coordenador_curso_pode_listar_alunos_do_curso_com_um_aluno(self):
        nome = "marcos"
        materias = {"civil": 5}
        cr = 5
        expected = {
            "alunos": [{
                "nome": nome,
                "materias": materias,
                "coeficiente rendimento": cr,
                "curso": self.curso.pega_nome()
            }]
        }
        self._cria_aluno_no_curso(nome, self.curso, materias)
        actual = self.coordenador.listar_detalhe_alunos()
        assert actual == expected

    def test_coordenador_curso_pode_listar_alunos_curso_quando_zero_alunos(
            self):
        expected = {"alunos": []}
        actual = self.coordenador.listar_detalhe_alunos()
        assert actual == expected

    def _cria_aluno_no_curso(self, nome_aluno, curso, materias):
        aluno = Aluno(nome_aluno)
        aluno.inscreve_curso(curso)
        aluno.atualiza_materias_cursadas(materias)