from app.models import ( NoteColours, Notes, Playdates, Playlists, # PlaylistTracks, Tracks, ) def test_notecolours_get_colour(session): """Create a colour record and retrieve all colours""" rec = NoteColours() rec.colour = "ffffff" rec.substring = "substring" rec.is_regex = False rec.is_casesensitive = True session.add(rec) session.commit() records = NoteColours.get_all(session) assert len(records) == 1 record = records[0] assert record.colour == "ffffff" def test_notecolours_get_by_id(session): """Create a colour record and retrieve it by id""" rec = NoteColours() rec.colour = "abcdef" rec.substring = "substring" rec.is_regex = False rec.is_casesensitive = True session.add(rec) session.commit() record_id = rec.id record = NoteColours.get_by_id(session, record_id) assert record.colour == "abcdef" def test_notes_add_note(session): """Add and retrieve a note""" # We need to have a playlist to add the note to pl = Playlists() pl.name = "Test playlist" session.add(pl) session.commit() note_text = "Here we are" Notes.add_note(session, pl.id, 1, note_text) # We retrieve notes via playlist playlist = Playlists.get_playlist_by_id(session, pl.id) notes = playlist.get_notes() assert len(notes) == 1 assert notes[0] == note_text def test_notes_delete_note(session): """Add and delete a note""" # We need to have a playlist to add the note to pl = Playlists() pl.name = "Test playlist" session.add(pl) session.commit() note_text = "Here we are" rec =Notes.add_note(session, pl.id, 1, note_text) Notes.delete_note(session, rec.id) # We retrieve notes via playlist playlist = Playlists.get_playlist_by_id(session, pl.id) notes = playlist.get_notes() assert len(notes) == 0 def test_notes_update_note(session): """Add and update a note""" # We need to have a playlist to add the note to pl = Playlists() pl.name = "Test playlist" session.add(pl) session.commit() original_text = "Here we are" replacement_text = "There we go" rec = Notes.add_note(session, pl.id, 1, original_text) Notes.update_note(session, rec.id, 1, text=replacement_text) # We retrieve notes via playlist playlist = Playlists.get_playlist_by_id(session, pl.id) notes = playlist.get_notes() assert len(notes) == 1 assert notes[0] == replacement_text def test_playdates_add_playdate(session): """Test playdate and last_played retrieval""" # We need a track track_path = "/a/b/c" track = Tracks.get_or_create(session, track_path) # Need to commit because track record is updated in Playdates.add_playdate() session.commit() playdate = Playdates.add_playdate(session, track) last_played = Playdates.last_played(session, track.id) assert playdate.lastplayed == last_played def test_playdates_remove_track(session): """Test removing a track from a playdate""" # We need a track track_path = "/a/b/c" track = Tracks.get_or_create(session, track_path) # Need to commit because track record is updated in Playdates.add_playdate() session.commit() playdate = Playdates.add_playdate(session, track) Playdates.remove_track(session, track.id) last_played = Playdates.last_played(session, track.id) assert last_played is None def test_playlist_add_track(session): """Test adding track to playlist""" # We need a track track_path = "/a/b/c" track = Tracks.get_or_create(session, track_path) # Need to commit because track record is updated in Playdates.add_playdate() session.commit() playlist = Playlists() playlist.name = "Test playlist" session.add(playlist) session.commit() playlist.add_track(session, track) tracks = playlist.get_tracks() assert len(tracks) == 1 assert tracks[0].path == track_path