From 35438f59fb7fd3d6be5c9905522a3b95885f63c5 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sat, 27 Apr 2024 20:36:04 +0100 Subject: [PATCH] Update tests --- app/dbtables.py | 4 +- tests/test_playlists.py | 129 +++++++++++++++++++++------------------- 2 files changed, 69 insertions(+), 64 deletions(-) diff --git a/app/dbtables.py b/app/dbtables.py index 69b84e3..421c87e 100644 --- a/app/dbtables.py +++ b/app/dbtables.py @@ -1,13 +1,11 @@ # Standard library imports -import os -import sys from typing import List, Optional import datetime as dt # PyQt imports # Third party imports -from alchemical import Alchemical, Model # type: ignore +from alchemical import Model # type: ignore from sqlalchemy import ( Boolean, DateTime, diff --git a/tests/test_playlists.py b/tests/test_playlists.py index ad4f80d..f2b0e67 100644 --- a/tests/test_playlists.py +++ b/tests/test_playlists.py @@ -18,6 +18,7 @@ DB_FILE = "/tmp/mm.db" if os.path.exists(DB_FILE): os.unlink(DB_FILE) os.environ["ALCHEMICAL_DATABASE_URI"] = "sqlite:///" + DB_FILE +from app import playlistmodel, utilities from app.models import ( # noqa: E402 db, Carts, @@ -59,7 +60,41 @@ class MyTestCase(unittest.TestCase): def up(self): db.create_all() self.widget = musicmuster.Window() - self.widget.show() + # self.widget.show() + + # Add two tracks to database + self.tracks = { + 1: { + "path": "testdata/isa.mp3", + "title": "I'm so afraid", + "artist": "Fleetwood Mac", + "bitrate": 64, + "duration": 263000, + "start_gap": 60, + "fade_at": 236263, + "silence_at": 260343, + "mtime": 371900000, + }, + 2: { + "path": "testdata/mom.mp3", + "title": "Man of Mystery", + "artist": "The Shadows", + "bitrate": 64, + "duration": 120000, + "start_gap": 70, + "fade_at": 115000, + "silence_at": 118000, + "mtime": 1642760000, + }, + } + + with db.Session() as session: + for track in self.tracks.values(): + db_track = Tracks(session=session, **track) + session.add(db_track) + track['id'] = db_track.id + + session.commit() def down(self): db.drop_all() @@ -68,80 +103,52 @@ class MyTestCase(unittest.TestCase): def test_init(self): """Just check we can create a playlist_tab""" - with db.Session() as session: - playlist = Playlists(session, "test playlist") - # playlist_tab = playlists.PlaylistTab(self.widget, playlist.id) + playlist_name = "test_init playlist" + with db.Session() as session: + playlist = Playlists(session, playlist_name) self.widget.create_playlist_tab(playlist) with self.qtbot.waitExposed(self.widget): - # window.show() - # with self.qtbot.waitSignal(self.widget.my_signal, timeout=300): - # with qtbot.waitExposed(window): self.widget.show() + @with_updown + def test_save_and_restore(self): + """Playlist with one track, one note, save and restore""" -# def seed2tracks(session): -# tracks = [ -# { -# "path": "testdata/isa.mp3", -# "title": "I'm so afraid", -# "artist": "Fleetwood Mac", -# "duration": 263000, -# "start_gap": 60, -# "fade_at": 236263, -# "silence_at": 260343, -# "mtime": 371900000, -# }, -# { -# "path": "testdata/mom.mp3", -# "title": "Man of Mystery", -# "artist": "The Shadows", -# "duration": 120000, -# "start_gap": 70, -# "fade_at": 115000, -# "silence_at": 118000, -# "mtime": 1642760000, -# }, -# ] + note_text = "my note" + playlist_name = "test_save_and_restore playlist" -# for track in tracks: -# db_track = models.Tracks(session=session, **track) -# session.add(db_track) + with db.Session() as session: + playlist = Playlists(session, playlist_name) + model = playlistmodel.PlaylistModel(playlist.id) -# session.commit() + # Add a track with a note + model.insert_row(proposed_row_number=0, track_id=self.tracks[1]['id'], note=note_text) + # We need to commit the session before re-querying + session.commit() -# def test_save_and_restore(qtbot, session): -# """Playlist with one track, one note, save and restore""" + # Retrieve playlist + all_playlists = Playlists.get_all(session) + assert len(all_playlists) == 1 + retrieved_playlist = all_playlists[0] + assert len(retrieved_playlist.rows) == 1 + paths = [a.track.path for a in retrieved_playlist.rows] + assert self.tracks[1]['path'] in paths + notes = [a.note for a in retrieved_playlist.rows] + assert note_text in notes -# # Create playlist -# playlist = models.Playlists(session, "my playlist") -# playlist_tab = playlists.PlaylistTab(None, session, playlist.id) + @with_updown + def test_utilities(self): + """Test check_db utility""" -# # Insert a note -# note_text = "my note" -# note_row = 7 -# note = models.Notes(session, playlist.id, note_row, note_text) -# playlist_tab._insert_note(session, note) + from config import Config -# # Add a track -# track_path = "/a/b/c" -# track = models.Tracks(session, track_path) -# # Inserting the track will also save the playlist -# playlist_tab.insert_track(session, track) - -# # We need to commit the session before re-querying -# session.commit() - -# # Retrieve playlist -# all_playlists = playlists.Playlists.get_open(session) -# assert len(all_playlists) == 1 -# retrieved_playlist = all_playlists[0] -# paths = [a.path for a in retrieved_playlist.tracks.values()] -# assert track_path in paths -# notes = [a.note for a in retrieved_playlist.notes] -# assert note_text in notes + Config.ROOT = os.path.join(os.path.dirname(__file__), 'testdata') + with db.Session() as session: + utilities.check_db(session) + utilities.update_bitrates(session) # def test_meta_all_clear(qtbot, session): # # Create playlist