|
24 | 24 | MsgInfoView, |
25 | 25 | PopUpConfirmationView, |
26 | 26 | PopUpView, |
| 27 | + SpoilerView, |
27 | 28 | StreamInfoView, |
28 | 29 | StreamMembersView, |
29 | 30 | UserInfoView, |
@@ -952,6 +953,45 @@ def test_keypress_exit_popup( |
952 | 953 | assert self.controller.exit_popup.called |
953 | 954 |
|
954 | 955 |
|
| 956 | +class TestSpoilerView: |
| 957 | + @pytest.fixture(autouse=True) |
| 958 | + def mock_external_classes(self, mocker: MockerFixture) -> None: |
| 959 | + self.controller = mocker.Mock() |
| 960 | + mocker.patch.object( |
| 961 | + self.controller, "maximum_popup_dimensions", return_value=(64, 64) |
| 962 | + ) |
| 963 | + mocker.patch(MODULE + ".urwid.SimpleFocusListWalker", return_value=[]) |
| 964 | + self.spoiler_view = SpoilerView(self.controller, "Spoiler View", "") |
| 965 | + |
| 966 | + def test_keypress_any_key( |
| 967 | + self, widget_size: Callable[[Widget], urwid_Size] |
| 968 | + ) -> None: |
| 969 | + key = "a" |
| 970 | + size = widget_size(self.spoiler_view) |
| 971 | + self.spoiler_view.keypress(size, key) |
| 972 | + assert not self.controller.exit_popup.called |
| 973 | + |
| 974 | + @pytest.mark.parametrize("key", {*keys_for_command("EXIT_POPUP")}) |
| 975 | + def test_keypress_exit_popup( |
| 976 | + self, key: str, widget_size: Callable[[Widget], urwid_Size] |
| 977 | + ) -> None: |
| 978 | + size = widget_size(self.spoiler_view) |
| 979 | + self.spoiler_view.keypress(size, key) |
| 980 | + assert self.controller.exit_popup.called |
| 981 | + |
| 982 | + def test_keypress_navigation( |
| 983 | + self, |
| 984 | + mocker: MockerFixture, |
| 985 | + widget_size: Callable[[Widget], urwid_Size], |
| 986 | + navigation_key_expected_key_pair: Tuple[str, str] = ("ENTER", "ENTER"), |
| 987 | + ) -> None: |
| 988 | + key, expected_key = navigation_key_expected_key_pair |
| 989 | + size = widget_size(self.spoiler_view) |
| 990 | + super_keypress = mocker.patch(MODULE + ".urwid.ListBox.keypress") |
| 991 | + self.spoiler_view.keypress(size, key) |
| 992 | + super_keypress.assert_called_once_with(size, expected_key) |
| 993 | + |
| 994 | + |
955 | 995 | class TestMsgInfoView: |
956 | 996 | @pytest.fixture(autouse=True) |
957 | 997 | def mock_external_classes( |
|
0 commit comments