This commit is contained in:
Javanaut
2026-07-08 09:37:11 +02:00
parent 2aeeaac204
commit f49d6f4838
3 changed files with 87 additions and 19 deletions

View File

@@ -190,7 +190,7 @@ class TagTableScreenStateTests(unittest.TestCase):
widgets = {
"#type_select": FakeValueWidget(TrackType.AUDIO),
"#audio_layout_select": FakeValueWidget(AudioLayout.LAYOUT_STEREO),
"#drop_checkbox": FakeSelectionListWidget({0}),
"#drop_checkbox": FakeValueWidget(True),
"#language_select": FakeValueWidget(IsoLanguage.GERMAN),
"#title_input": FakeInputWidget("German Audio"),
"#dispositions_selection_list": FakeSelectionListWidget({0, 6}),
@@ -220,7 +220,7 @@ class TagTableScreenStateTests(unittest.TestCase):
widgets = {
"#type_select": FakeValueWidget(TrackType.ATTACHMENT),
"#audio_layout_select": FakeValueWidget(AudioLayout.LAYOUT_UNDEFINED),
"#drop_checkbox": FakeSelectionListWidget(set()),
"#drop_checkbox": FakeValueWidget(False),
"#language_select": FakeValueWidget(Select.NULL),
"#title_input": FakeInputWidget(""),
"#dispositions_selection_list": FakeSelectionListWidget(set()),
@@ -329,7 +329,7 @@ class TagTableScreenStateTests(unittest.TestCase):
"#pattern_label": FakeStaticWidget(),
"#type_select": FakeValueWidget(None),
"#audio_layout_select": FakeValueWidget(None),
"#drop_checkbox": FakeSelectionListWidget(set()),
"#drop_checkbox": FakeValueWidget(False),
"#dispositions_selection_list": FakeSelectionListWidget(set()),
"#language_select": FakeValueWidget(None),
"#title_input": FakeInputWidget(""),
@@ -376,6 +376,65 @@ class TagTableScreenStateTests(unittest.TestCase):
self.assertIs(second_track, screen.getSelectedTrackDescriptor())
self.assertEqual("Ja", screen.tracksTable.rows["row-1"][9])
def test_pattern_details_screen_toggles_draft_track_drop_state(self):
first_track = make_track_descriptor(0, 0, TrackType.VIDEO)
second_track = make_track_descriptor(1, 0, TrackType.SUBTITLE)
screen = object.__new__(PatternDetailsScreen)
screen.context = {"logger": get_ffx_logger()}
screen.tracksTable = FakeTagTable()
screen._PatternDetailsScreen__draftTracks = [first_track, second_track]
screen._PatternDetailsScreen__pattern = None
screen._PatternDetailsScreen__trackRowData = {}
screen.updateTracks()
screen.tracksTable.select_row("row-1")
screen.toggleSelectedTrackDropped(screen.getSelectedTrackDescriptor())
self.assertFalse(first_track.isDropped())
self.assertTrue(second_track.isDropped())
self.assertEqual("Ja", list(screen.tracksTable.rows.values())[1][9])
def test_pattern_details_screen_toggles_persisted_track_drop_state(self):
class _FakePattern:
def getId(self):
return 5
class _FakeTrackController:
def __init__(self):
self.updated = []
def updateTrack(self, track_id, track_descriptor):
self.updated.append((track_id, track_descriptor))
return True
track = TrackDescriptor(
id=17,
pattern_id=5,
index=1,
source_index=1,
sub_index=0,
track_type=TrackType.SUBTITLE,
codec_name=TrackCodec.UNKNOWN,
dropped=False,
)
track_controller = _FakeTrackController()
screen = object.__new__(PatternDetailsScreen)
screen.context = {"logger": get_ffx_logger()}
screen._PatternDetailsScreen__pattern = _FakePattern()
screen._PatternDetailsScreen__tc = track_controller
screen.updateTracks = lambda: None
screen.toggleSelectedTrackDropped(track)
self.assertEqual(1, len(track_controller.updated))
track_id, updated_track = track_controller.updated[0]
self.assertEqual(17, track_id)
self.assertFalse(track.isDropped())
self.assertTrue(updated_track.isDropped())
def test_pattern_details_screen_reads_selected_tag_from_raw_row_mapping(self):
screen = object.__new__(PatternDetailsScreen)
screen.tagsTable = FakeTagTable()