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