"""Fixtures for push spotify models""" import datetime import json import factory from factory import fuzzy from apollo_main_db.apollo.models import 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 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("date") 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.SpotifyPlaylistTrackListHistory2Reduced2 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__()