mirror of
https://github.com/Dispatcharr/Dispatcharr.git
synced 2026-01-23 10:45:27 +00:00
Added ability to use custom comskip.ini Added series recording without reliance on EPG Fixed comskip bug Fixed timezone mismatch when scheduling DVR recordings No migrations completed yet
40 lines
1.7 KiB
Python
40 lines
1.7 KiB
Python
from datetime import datetime, timedelta
|
|
from django.test import TestCase
|
|
from django.utils import timezone
|
|
|
|
from apps.channels.models import Channel, RecurringRecordingRule, Recording
|
|
from apps.channels.tasks import sync_recurring_rule_impl, purge_recurring_rule_impl
|
|
|
|
|
|
class RecurringRecordingRuleTasksTests(TestCase):
|
|
def test_sync_recurring_rule_creates_and_purges_recordings(self):
|
|
now = timezone.now()
|
|
channel = Channel.objects.create(channel_number=1, name='Test Channel')
|
|
|
|
start_time = (now + timedelta(minutes=15)).time().replace(second=0, microsecond=0)
|
|
end_time = (now + timedelta(minutes=75)).time().replace(second=0, microsecond=0)
|
|
|
|
rule = RecurringRecordingRule.objects.create(
|
|
channel=channel,
|
|
days_of_week=[now.weekday()],
|
|
start_time=start_time,
|
|
end_time=end_time,
|
|
)
|
|
|
|
created = sync_recurring_rule_impl(rule.id, drop_existing=True, horizon_days=1)
|
|
self.assertEqual(created, 1)
|
|
|
|
recording = Recording.objects.filter(custom_properties__rule__id=rule.id).first()
|
|
self.assertIsNotNone(recording)
|
|
self.assertEqual(recording.channel, channel)
|
|
self.assertEqual(recording.custom_properties.get('rule', {}).get('id'), rule.id)
|
|
|
|
expected_start = timezone.make_aware(
|
|
datetime.combine(recording.start_time.date(), start_time),
|
|
timezone.get_current_timezone(),
|
|
)
|
|
self.assertLess(abs((recording.start_time - expected_start).total_seconds()), 60)
|
|
|
|
removed = purge_recurring_rule_impl(rule.id)
|
|
self.assertEqual(removed, 1)
|
|
self.assertFalse(Recording.objects.filter(custom_properties__rule__id=rule.id).exists())
|