"""Fixtures for push spotify models""" import datetime import json import factory from factory import fuzzy from apollo_main_db.apollo.models import ApolloKeyValueStorage, ApolloMarket, Market, PlaylistBlacklist, \ StarredContent, UserMarket from apollo_main_db.push_notifications.models import PushMessageReduced, TopicEnum, UserDeviceToken, VendorEnum from apollo_main_db.spotify import models 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.SPOTIFY 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 SpotifyWeeklyTopPlaylistFactory(factory.alchemy.SQLAlchemyModelFactory): date = factory.Faker("date") country = fuzzy.FuzzyText(length=255) rank = factory.Sequence(lambda n: n) playlist_name = fuzzy.FuzzyText(length=1024) playlist_uri = fuzzy.FuzzyText(length=22) playlist_id = fuzzy.FuzzyText(length=22) class Meta: model = models.SpotifyWeeklyTopPlaylist sqlalchemy_session_persistence = "commit" class SpotifyPlaylistTrackListHistory2Factory(factory.alchemy.SQLAlchemyModelFactory): playlist_id = fuzzy.FuzzyText(length=22) date = factory.Faker("date") playlist_index = factory.Faker("pyint") track_id = fuzzy.FuzzyText(length=22) popularity = factory.Faker("pyint") class Meta: model = models.SpotifyPlaylistTrackListHistory2 sqlalchemy_session_persistence = "commit" class SpotifyTrackArtistFactory(factory.alchemy.SQLAlchemyModelFactory): class Meta: model = models.SpotifyTrackArtist sqlalchemy_session_persistence = "commit" class SpotifyArtistFactory(factory.alchemy.SQLAlchemyModelFactory): id = fuzzy.FuzzyText(length=255) name = fuzzy.FuzzyText(length=255) class Meta: model = models.SpotifyArtist sqlalchemy_session_persistence = "commit" class SpotifyTrack2Factory(factory.alchemy.SQLAlchemyModelFactory): id = fuzzy.FuzzyText(length=22) name = fuzzy.FuzzyText(length=60) isrc = fuzzy.FuzzyText(length=45) class Meta: model = models.SpotifyTrack2 sqlalchemy_session_persistence = "commit" class SpotifyPlaylistFactory(factory.alchemy.SQLAlchemyModelFactory): id = fuzzy.FuzzyText(length=22) name = fuzzy.FuzzyText(length=50) country_code = fuzzy.FuzzyText(length=8) buzz_category_id = factory.Faker('pyint') class Meta: model = models.SpotifyPlaylist sqlalchemy_session_persistence = "commit" class SpotifyPlaylistStatistics(factory.alchemy.SQLAlchemyModelFactory): playlist_id = fuzzy.FuzzyText(length=22) market = fuzzy.FuzzyText(length=8) tracklist_updated_at = factory.Faker('datetime') class Meta: model = models.SpotifyPlaylistStatistics 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 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__()