import factory from faker import Faker from app.models.user import User from app.models.invoice import Invoice from app.database import db # Configurar Faker para usar dados do Brasil faker = Faker("pt_BR") class UserFactory(factory.alchemy.SQLAlchemyModelFactory): class Meta: model = User sqlalchemy_session = db.session sqlalchemy_session_persistence = "commit" id = factory.Sequence(lambda n: n + (2 if User.query.filter_by(id=1).first() is not None else 1)) name = factory.LazyAttribute(lambda _: faker.name()) # Nome em pt_BR email = factory.LazyAttribute(lambda _: faker.email()) # Email realista em pt_BR password = factory.LazyAttribute(lambda _: faker.password()) # Email realista em pt_BR class InvoiceFactory(factory.alchemy.SQLAlchemyModelFactory): class Meta: model = Invoice sqlalchemy_session = db.session sqlalchemy_session_persistence = "commit" id = factory.Sequence(lambda n: n + 1) amount = factory.Faker("pydecimal", left_digits=4, right_digits=2, positive=True, locale="pt_BR") @factory.lazy_attribute def user_id(self): existing_user = User.query.first() if not existing_user: existing_user = UserFactory() # Cria um usuário se não existir return existing_user.id