drop flag
This commit is contained in:
@@ -65,6 +65,7 @@ def make_track_descriptor(
|
||||
track_type: TrackType = TrackType.VIDEO,
|
||||
title: str = "",
|
||||
dispositions: set[TrackDisposition] | None = None,
|
||||
dropped: bool = False,
|
||||
) -> TrackDescriptor:
|
||||
kwargs = {
|
||||
TrackDescriptor.INDEX_KEY: index,
|
||||
@@ -72,6 +73,7 @@ def make_track_descriptor(
|
||||
TrackDescriptor.TRACK_TYPE_KEY: track_type,
|
||||
TrackDescriptor.TAGS_KEY: {"title": title} if title else {},
|
||||
TrackDescriptor.DISPOSITION_SET_KEY: dispositions or set(),
|
||||
TrackDescriptor.DROPPED_KEY: dropped,
|
||||
}
|
||||
if track_type == TrackType.AUDIO:
|
||||
kwargs[TrackDescriptor.AUDIO_LAYOUT_KEY] = AudioLayout.LAYOUT_STEREO
|
||||
@@ -193,6 +195,47 @@ class PatternManagementTests(unittest.TestCase):
|
||||
|
||||
self.assertIn("at least one track", str(caught.exception))
|
||||
|
||||
def test_save_pattern_schema_rejects_all_dropped_patterns(self):
|
||||
self.add_show(1, "Dropped Pattern Show")
|
||||
|
||||
with self.assertRaises(InvalidPatternSchemaError) as caught:
|
||||
self.pattern_controller.savePatternSchema(
|
||||
{
|
||||
"show_id": 1,
|
||||
"pattern": r"^dropped_(s[0-9]+e[0-9]+)\.mkv$",
|
||||
},
|
||||
trackDescriptors=[make_track_descriptor(0, dropped=True)],
|
||||
)
|
||||
|
||||
self.assertIn("non-dropped track", str(caught.exception))
|
||||
|
||||
def test_dropped_pattern_track_is_not_in_conversion_media_descriptor(self):
|
||||
pattern_id = self.save_pattern(
|
||||
1,
|
||||
r"^active_(s[0-9]+e[0-9]+)\.mkv$",
|
||||
tracks=[
|
||||
make_track_descriptor(0, track_type=TrackType.VIDEO),
|
||||
make_track_descriptor(1, track_type=TrackType.AUDIO, dropped=True),
|
||||
make_track_descriptor(2, track_type=TrackType.SUBTITLE),
|
||||
],
|
||||
)
|
||||
|
||||
Session = self.context["database"]["session"]
|
||||
session = Session()
|
||||
try:
|
||||
pattern = session.query(Pattern).filter(Pattern.id == pattern_id).first()
|
||||
media_descriptor = pattern.getMediaDescriptor(self.context)
|
||||
tracks = media_descriptor.getTrackDescriptors()
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
self.assertEqual(
|
||||
[TrackType.VIDEO, TrackType.SUBTITLE],
|
||||
[track.getType() for track in tracks],
|
||||
)
|
||||
self.assertEqual([0, 1], [track.getIndex() for track in tracks])
|
||||
self.assertEqual([0, 2], [track.getSourceIndex() for track in tracks])
|
||||
|
||||
def test_save_pattern_schema_does_not_persist_attachment_tracks(self):
|
||||
pattern_id = self.save_pattern(
|
||||
1,
|
||||
@@ -257,6 +300,17 @@ class PatternManagementTests(unittest.TestCase):
|
||||
|
||||
self.assertIn("last track", str(caught.exception))
|
||||
|
||||
def test_track_controller_refuses_to_drop_last_active_track(self):
|
||||
pattern_id = self.save_pattern(1, r"^drop_(s[0-9]+e[0-9]+)\.mkv$")
|
||||
track = self.track_controller.getTrack(pattern_id, 0)
|
||||
descriptor = track.getDescriptor()
|
||||
descriptor.setDropped(True)
|
||||
|
||||
with self.assertRaises(click.ClickException) as caught:
|
||||
self.track_controller.updateTrack(track.getId(), descriptor)
|
||||
|
||||
self.assertIn("last active track", str(caught.exception))
|
||||
|
||||
def test_exact_duplicate_pattern_definition_is_rejected(self):
|
||||
self.save_pattern(1, r"^unique_(s[0-9]+e[0-9]+)\.mkv$")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user