131 lines
3.5 KiB
Python
131 lines
3.5 KiB
Python
# 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
|