# Standard library imports import datetime as dt import unittest # PyQt imports # Third party imports # App imports from app.models import ( db, Playdates, Tracks, ) from classes import ( Filter, ) class MyTestCase(unittest.TestCase): @classmethod def setUpClass(cls): """Runs once before any test in this class""" db.create_all() with db.Session() as session: # Create some track entries _ = Tracks(**dict( session=session, artist="a", bitrate=0, duration=100, fade_at=0, path="/alpha/bravo/charlie", silence_at=0, start_gap=0, title="abc" )) track2 = Tracks(**dict( session=session, artist="a", bitrate=0, duration=100, fade_at=0, path="/xray/yankee/zulu", silence_at=0, start_gap=0, title="xyz" )) track2_id = track2.id # Add playdates # Track 2 played just over a year ago just_over_a_year_ago = dt.datetime.now() - dt.timedelta(days=367) _ = Playdates(session, track2_id, when=just_over_a_year_ago) @classmethod def tearDownClass(cls): """Runs once after all tests""" db.drop_all() def setUp(self): """Runs before each test""" pass def tearDown(self): """Runs after each test""" pass def test_search_path_1(self): """Search for unplayed track""" filter = Filter(path="alpha", last_played_comparator="never") with db.Session() as session: results = Tracks.get_filtered_tracks(session, filter) assert len(results) == 1 assert 'alpha' in results[0].path def test_search_path_2(self): """Search for unplayed track that doesn't exist""" filter = Filter(path="xray", last_played_comparator="never") with db.Session() as session: results = Tracks.get_filtered_tracks(session, filter) assert len(results) == 0 def test_played_over_a_year_ago(self): """Search for tracks played over a year ago""" filter = Filter(last_played_unit="years", last_played_number=1) with db.Session() as session: results = Tracks.get_filtered_tracks(session, filter) assert len(results) == 1 assert 'zulu' in results[0].path def test_played_over_two_years_ago(self): """Search for tracks played over 2 years ago""" filter = Filter(last_played_unit="years", last_played_number=2) with db.Session() as session: results = Tracks.get_filtered_tracks(session, filter) assert len(results) == 0 def test_never_played(self): """Search for tracks never played""" filter = Filter(last_played_comparator="never") with db.Session() as session: results = Tracks.get_filtered_tracks(session, filter) assert len(results) == 1 assert 'alpha' in results[0].path def test_played_anytime(self): """Search for tracks played over a year ago""" filter = Filter(last_played_comparator="Any time") with db.Session() as session: results = Tracks.get_filtered_tracks(session, filter) assert len(results) == 1 assert 'zulu' in results[0].path