def test_user_can_add_favorite(factories): track = factories["music.Track"]() user = factories["users.User"]() f = TrackFavorite.add(track, user) assert f.track == track assert f.user == user
def test_can_get_choices_for_favorites_radio(factories): files = factories["music.Upload"].create_batch(10) tracks = [f.track for f in files] user = factories["users.User"]() for i in range(5): TrackFavorite.add(track=random.choice(tracks), user=user) radio = radios.FavoritesRadio() choices = radio.get_choices(user=user) assert choices.count() == user.track_favorites.all().count() for favorite in user.track_favorites.all(): assert favorite.track in choices for i in range(5): pick = radio.pick(user=user) assert pick in choices
def test_session_radio_excludes_previous_picks(factories): tracks = factories["music.Track"].create_batch(5) user = factories["users.User"]() previous_choices = [] for i in range(5): TrackFavorite.add(track=random.choice(tracks), user=user) radio = radios.SessionRadio() radio.radio_type = "favorites" radio.start_session(user) for i in range(5): pick = radio.pick(user=user, filter_playable=False) assert pick in tracks assert pick not in previous_choices previous_choices.append(pick) with pytest.raises(ValueError): # no more picks available radio.pick(user=user, filter_playable=False)
def star(self, request, *args, **kwargs): track = kwargs.pop("obj") TrackFavorite.add(user=request.user, track=track) return response.Response({"status": "ok"})