Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
 def star(self, request, *args, **kwargs):
     track = kwargs.pop("obj")
     TrackFavorite.add(user=request.user, track=track)
     return response.Response({"status": "ok"})