forked from Anteros-Code-Mentoria/poc-mvc-ocr
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
import pytest
|
|
from app import create_app
|
|
from app.database import db
|
|
from app.models.user import User
|
|
from werkzeug.security import generate_password_hash
|
|
|
|
@pytest.fixture
|
|
def app():
|
|
"""Cria uma instância do Flask para testes"""
|
|
app = create_app()
|
|
app.config.update({
|
|
"TESTING": True,
|
|
"SQLALCHEMY_DATABASE_URI": "sqlite:///:memory:", # Banco em memória para testes rápidos
|
|
"SQLALCHEMY_TRACK_MODIFICATIONS": False
|
|
})
|
|
|
|
with app.app_context():
|
|
db.create_all() # Cria as tabelas no banco de testes
|
|
|
|
# Cria o usuário admin fixo, garantindo que esteja disponível para o client
|
|
if not User.query.filter_by(email="admin@email.com").first():
|
|
admin_user = User(
|
|
name="admin",
|
|
email="admin@email.com",
|
|
password=generate_password_hash("senha123", method="pbkdf2:sha256")
|
|
)
|
|
db.session.add(admin_user)
|
|
db.session.commit()
|
|
|
|
yield app # Executa os testes
|
|
db.session.remove()
|
|
db.drop_all() # Limpa o banco após os testes
|
|
|
|
@pytest.fixture
|
|
def client(app):
|
|
"""Cliente de testes do Flask"""
|
|
return app.test_client()
|
|
|
|
@pytest.fixture
|
|
def db_session(app):
|
|
"""Sessão do banco de dados para os testes"""
|
|
with app.app_context():
|
|
yield db.session
|