import factory from factory import fuzzy from datetime import datetime from server.db.models.core import Account, Application, ApplicationSettingsHistory from server.db.models.users import Device, Favorites, Settings, SettingsSchema from server.db.models.messages import Event, FeedMessage, Message, PushMessage from server.constants.core import EntityType from server.constants.messages import PushMessagePriority, PushMessageStatus class BaseFactory(factory.Factory): created_at = factory.LazyFunction(datetime.now) updated_at = factory.LazyFunction(datetime.now) class ApplicationFactory(BaseFactory): slug = fuzzy.FuzzyText(length=10) name = fuzzy.FuzzyText(length=30) settings = factory.Dict({"type_1": {"test_key": "test_value"}}) types = factory.List(["type_1"]) is_active = True class Meta: model = Application class AccountFactory(BaseFactory): app_slug = fuzzy.FuzzyText(length=10) user_id = fuzzy.FuzzyText(length=10) is_active = True class Meta: model = Account class SettingsFactory(BaseFactory): account_id = fuzzy.FuzzyInteger(1, 99999) type = fuzzy.FuzzyText(length=30) version = fuzzy.FuzzyInteger(1, 99999) data = factory.Dict({"test_key": "test_value"}) class Meta: model = Settings class SettingsSchemaFactory(BaseFactory): app_slug = fuzzy.FuzzyText(length=30) type = fuzzy.FuzzyText(length=30) version = fuzzy.FuzzyInteger(1, 99999) data = factory.Dict({"test_key": "test_value"}) class Meta: model = SettingsSchema class FavoritesFactory(BaseFactory): account_id = fuzzy.FuzzyInteger(1, 99999) entity_id = fuzzy.FuzzyText(length=50) entity_type = fuzzy.FuzzyChoice(EntityType) data = {fuzzy.FuzzyText(length=20): fuzzy.FuzzyText(length=20)} class Meta: model = Favorites class BaseMessage(BaseFactory): id = factory.Faker("pyint") app_slug = fuzzy.FuzzyText(length=30) public = factory.Faker("boolean") ttl = fuzzy.FuzzyInteger(1, 99999) message_id = fuzzy.FuzzyInteger(1, 99999) event_id = fuzzy.FuzzyInteger(1, 99999) account_id = fuzzy.FuzzyInteger(1, 99999) data = {"content": "content"} meta = {"domain": "domain", "dsp": "dsp", "country_code": "country_code", "type": "type"} external_id = fuzzy.FuzzyText(length=40) class FeedMessageFactory(BaseMessage): status = factory.Faker("boolean") class Meta: model = FeedMessage class MessageFactory(BaseMessage): class Meta: model = Message class PushMessageFactory(BaseMessage): device_id = fuzzy.FuzzyInteger(1, 99999) receipt = fuzzy.FuzzyText(length=100) status = fuzzy.FuzzyChoice(PushMessageStatus) to = fuzzy.FuzzyText(length=100) title = fuzzy.FuzzyText(length=100) body = fuzzy.FuzzyText(length=100) sound = fuzzy.FuzzyText(length=40) ttl = fuzzy.FuzzyInteger(1, 99999) expiration = fuzzy.FuzzyFloat(0, 9999) priority = fuzzy.FuzzyChoice(PushMessagePriority) badge = fuzzy.FuzzyInteger(1, 99999) category = fuzzy.FuzzyText(length=100) channel_id = fuzzy.FuzzyText(length=100) display_in_foreground = factory.Faker("boolean") class Meta: model = PushMessage class DeviceFactory(BaseFactory): id = factory.Faker("pyint") account_id = fuzzy.FuzzyInteger(1, 99999) inner_id = fuzzy.FuzzyText(length=50) os = fuzzy.FuzzyText(length=20) token = fuzzy.FuzzyText(length=20) status = fuzzy.FuzzyChoice((True, False)) app_version = fuzzy.FuzzyText() class Meta: model = Device class EventFactory(BaseFactory): app_slug = fuzzy.FuzzyText(length=30) id = factory.Faker("pyint") public = False event_id = fuzzy.FuzzyInteger(1, 99999) ttl = fuzzy.FuzzyInteger(1, 99999) code = fuzzy.FuzzyText(length=50) meta = {"domain": "domain", "dsp": "dsp"} data = {"content": "content"} external_id = fuzzy.FuzzyText(length=50) class Meta: model = Event class ApplicationSettingsHistoryFactory(BaseFactory): id = factory.Faker("pyint") slug = fuzzy.FuzzyText(length=10) version = fuzzy.FuzzyInteger(1, 99999) settings = factory.Dict({"type_1": {"test_key": "test_value"}}) types = factory.List(["type_1"]) class Meta: model = ApplicationSettingsHistory