--- /dev/null
+import pytest
+import sqlite3
+from fs.schedule import Schedule
+
+
+# simple_schedule fixture returns schedules without any timing arguments
+# the tuple values correspong to ctor args for Schedule
+simple_schedules = [
+ ('/foo', '6h', '', 'fs_name', '/foo'),
+ ('/foo', '24h', '', 'fs_name', '/foo'),
+ ('/bar', '1d', '', 'fs_name', '/bar'),
+ ('/fnord', '1w', '', 'fs_name', '/fnord'),
+]
+@pytest.fixture(params=simple_schedules)
+def simple_schedule(request):
+ return Schedule(*request.param)
+
+@pytest.fixture
+def db_and_simple_schedules():
+ db = sqlite3.connect(':memory:',
+ check_same_thread=False)
+ with db:
+ db.row_factory = sqlite3.Row
+ db.execute("PRAGMA FOREIGN_KEYS = 1")
+ db.executescript(Schedule.CREATE_TABLES)
+ return db, [Schedule(*s) for s in simple_schedules]
+
-import pytest
-from pathlib import PurePosixPath
-from fs import schedule
+import datetime
+from fs.schedule import Schedule
+class TestSchedule(object):
+
+ def test_start_default_midnight(self, simple_schedule):
+ now = datetime.datetime.now(datetime.timezone.utc)
+ assert simple_schedule.start.second == 0
+ assert simple_schedule.start.minute == 0
+ assert simple_schedule.start.hour == 0
+ assert simple_schedule.start.day == now.day
+ assert simple_schedule.start.month == now.month
+ assert simple_schedule.start.year == now.year
+ assert simple_schedule.start.tzinfo == now.tzinfo
+
+ def test_created_now(self, simple_schedule):
+ now = datetime.datetime.now(datetime.timezone.utc)
+ assert simple_schedule.created.minute == now.minute
+ assert simple_schedule.created.hour == now.hour
+ assert simple_schedule.created.day == now.day
+ assert simple_schedule.created.month == now.month
+ assert simple_schedule.created.year == now.year
+ assert simple_schedule.created.tzinfo == now.tzinfo
+
+ def test_repeat_valid(self, simple_schedule):
+ repeat = simple_schedule.repeat
+ assert isinstance(repeat, int)