Ejemplo n.º 1
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.º 2
0
 def test_os_cursos_podem_ter_nomes_iguais(self):
     curso_1 = Curso("adm")
     curso_2 = Curso("adm")
     actual_1 = curso_1.pega_nome()
     actual_2 = curso_2.pega_nome()
     assert actual_1 == actual_2
Ejemplo n.º 3
0
 def test_todo_curso_deve_ter_nome(self):
     expected = "administra"
     curso = Curso(nome=expected)
     actual = curso.pega_nome()
     assert actual == expected
Ejemplo n.º 4
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)