def test_put(self, get_client_db):
        # PUT
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - OK
        _db.session.add(FrontendVariavel(nome='Width', valor='30em'))
        _db.session.commit()

        data = {'nome': 'Height', 'valor': '12em'}

        response = client.put('/frontend/1/', data=data, headers=headers)
        assert response.status_code == 204

        # CENÁRIO 2 - Tentativa de atualização de variável não registrada
        response = client.put('/frontend/100/', data=data, headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe variável com esse ID'

        # CENÁRIO 3 - Tentativa de registro para variável com nome já registrado
        response = client.put('/frontend/1/', data=data, headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Já existe variável com esse nome no banco de dados.'

        # CLEAN UP
        clear_data(_db)
    def test_delete(self, get_client_db):
        # DELETE
        client, _db, headers = get_client_db
        clear_data(_db)
        
        # CENÁRIO 1 - Tentativa com turma não registrada
        response = client.delete('/turmas/SCC5900/frequencias/1/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 2 - OK
        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        mock_img = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        mock_face = array(process_faces(mock_img))
        mock_face_embedding = from_array_to_bytes(mock_face)
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_face_embedding))
        _db.session.add(Participante(turma_codigo='SCC5900', matricula='101010'))
        mock_data_img_turma = from_img_dir_to_bytes('./tests/test_images/ivete-e-boy.jpg')
        _db.session.add(Frequencia(turma_codigo='SCC5900', imagem_turma=mock_data_img_turma))
        _db.session.commit()

        response = client.delete('/turmas/SCC5900/frequencias/1/', headers=headers)
        assert response.status_code == 204

        # CENÁRIO 3 - Tentativa com frequência não mais presente
        response = client.delete('/turmas/SCC5900/frequencias/1/', headers=headers)
        assert response.status_code == 400
        assert response.json['message'] == 'Não existe frequencia com esse ID no banco de dados.'

        # CLEAN UP
        clear_data(_db)
    def test_post(self, get_client_db):
        # POST
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - OK
        data = {
            "nome": "Width",
            "valor": "30em",
        }

        response = client.post('/frontend/', data=data, headers=headers)
        assert response.status_code == 201
        assert response.json == {'frontend_variavel.id': 1}

        # CENÁRIO 2 - Tentativa de registro com variável de mesmo nome
        data = {
            "nome": "Width",
            "valor": "50em",
        }

        response = client.post('/frontend/', data=data, headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Já existe variável com esse nome no banco de dados.'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 4
0
    def test_anotacao_erros(self, get_client_db):
        client, _db, headers = get_client_db
        clear_data(_db)

        client.post('/alunos/', data=aluno_1, headers=headers)
        client.post('/alunos/', data=aluno_2, headers=headers)
        client.post('/professores/', data=professor, headers=headers)
        client.post('/turmas/', data=turma, headers=headers)
        client.post('/turmas/SCC5900/participantes/', data={'matricula': aluno_1['matricula']}, headers=headers)
        client.post('/turmas/SCC5900/participantes/', data={'matricula': aluno_2['matricula']}, headers=headers)
        client.post('/turmas/SCC5900/frequencias/', data=frequencia_cenario_1, headers=headers)

        # CENÁRIO 1 - Corrigir a presença no cenário 1 para dizer que o Aluno 2 na verdade está presente e checar anotação do erro (falso negativo)
        client.put(f'/turmas/SCC5900/frequencias/1/presencas/', data={'matricula': 202020, 'status': True}, headers=headers)
        response = client.get(f'/turmas/SCC5900/frequencias/1/erros/', headers=headers)

        assert response.json[0]['falsos_positivos'] == 0
        assert response.json[0]['falsos_negativos'] == 1

        # CENÁRIO 2 - Corrigir a presença no cenário 1 para dizer que o Aluno 1 na verdade faltou e checar anotação do erro (falso positivo)
        client.put(f'/turmas/SCC5900/frequencias/1/presencas/', data={'matricula': 101010, 'status': False}, headers=headers)
        response = client.get(f'/turmas/SCC5900/frequencias/1/erros/', headers=headers)

        assert response.json[0]['falsos_positivos'] == 1
        assert response.json[0]['falsos_negativos'] == 1

        clear_data(_db)
        
    def test_get(self, get_client_db):
        # GET
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - Sem variáveis registradas
        response = client.get('/frontend/', headers=headers)

        assert response.status_code == 200
        assert response.json == []

        # CENÁRIO 2 - Tentativa de acesso a variável não registrada
        response = client.get('/frontend/1/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe variável com esse ID'

        # CENÁRIO 3 - OK
        _db.session.add(FrontendVariavel(nome='Width', valor='30em'))
        _db.session.commit()

        response = client.get('/frontend/', headers=headers)
        assert response.json[0]['nome'] == 'Width'

        response = client.get('/frontend/1/', headers=headers)
        assert response.json[0]['nome'] == 'Width'

        response = client.get('/frontend/?nome=Width', headers=headers)
        assert response.json[0]['nome'] == 'Width'

        response = client.get('/frontend/?valor=30em', headers=headers)
        assert response.json[0]['nome'] == 'Width'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 6
0
    def test_delete(self, get_client_db):
        # DELETE
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - OK
        mock_img = from_img_dir_to_bytes('./tests/test_images/door.jpg')
        _db.session.add(
            Aluno(nome='Ivete',
                  curso='Danca',
                  matricula='101010',
                  embedding=mock_img))
        _db.session.commit()

        response = client.delete('/alunos/101010/', headers=headers)
        assert response.status_code == 204

        # CENÁRIO 2 - Tentativa de deletar aluno que já não existe
        response = client.delete('/alunos/101010/', headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe aluno com essa matricula no banco de dados.'

        # CLEAN UP
        clear_data(_db)
    def test_put(self, get_client_db):
        # PUT
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - Tentativa de atualizar turma com código não presente no banco de dados
        data = {"nome": "Ciencias Sociais"}
        response = client.put('/turmas/SCC5900/', data=data, headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 2 - OK
        _db.session.add(
            Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(
            Turma(nome='Metodologia Cientifica',
                  codigo='SCC5900',
                  semestre="2020.2",
                  professor_id=1))
        _db.session.commit()

        response = client.put('/turmas/SCC5900/', data=data, headers=headers)
        assert response.status_code == 204

        # CENÁRIO 3 - Tentativa de atualizar turma com ID de professor não existente
        data = {"professor_id": 100}
        response = client.put('/turmas/SCC5900/', data=data, headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe professor com esse ID no banco de dados.'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 8
0
    def test_delete(self, get_client_db):
        # DELETE
        client, _db, headers = get_client_db
        clear_data(_db)

        mock_data = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')

        # CENÁRIO 1 - Tentativa com turma não registrada
        response = client.delete('/turmas/FAKECLASS/participantes/1/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 2 - OK
        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_data))
        _db.session.add(Participante(turma_codigo='SCC5900', matricula='101010'))
        _db.session.commit()
        response = client.delete('/turmas/SCC5900/participantes/1/', headers=headers)
        assert response.status_code == 204

        # CENÁRIO 3 - Tentativa de excluir aluno não mais participante
        response = client.delete('/turmas/SCC5900/participantes/1/', headers=headers)
        assert response.status_code == 400
        assert response.json['message'] == 'Não existe participante com esse ID no banco de dados dessa turma.'

        # CLEAN UP
        clear_data(_db)
    def test_delete(self, get_client_db):
        # DELETE
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - OK
        _db.session.add(
            Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(
            Turma(nome='Metodologia Cientifica',
                  codigo='SCC5900',
                  semestre="2020.2",
                  professor_id=1))
        _db.session.commit()

        response = client.delete('/turmas/SCC5900/', headers=headers)
        assert response.status_code == 204

        # CENÁRIO 2 - Tentativa de deletar turma que não existe mais no banco de dados
        response = client.delete('/turmas/SCC5900/', headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 10
0
    def test_post(self, get_client_db):
        # POST
        client, _db, _ = get_client_db  # Para login, não é necessário enviar header de autenticação
        clear_data(_db)

        # CENÁRIO 1 - OK
        user = User(username='******')
        user.hash_password('Senha')
        _db.session.add(user)
        _db.session.commit()

        data = {"username": "******", "password": "******"}

        response = client.post('/auth/login/', data=data)
        assert response.status_code == 200
        key, _ = list(response.json.items())[0]
        assert key == 'token'

        # CENÁRIO 2 - Tentativa de login com usuário não cadastrado
        data = {"username": "******", "password": "******"}

        response = client.post('/auth/login/', data=data)
        assert response.status_code == 401
        assert response.json['message'] == 'Username ou senha inválido'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 11
0
    def test_post(self, get_client_db):
        # POST
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - Tentativa de registro de aluno com imagem sem rosto

        file = os.path.join("./tests/test_images/door.jpg")
        img_file = (file, './tests/test_images/door.jpg')
        data = {
            "nome": "Ivete",
            "curso": "Dança",
            "matricula": "101010",
            "imagem_aluno": img_file
        }

        response = client.post('/alunos/',
                               data=data,
                               content_type='multipart/form-data',
                               headers=headers)
        assert response.status_code == 400  # Já que não existe face na imagem
        assert response.json[
            'message'] == 'Foram detectadas nenhuma ou mais de uma face na imagem enviada.'

        # CENÁRIO 2 - OK
        file = os.path.join("./tests/test_images/ivete.jpg")
        img_file = (file, './tests/test_images/ivete.jpg')

        data = {
            "nome": "Ivete",
            "curso": "Dança",
            "matricula": "101010",
            "imagem_aluno": img_file
        }

        response = client.post('/alunos/',
                               data=data,
                               content_type='multipart/form-data',
                               headers=headers)

        assert response.status_code == 201
        assert response.json == {'aluno.matricula': '101010'}

        # CENÁRIO 3 - Tentativa de registro novo para uma mesma matrícula
        response = client.post('/alunos/',
                               data=data,
                               content_type='multipart/form-data',
                               headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Já existe aluno com essa matrícula.'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 12
0
    def test_get(self, get_client_db):
        # GET
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1.1 - Tentativa com turma não registrada
        response = client.get('/turmas/FAKECLASS/participantes/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 1.b - Tentativa com turma não registrada
        response = client.get('/turmas/FAKECLASS/participantes/1/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 2 - Turma sem participantes
        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        _db.session.commit()

        response = client.get('/turmas/SCC5900/participantes/', headers=headers)

        assert response.status_code == 200
        assert response.json == []

        # CENÁRIO 3 - OK
        mock_data = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_data))
        _db.session.add(Participante(turma_codigo='SCC5900', matricula='101010'))
        _db.session.commit()

        response = client.get('/turmas/SCC5900/participantes/', headers=headers)
        assert response.json[0]['matricula'] == '101010'

        response = client.get('/turmas/SCC5900/participantes/1/', headers=headers)
        assert response.json[0]['matricula'] == '101010'

        response = client.get('/turmas/SCC5900/participantes/?matricula=101010', headers=headers)
        assert response.json[0]['matricula'] == '101010'

        # CENÁRIO 4 - Tentativa de obter participante com ID sem registro no banco de dados
        response = client.get('/turmas/SCC5900/participantes/100/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe participante com esse ID no banco de dados dessa turma.'

        # CLEAN UP
        clear_data(_db)
    def test_get(self, get_client_db):
        # GET
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - Não existem turmas registradas ainda
        response = client.get('/turmas/', headers=headers)

        assert response.status_code == 200
        assert response.json == []

        # CENÁRIO 2 - Não existe turma com o código indicado
        response = client.get('/turmas/1/', headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 3 - OK
        _db.session.add(
            Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(
            Turma(nome='Metodologia Cientifica',
                  codigo='SCC5900',
                  semestre="2020.2",
                  professor_id=1))
        _db.session.commit()

        response = client.get('/turmas/', headers=headers)
        assert response.json[0]['nome'] == 'Metodologia Cientifica'

        response = client.get('/turmas/?nome=Metodologia%20Cientifica',
                              headers=headers)
        assert response.json[0]['nome'] == 'Metodologia Cientifica'

        response = client.get('/turmas/?codigo=SCC5900', headers=headers)
        assert response.json[0]['nome'] == 'Metodologia Cientifica'

        response = client.get('/turmas/?semestre=2020.2', headers=headers)
        assert response.json[0]['nome'] == 'Metodologia Cientifica'

        response = client.get('/turmas/?professor_id=1', headers=headers)
        assert response.json[0]['nome'] == 'Metodologia Cientifica'

        response = client.get('/turmas/SCC5900/', headers=headers)
        assert response.json[0]['nome'] == 'Metodologia Cientifica'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 14
0
    def test_registro_basico_participantes(self, get_client_db):
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - Registro da estrutura básica para registro de presença (Aluno, Professor, Turma e registro como Participante)
        client.post('/alunos/', data=aluno_1, headers=headers)
        client.post('/alunos/', data=aluno_2, headers=headers)
        client.post('/professores/', data=professor, headers=headers)
        client.post('/turmas/', data=turma, headers=headers)
        client.post('/turmas/SCC5900/participantes/', data={'matricula': aluno_1['matricula']}, headers=headers)
        client.post('/turmas/SCC5900/participantes/', data={'matricula': aluno_2['matricula']}, headers=headers)

        response = client.get('/turmas/SCC5900/participantes/', headers=headers)

        assert response.json[0]['matricula'] == aluno_1['matricula']
        assert response.json[1]['matricula'] == aluno_2['matricula']

        clear_data(_db)
    def test_delete(self, get_client_db):
        # DELETE
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1
        _db.session.add(FrontendVariavel(nome='Width', valor='30em'))
        _db.session.commit()

        response = client.delete('/frontend/1/', headers=headers)
        assert response.status_code == 204

        response = client.delete('/frontend/1/', headers=headers)
        assert response.status_code == 400
        assert response.json['message'] == 'Não existe variável com esse ID'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 16
0
    def test_put(self, get_client_db):
        # PUT
        client, _db, headers = get_client_db
        clear_data(_db)
        mock_img = from_img_dir_to_bytes('./tests/test_images/door.jpg')
        _db.session.add(
            Aluno(nome='Ivete',
                  curso='Danca',
                  matricula='101010',
                  embedding=mock_img))
        _db.session.commit()

        # CENÁRIO 1 - Tentativa de atualização de aluno que não existe
        response = client.put('/alunos/202020/', headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe aluno com essa matricula no banco de dados.'

        # CENÁRIO 2 - Tentativa de atualização de registro de aluno com imagem sem rosto
        file = os.path.join("./tests/test_images/door.jpg")
        img_file = (file, './tests/test_images/door.jpg')
        data = {"imagem_aluno": img_file}

        response = client.put('/alunos/101010/', data=data, headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Foram detectadas nenhuma ou mais de uma face na imagem enviada.'

        # CENÁRIO 3 - OK
        file = os.path.join("./tests/test_images/claudia.jpg")
        img_file = (file, './tests/test_images/claudia.jpg')

        data = {
            "nome": "Claudia",
            "curso": "Audiovisual",
            "matricula": "303030",
            "imagem_aluno": img_file
        }

        response = client.put('/alunos/101010/', data=data, headers=headers)
        assert response.status_code == 204

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 17
0
    def test_get(self, get_client_db):
        # GET
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - Sem alunos registrados
        response = client.get('/alunos/', headers=headers)

        assert response.status_code == 200
        assert response.json == []

        # CENÁRIO 2 - Aluno não registrado
        response = client.get('/alunos/101010/', headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe aluno com essa matricula no banco de dados.'

        # CENÁRIO 3 - 1 Aluno registrado
        mock_data = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        _db.session.add(
            Aluno(nome='Ivete',
                  curso='Danca',
                  matricula='101010',
                  embedding=mock_data))
        _db.session.commit()

        response = client.get('/alunos/', headers=headers)
        assert response.json[0]['nome'] == 'Ivete'

        response = client.get('/alunos/101010/', headers=headers)
        assert response.json[0]['nome'] == 'Ivete'

        response = client.get('/alunos/?nome=Ivete', headers=headers)
        assert response.json[0]['nome'] == 'Ivete'

        response = client.get('/alunos/?matricula=101010', headers=headers)
        assert response.json[0]['nome'] == 'Ivete'

        response = client.get('/alunos/?curso=Danca', headers=headers)
        assert response.json[0]['nome'] == 'Ivete'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 18
0
    def test_post(self, get_client_db):
        # POST
        client, _db, headers = get_client_db
        clear_data(_db)
        
        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        _db.session.commit()

        # CENÁRIO 1 - Tentativa com turma não registrada
        response = client.post('/turmas/FAKECLASS/participantes/', data={'matricula': '1'}, headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'
        
        
        # CENÁRIO 2 - Aluno com matrícula não registrada no banco de dados
        data = {
            "matricula": "101010",
        }
        response = client.post('/turmas/SCC5900/participantes/', data=data, headers=headers)
        assert response.status_code == 400
        assert response.json['message'] == 'Não existe aluno com essa matrícula no banco de dados.'

        # CENÁRIO 3 - OK
        mock_data = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_data))
        _db.session.commit()        

        response = client.post('/turmas/SCC5900/participantes/', data=data, headers=headers)

        assert response.status_code == 201
        assert response.json == {'participante.id': 1}

        # CENÁRIO 4 - Aluno já registrado na disciplina
        response = client.post('/turmas/SCC5900/participantes/', data=data, headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Esse aluno já foi registrado nessa disciplina.'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 19
0
    def test_post(self, get_client_db):
        # POST
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - OK
        data = {"username": "******", "password": "******"}

        response = client.post('/auth/users/', data=data, headers=headers)
        assert response.status_code == 201
        assert response.json == {'username': '******'}

        # CENÁRIO 2 - Tentativa de adicionar uma instância com mesmo username
        response = client.post('/auth/users/', data=data, headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Já existe usuário com esse username.'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 20
0
    def test_get(self, get_client_db):
        # GET
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - Nenhum professor registrado
        response = client.get('/professores/', headers=headers)

        assert response.status_code == 200
        assert response.json == []

        # CENÁRIO 2 - Não existe professor com o ID
        response = client.get('/professores/1/', headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe professor com esse ID no banco de dados.'

        # CENÁRIO 3 - OK
        _db.session.add(
            Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.commit()

        response = client.get('/professores/', headers=headers)
        assert response.json[0]['nome'] == 'AAA'

        response = client.get('/professores/1/', headers=headers)
        assert response.json[0]['nome'] == 'AAA'

        response = client.get('/professores/?nome=AAA', headers=headers)
        assert response.json[0]['nome'] == 'AAA'

        response = client.get('/professores/?departamento=AAA',
                              headers=headers)
        assert response.json[0]['nome'] == 'AAA'

        response = client.get('/professores/?instituicao=AAA', headers=headers)
        assert response.json[0]['nome'] == 'AAA'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 21
0
    def test_delete(self, get_client_db):
        # DELETE
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - OK
        _db.session.add(
            Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.commit()

        response = client.delete('/professores/1/', headers=headers)
        assert response.status_code == 204

        # CENÁRIO 2 - Tentativa de deletar um ID que não está mais no banco de dados
        response = client.delete('/professores/1/', headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe professor com esse ID no banco de dados.'

        # CLEAN UP
        clear_data(_db)
    def test_get(self, get_client_db):
        # GET
        client, _db, headers = get_client_db
        clear_data(_db)

        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        mock_img = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        mock_face = array(process_faces(mock_img))
        mock_face_embedding = from_array_to_bytes(mock_face)
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_face_embedding))
        _db.session.add(Participante(turma_codigo='SCC5900', matricula='101010'))
        mock_data_img_turma = from_img_dir_to_bytes('./tests/test_images/ivete-e-boy.jpg')
        _db.session.add(Frequencia(turma_codigo='SCC5900', imagem_turma=mock_data_img_turma))
        _db.session.add(Presenca(frequencia_id=1, participante_id=1, status=True))
        _db.session.add(AnotacaoErros(frequencia_id=1, falsos_positivos=1, falsos_negativos=0))
        _db.session.commit()


        # CENÁRIO 1 - Tentativa com turma não registrada
        response = client.get('/turmas/FAKECLASS/frequencias/1/erros/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 2 - Tentativa com frequência não registrada
        response = client.get('/turmas/SCC5900/frequencias/100/erros/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe frequencia com esse ID no banco de dados.'

        # CENÁRIO 3 - OK
        response = client.get('/turmas/SCC5900/frequencias/1/erros/', headers=headers)

        assert response.json[0]['frequencia_id'] == 1
        assert response.json[0]['falsos_positivos'] == 1
        assert response.json[0]['falsos_negativos'] == 0

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 23
0
    def test_get(self, get_client_db):
        # GET
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - Nenhum usuário cadastrado
        response = client.get('/auth/users/', headers=headers)

        assert response.status_code == 200
        assert response.json == []

        # CENÁRIO 2 - OK
        user = User(username='******')
        user.hash_password('Senha')
        _db.session.add(user)
        _db.session.commit()

        response = client.get('/auth/users/', headers=headers)
        assert response.json[0]['username'] == 'Arlindo'

        # CLEAN UP
        clear_data(_db)
    def test_post(self, get_client_db):
        # POST
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - Tentativa com turma não registrada
        file = os.path.join("./tests/test_images/ivete-e-boy.jpg")
        mock_data_img_turma = (file, './tests/test_images/ivete-e-boy.jpg')
        data = {
            "imagem_turma": mock_data_img_turma
        }

        response = client.post('/turmas/SCC5900/frequencias/', data=data, headers=headers)
        assert response.status_code == 400 
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 2 - Tentativa com turma sem participantes
        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        _db.session.commit()

        response = client.post('/turmas/SCC5900/frequencias/', data=data, headers=headers)
        assert response.status_code == 400 
        assert response.json['message'] == 'Não existem participantes registrados na turma.'
        
        # CENÁRIO 3 - OK
        mock_img = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        mock_face = array(process_faces(mock_img))
        mock_face_embedding = from_array_to_bytes(mock_face)
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_face_embedding))
        _db.session.add(Participante(turma_codigo='SCC5900', matricula='101010'))
        _db.session.commit()        
        
        response = client.post('/turmas/SCC5900/frequencias/', data=data, headers=headers)
        assert response.status_code == 201
        assert response.json == {'frequencia.id': 1}

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 25
0
    def test_put(self, get_client_db):
        # PUT
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - OK
        _db.session.add(
            Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.commit()

        data = {"nome": "Leonardo"}

        response = client.put('/professores/1/', data=data, headers=headers)
        assert response.status_code == 204

        # CENÁRIO 2 - Tentativa de atualizar com ID não presente no banco de dados
        response = client.put('/professores/100/', data=data, headers=headers)
        assert response.json[
            'message'] == 'Não existe professor com esse ID no banco de dados.'

        # CLEAN UP
        clear_data(_db)
    def test_post(self, get_client_db):
        # POST
        client, _db, headers = get_client_db
        clear_data(_db)

        data = {
            "nome": "Metodologia Científica",
            "codigo": "SCC5900",
            "semestre": "2021.2",
            "professor_id": 1
        }

        # CENÁRIO 1 - Não existe professor com o ID indicado que irá assumir disciplina
        response = client.post('/turmas/', data=data, headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe professor com esse ID no banco de dados.'

        # CENÁRIO 3 - OK
        _db.session.add(
            Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.commit()

        response = client.post('/turmas/', data=data, headers=headers)

        assert response.status_code == 201
        assert response.json == {'turma.codigo': 'SCC5900'}

        # CENÁRIO 3 - Tentativa de criar instância de turma com mesmo código
        response = client.post('/turmas/', data=data, headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Já existe turma com esse código no banco de dados.'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 27
0
    def test_registro_frequencia_presenca(self, get_client_db):
        client, _db, headers = get_client_db
        clear_data(_db)

        client.post('/alunos/', data=aluno_1, headers=headers)
        client.post('/alunos/', data=aluno_2, headers=headers)
        client.post('/professores/', data=professor, headers=headers)
        client.post('/turmas/', data=turma, headers=headers)
        client.post('/turmas/SCC5900/participantes/', data={'matricula': aluno_1['matricula']}, headers=headers)
        client.post('/turmas/SCC5900/participantes/', data={'matricula': aluno_2['matricula']}, headers=headers)
        
        # CENÁRIO 1 - Aluno 1 está presente e o Aluno 2 não
        response = client.post('/turmas/SCC5900/frequencias/', data=frequencia_cenario_1, headers=headers)
        frequencia_id = response.json['frequencia.id'] 
        response = client.get(f'/turmas/SCC5900/frequencias/{frequencia_id}/presencas/', headers=headers)

        assert response.json[0]['status'] == True
        assert response.json[1]['status'] == False

        # CENÁRIO 2 - Aluno 1 e Aluno 2 estão presentes
        response = client.post('/turmas/SCC5900/frequencias/', data=frequencia_cenario_2, headers=headers)
        frequencia_id = response.json['frequencia.id'] 
        response = client.get(f'/turmas/SCC5900/frequencias/{frequencia_id}/presencas/', headers=headers)

        assert response.json[0]['status'] == True
        assert response.json[1]['status'] == True

        # CENÁRIO 3 - Aluno 1 e Aluno 2 não estão presentes
        response = client.post('/turmas/SCC5900/frequencias/', data=frequencia_cenario_3, headers=headers)
        frequencia_id = response.json['frequencia.id'] 
        response = client.get(f'/turmas/SCC5900/frequencias/{frequencia_id}/presencas/', headers=headers)

        assert response.json[0]['status'] == False
        assert response.json[1]['status'] == False

        clear_data(_db)
Ejemplo n.º 28
0
    def test_delete(self, get_client_db):
        # DELETE
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - OK
        user = User(username='******')
        user.hash_password('Senha')
        _db.session.add(user)
        _db.session.commit()

        data = {"username": "******"}

        response = client.delete('/auth/users/', data=data, headers=headers)
        assert response.status_code == 204

        # CENÁRIO 2 - Tentativa de deletar usuário não mais presente no banco de dados
        response = client.delete('/auth/users/', data=data, headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe usuário com esse username.'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 29
0
    def test_post(self, get_client_db):
        # POST
        client, _db, headers = get_client_db
        clear_data(_db)

        data = {
            "nome": "Carlos",
            "departamento": "Ciencia da Computacao",
            "instituicao": "UFS"
        }

        # CENÁRIO 1 - OK
        response = client.post('/professores/', data=data, headers=headers)
        assert response.status_code == 201
        assert response.json == {'professor.id': 1}

        # CENÁRIO 2 - Professor já registrado
        response = client.post('/professores/', data=data, headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Professor já registrado com essas informações (nome, departamento, instituição) no banco de dados.'

        # CLEAN UP
        clear_data(_db)
Ejemplo n.º 30
0
    def test_post(self, get_client_db):
        # POST
        client, _db, headers = get_client_db
        clear_data(_db)

        _db.session.add(
            Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(
            Turma(nome='Metodologia Cientifica',
                  codigo='SCC5900',
                  semestre="2020.2",
                  professor_id=1))
        mock_img = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        mock_face = array(process_faces(mock_img))
        mock_face_embedding = from_array_to_bytes(mock_face)
        _db.session.add(
            Aluno(nome='Ivete',
                  curso='Danca',
                  matricula='101010',
                  embedding=mock_face_embedding))
        _db.session.add(
            Participante(turma_codigo='SCC5900', matricula='101010'))
        mock_data_img_turma = from_img_dir_to_bytes(
            './tests/test_images/ivete-e-boy.jpg')
        _db.session.add(
            Frequencia(turma_codigo='SCC5900',
                       imagem_turma=mock_data_img_turma))
        _db.session.commit()

        # CENÁRIO 1 - Matrícula inválida
        data = {"matricula": 101011, "status": True}

        response = client.post('/turmas/SCC5900/frequencias/1/presencas/',
                               data=data,
                               headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe aluno com essa matricula participando da disciplina no banco de dados.'

        # CENÁRIO 2 - OK
        data = {"matricula": 101010, "status": True}

        response = client.post('/turmas/SCC5900/frequencias/1/presencas/',
                               data=data,
                               headers=headers)

        assert response.status_code == 201
        assert response.json == {'participante.id': 1}

        # CENÁRIO 3 - Aluno não registrado
        response = client.post('/turmas/SCC5900/frequencias/1/presencas/',
                               data=data,
                               headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Registro de presença desse aluno já está presente no banco de dados.'

        # CENÁRIO 4 - Não existe turma com o código indicado
        response = client.post('/turmas/FAKECLASS/frequencias/1/presencas/',
                               data=data,
                               headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 5 - Não existe frequencia com o ID indicado
        response = client.post('/turmas/SCC5900/frequencias/100/presencas/',
                               data=data,
                               headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe frequencia com esse ID no banco de dados.'

        # CLEAN UP
        clear_data(_db)