"""Fixtures for push notification models""" import datetime import json import factory from factory import fuzzy from apollo_main_db.push_notifications import models from main_db.base import session class UserDeviceFactory(factory.alchemy.SQLAlchemyModelFactory): """Fake model for UserDeviceToken""" user_id = fuzzy.FuzzyText(length=37) token = fuzzy.FuzzyText(length=255) is_active = factory.Faker("boolean") class Meta: model = models.UserDeviceToken sqlalchemy_session_persistence = "commit" sqlalchemy_session = session class PushMessageFactory(factory.alchemy.SQLAlchemyModelFactory): """Fake model for PushMessage""" topic = fuzzy.FuzzyChoice(models.TopicEnum) track_id = fuzzy.FuzzyText(length=255) user_id = fuzzy.FuzzyText(length=37) data = factory.LazyAttribute( lambda x: json.dumps( { "artist_name": "artist_name", "track_name": "track_name", "track_id": x.track_id, "topic": x.topic.name, "position": 1, "target": "", "change": 1, "isrc": "foo", "country_code": None, } ) ) created_at = factory.LazyFunction(datetime.datetime.now) vendor = models.VendorEnum.SPOTIFY class Meta: model = models.PushMessage sqlalchemy_session_persistence = "commit" sqlalchemy_session = session class SettingFactory(factory.alchemy.SQLAlchemyModelFactory): """Fake model for UserDeviceToken""" code = fuzzy.FuzzyText(length=100) class Meta: model = models.NotificationSetting sqlalchemy_session_persistence = "commit" sqlalchemy_session = session class UserSettingFactory(factory.alchemy.SQLAlchemyModelFactory): """Fake model for UserDeviceToken""" user_id = fuzzy.FuzzyText(length=37) setting_id = factory.Faker("integer") class Meta: model = models.UserNotificationSetting sqlalchemy_session_persistence = "commit" sqlalchemy_session = session