// Admin pane "Blocked videos" sub-tab (#25 follow-up): the per-event admin block // list is now viewable/removable in the UI. These cover the row-building (pure) // and the list rendering + unblock wiring (jsdom). // // test_integrity_note: // change_type: ["new_tests"] // scenarios: // - id: SCN-blocked-videos-rows // given: "a raw blocked-id list and an optional cache resolver" // when: "buildBlockedVideoRows / renderBlockedVideosList run" // then: "rows dedupe + enrich, the list renders, and Unblock invokes the callback" // observable_outcomes: // - "id-only rows when the video isn't cached; title+id rows when it is" // - "empty list shows the empty state and hides the