187 lines
5.9 KiB
Python
187 lines
5.9 KiB
Python
from PyQt5.QtCore import Qt
|
|
|
|
from app.playlists import Notes, PlaylistTab, Tracks
|
|
from app.models import Playlists
|
|
# from musicmuster import Window
|
|
from musicmuster import Window
|
|
|
|
|
|
def test_init(qtbot, session):
|
|
"""Just check we can create a playlist_tab"""
|
|
|
|
playlist = Playlists(session, "my playlist")
|
|
playlist_tab = PlaylistTab(None, session, playlist)
|
|
assert playlist_tab
|
|
|
|
|
|
def test_save_and_restore(qtbot, session):
|
|
"""Playlist with one track, one note, save and restore"""
|
|
|
|
# Create playlist
|
|
playlist = Playlists(session, "my playlist")
|
|
playlist_tab = PlaylistTab(None, session, playlist)
|
|
|
|
# Insert a note
|
|
note_text = "my note"
|
|
note_row = 7
|
|
note = Notes(session, playlist.id, note_row, note_text)
|
|
playlist_tab._insert_note(session, note)
|
|
|
|
# Add a track
|
|
track_path = "/a/b/c"
|
|
track = Tracks(session, track_path)
|
|
playlist_tab.insert_track(session, track)
|
|
|
|
# Save playlist
|
|
playlist_tab.save_playlist(session)
|
|
|
|
# Retrieve playlist
|
|
playlists = Playlists.get_open(session)
|
|
assert len(playlists) == 1
|
|
retrieved_playlist = playlists[0]
|
|
assert track_path in [a.path for a in retrieved_playlist.tracks.values()]
|
|
assert note_text in [a.note for a in retrieved_playlist.notes]
|
|
|
|
|
|
def test_meta_all_clear(qtbot, session):
|
|
|
|
# Create playlist
|
|
playlist = Playlists(session, "my playlist")
|
|
playlist_tab = PlaylistTab(None, session, playlist)
|
|
|
|
# Add some tracks
|
|
track1_path = "/a/b/c"
|
|
track1 = Tracks(session, track1_path)
|
|
playlist_tab.insert_track(session, track1)
|
|
track2_path = "/d/e/f"
|
|
track2 = Tracks(session, track2_path)
|
|
playlist_tab.insert_track(session, track2)
|
|
track3_path = "/h/i/j"
|
|
track3 = Tracks(session, track3_path)
|
|
playlist_tab.insert_track(session, track3)
|
|
|
|
assert playlist_tab._meta_get_current() is None
|
|
assert playlist_tab._meta_get_next() is None
|
|
assert playlist_tab._meta_get_notes() == []
|
|
assert playlist_tab._meta_get_played() == []
|
|
assert len(playlist_tab._meta_get_unreadable()) == 3
|
|
|
|
|
|
def test_meta(qtbot, session):
|
|
|
|
# Create playlist
|
|
playlist = Playlists(session, "my playlist")
|
|
playlist_tab = PlaylistTab(None, session, playlist)
|
|
|
|
# Add some tracks
|
|
track1_path = "/a/b/c"
|
|
track1 = Tracks(session, track1_path)
|
|
playlist_tab.insert_track(session, track1)
|
|
track2_path = "/d/e/f"
|
|
track2 = Tracks(session, track2_path)
|
|
playlist_tab.insert_track(session, track2)
|
|
track3_path = "/h/i/j"
|
|
track3 = Tracks(session, track3_path)
|
|
playlist_tab.insert_track(session, track3)
|
|
|
|
assert len(playlist_tab._meta_get_unreadable()) == 3
|
|
|
|
assert playlist_tab._meta_get_played() == []
|
|
assert playlist_tab._meta_get_current() is None
|
|
assert playlist_tab._meta_get_next() is None
|
|
assert playlist_tab._meta_get_notes() == []
|
|
|
|
playlist_tab._meta_set_played(0)
|
|
assert playlist_tab._meta_get_played() == [0]
|
|
assert playlist_tab._meta_get_current() is None
|
|
assert playlist_tab._meta_get_next() is None
|
|
assert playlist_tab._meta_get_notes() == []
|
|
|
|
# Add a note
|
|
note_text = "my note"
|
|
note_row = 7 # will be added as row 3
|
|
note = Notes(session, playlist.id, note_row, note_text)
|
|
playlist_tab._insert_note(session, note)
|
|
|
|
assert playlist_tab._meta_get_played() == [0]
|
|
assert playlist_tab._meta_get_current() is None
|
|
assert playlist_tab._meta_get_next() is None
|
|
assert playlist_tab._meta_get_notes() == [3]
|
|
|
|
playlist_tab._meta_set_next(1)
|
|
assert playlist_tab._meta_get_played() == [0]
|
|
assert playlist_tab._meta_get_current() is None
|
|
assert playlist_tab._meta_get_next() == 1
|
|
assert playlist_tab._meta_get_notes() == [3]
|
|
|
|
playlist_tab._meta_set_current(2)
|
|
assert playlist_tab._meta_get_played() == [0]
|
|
assert playlist_tab._meta_get_current() == 2
|
|
assert playlist_tab._meta_get_next() == 1
|
|
assert playlist_tab._meta_get_notes() == [3]
|
|
|
|
playlist_tab._meta_clear_played(0)
|
|
assert playlist_tab._meta_get_played() == []
|
|
assert playlist_tab._meta_get_current() == 2
|
|
assert playlist_tab._meta_get_next() == 1
|
|
assert playlist_tab._meta_get_notes() == [3]
|
|
|
|
playlist_tab._meta_clear_next()
|
|
assert playlist_tab._meta_get_played() == []
|
|
assert playlist_tab._meta_get_current() == 2
|
|
assert playlist_tab._meta_get_next() is None
|
|
assert playlist_tab._meta_get_notes() == [3]
|
|
|
|
playlist_tab._meta_clear_current()
|
|
assert playlist_tab._meta_get_played() == []
|
|
assert playlist_tab._meta_get_current() is None
|
|
assert playlist_tab._meta_get_next() is None
|
|
assert playlist_tab._meta_get_notes() == [3]
|
|
|
|
|
|
def test_clear_next(qtbot, session):
|
|
# Create playlist
|
|
playlist = Playlists(session, "my playlist")
|
|
playlist_tab = PlaylistTab(None, session, playlist)
|
|
|
|
# Add some tracks
|
|
track1_path = "/a/b/c"
|
|
track1 = Tracks(session, track1_path)
|
|
playlist_tab.insert_track(session, track1)
|
|
track2_path = "/d/e/f"
|
|
track2 = Tracks(session, track2_path)
|
|
playlist_tab.insert_track(session, track2)
|
|
|
|
playlist_tab._meta_set_next(1)
|
|
assert playlist_tab._meta_get_next() == 1
|
|
|
|
playlist_tab.clear_next()
|
|
assert playlist_tab._meta_get_next() is None
|
|
|
|
|
|
def test_get_selected_row(qtbot, session):
|
|
|
|
# Create playlist
|
|
playlist = Playlists(session, "my playlist")
|
|
playlist_tab = PlaylistTab(None, session, playlist)
|
|
|
|
# Add some tracks
|
|
track1_path = "/a/b/c"
|
|
track1 = Tracks(session, track1_path)
|
|
playlist_tab.insert_track(session, track1)
|
|
track2_path = "/d/e/f"
|
|
track2 = Tracks(session, track2_path)
|
|
playlist_tab.insert_track(session, track2)
|
|
|
|
window = Window()
|
|
window.show()
|
|
qtbot.addWidget(playlist_tab)
|
|
qtbot.wait_for_window_shown(playlist_tab)
|
|
|
|
row0_item0 = playlist_tab.item(0, 0)
|
|
assert row0_item0 is not None
|
|
rect = playlist_tab.visualItemRect(row0_item0)
|
|
qtbot.mouseClick(
|
|
playlist_tab.viewport(), Qt.LeftButton, pos=rect.center()
|
|
)
|