"""Fixtures for push apple models""" import datetime import json import factory from factory import fuzzy from apollo_main_db.apollo.models import ApolloKeyValueStorage, ApolloMarket, BuzzUser, Market, PlaylistBlacklist, \ StarredContent, UserMarket from apollo_main_db.apple import models from apollo_main_db.push_notifications.models import PushMessageReduced, TopicEnum, UserDeviceToken, VendorEnum class ApolloKeyValueStorageFactory(factory.alchemy.SQLAlchemyModelFactory): id = factory.Faker("pyint") key = fuzzy.FuzzyText(length=30) value = fuzzy.FuzzyText(length=30) class Meta: model = ApolloKeyValueStorage sqlalchemy_session_persistence = "commit" class PushMessageReducedFactory(factory.alchemy.SQLAlchemyModelFactory): id = factory.Faker("uuid4") title = fuzzy.FuzzyText(length=50) message = fuzzy.FuzzyText(length=60) is_new = factory.Faker("boolean") date = factory.Faker("datetime") inner_id = factory.Faker("pyint") topic = fuzzy.FuzzyChoice(TopicEnum) track_id = fuzzy.FuzzyText(length=255) user_id = fuzzy.FuzzyText(length=37) created_at = factory.LazyFunction(datetime.datetime.now) vendor = VendorEnum.APPLE 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, "playlist_id": "playlist_id", "playlist_name": None, } ) ) class Meta: model = PushMessageReduced sqlalchemy_session_persistence = "commit" class ApplePlaylistStatistics(factory.alchemy.SQLAlchemyModelFactory): playlist_id = fuzzy.FuzzyText(length=22) market = fuzzy.FuzzyText(length=8) tracklist_updated_at = factory.Faker("datetime") class Meta: model = models.AppleMusicPlaylistStatistics sqlalchemy_session_persistence = "commit" class AppleWeeklyTopPlaylistFactory(factory.alchemy.SQLAlchemyModelFactory): date = factory.Faker("date") country_code = fuzzy.FuzzyText(length=2) rank = factory.Sequence(lambda n: n) playlist_id = fuzzy.FuzzyText(length=22) class Meta: model = models.AppleWeeklyTopPlaylist sqlalchemy_session_persistence = "commit" class ApplePlaylistTrackListHistoryReducedFactory(factory.alchemy.SQLAlchemyModelFactory): playlist_id = fuzzy.FuzzyText(length=22) storefront = fuzzy.FuzzyText(length=5) date = factory.Faker("date") position = factory.Faker("pyint") song_id = factory.Faker("pyint") class Meta: model = models.ApplePlaylistTracklistHistoryReduced sqlalchemy_session_persistence = "commit" class AppleSongFactory(factory.alchemy.SQLAlchemyModelFactory): id = factory.Faker("pyint") storefront = fuzzy.FuzzyText(length=2) name = fuzzy.FuzzyText(length=1024) isrc = fuzzy.FuzzyText(length=45) artist_name = fuzzy.FuzzyText(length=1024) artist_id = factory.Faker("pyint") class Meta: model = models.AppleMusicSong sqlalchemy_session_persistence = "commit" class ApplePlaylistFactory(factory.alchemy.SQLAlchemyModelFactory): id = factory.Faker("pyint") name = fuzzy.FuzzyText(length=10) curator_id = factory.Faker("pyint") artwork = fuzzy.FuzzyText(length=30) class Meta: model = models.ApplePlaylist sqlalchemy_session_persistence = "commit" class StarredContentFactory(factory.alchemy.SQLAlchemyModelFactory): user_id = fuzzy.FuzzyText(length=20) uri = fuzzy.FuzzyText(length=20) isrc = fuzzy.FuzzyText(length=20) class Meta: model = StarredContent sqlalchemy_session_persistence = "commit" class UserMarketFactory(factory.alchemy.SQLAlchemyModelFactory): user_id = fuzzy.FuzzyText(length=20) market_id = factory.Faker("pyint") class Meta: model = UserMarket sqlalchemy_session_persistence = "commit" class MarketFactory(factory.alchemy.SQLAlchemyModelFactory): market_id = factory.Faker("pyint") market_name = fuzzy.FuzzyText(length=20) class Meta: model = Market sqlalchemy_session_persistence = "commit" class UserDeviceFactory(factory.alchemy.SQLAlchemyModelFactory): user_id = fuzzy.FuzzyText(length=20) token = fuzzy.FuzzyText(length=20) is_active = factory.Faker("boolean") class Meta: model = UserDeviceToken sqlalchemy_session_persistence = "commit" class PlaylistBlacklistFactory(factory.alchemy.SQLAlchemyModelFactory): id = factory.Faker("pyint") vendor = fuzzy.FuzzyText(length=20) playlist_id = fuzzy.FuzzyText(length=22) class Meta: model = PlaylistBlacklist sqlalchemy_session_persistence = "commit" class BuzzUserFactory(factory.alchemy.SQLAlchemyModelFactory): id = factory.Faker("pyint") user_name = fuzzy.FuzzyText(length=30) music_service = factory.Faker("pyint") country_code = fuzzy.FuzzyText(length=10) category_id = factory.Faker("pyint") class Meta: model = BuzzUser sqlalchemy_session_persistence = "commit" class ApolloMarketFactory(factory.alchemy.SQLAlchemyModelFactory): id = factory.Faker("pyint") code = fuzzy.FuzzyText(length=2) name = fuzzy.FuzzyText(length=10) full_name = fuzzy.FuzzyText(length=20) class Meta: model = ApolloMarket sqlalchemy_session_persistence = "commit" factories = factory.alchemy.SQLAlchemyModelFactory.__subclasses__()