|
24 | 24 | MsgInfoView, |
25 | 25 | PopUpConfirmationView, |
26 | 26 | PopUpView, |
| 27 | + SpoilerView, |
27 | 28 | StreamInfoView, |
28 | 29 | StreamMembersView, |
29 | 30 | UserInfoView, |
@@ -917,6 +918,47 @@ def test_keypress_exit_popup( |
917 | 918 | assert self.controller.exit_popup.called |
918 | 919 |
|
919 | 920 |
|
| 921 | +class TestSpoilerView: |
| 922 | + @pytest.fixture(autouse=True) |
| 923 | + def mock_external_classes(self, mocker: MockerFixture) -> None: |
| 924 | + self.controller = mocker.Mock() |
| 925 | + mocker.patch.object( |
| 926 | + self.controller, "maximum_popup_dimensions", return_value=(64, 64) |
| 927 | + ) |
| 928 | + mocker.patch(MODULE + ".urwid.SimpleFocusListWalker", return_value=[]) |
| 929 | + self.spoiler_view = SpoilerView(self.controller, "Spoiler View", "") |
| 930 | + |
| 931 | + def test_keypress_any_key( |
| 932 | + self, widget_size: Callable[[Widget], urwid_Size] |
| 933 | + ) -> None: |
| 934 | + key = "a" |
| 935 | + size = widget_size(self.spoiler_view) |
| 936 | + self.spoiler_view.keypress(size, key) |
| 937 | + assert not self.controller.exit_popup.called |
| 938 | + |
| 939 | + @pytest.mark.parametrize( |
| 940 | + "key", {*keys_for_command("GO_BACK"), *keys_for_command("ENTER")} |
| 941 | + ) |
| 942 | + def test_keypress_exit_popup( |
| 943 | + self, key: str, widget_size: Callable[[Widget], urwid_Size] |
| 944 | + ) -> None: |
| 945 | + size = widget_size(self.spoiler_view) |
| 946 | + self.spoiler_view.keypress(size, key) |
| 947 | + assert self.controller.exit_popup.called |
| 948 | + |
| 949 | + def test_keypress_navigation( |
| 950 | + self, |
| 951 | + mocker: MockerFixture, |
| 952 | + widget_size: Callable[[Widget], urwid_Size], |
| 953 | + navigation_key_expected_key_pair: Tuple[str, str] = ("ENTER", "ENTER"), |
| 954 | + ) -> None: |
| 955 | + key, expected_key = navigation_key_expected_key_pair |
| 956 | + size = widget_size(self.spoiler_view) |
| 957 | + super_keypress = mocker.patch(MODULE + ".urwid.ListBox.keypress") |
| 958 | + self.spoiler_view.keypress(size, key) |
| 959 | + super_keypress.assert_called_once_with(size, expected_key) |
| 960 | + |
| 961 | + |
920 | 962 | class TestMsgInfoView: |
921 | 963 | @pytest.fixture(autouse=True) |
922 | 964 | def mock_external_classes( |
|
0 commit comments