diff --git a/tests/gtk/test_view.py b/tests/gtk/test_view.py index 5dfd00e..837bee9 100644 --- a/tests/gtk/test_view.py +++ b/tests/gtk/test_view.py @@ -494,17 +494,32 @@ class TestXfstestsView(unittest.TestCase): xfstestsdb.gtk.view.PropertyView) self.assertEqual(sep.get_next_sibling(), self.view._propertyview) - def test_testcase_view(self): - """Check that the XfstestsView sets up a TestCaseView correctly.""" + def test_stack(self): + """Check that the XfstestsView sets u a Gtk.Stack correctly.""" sep = self.view._propertyview.get_next_sibling() self.assertIsInstance(sep, Gtk.Separator) + self.assertIsInstance(self.view._stack, Gtk.Stack) + self.assertEqual(self.view._stack.props.transition_type, + Gtk.StackTransitionType.OVER_LEFT_RIGHT) + self.assertEqual(sep.get_next_sibling(), self.view._stack) + + def test_testcase_view(self): + """Check that the XfstestsView sets up a TestCaseView correctly.""" self.assertIsInstance(self.view._testcaseview, xfstestsdb.gtk.view.TestCaseView) - self.assertEqual(sep.get_next_sibling(), self.view._testcaseview) + self.assertEqual(self.view._stack.get_child_by_name("testcases"), + self.view._testcaseview) + + def test_messages_view(self): + """Check that the XfstestsView sets up a MessagesView correctly.""" + self.assertIsInstance(self.view._messagesview, + xfstestsdb.gtk.view.MessagesView) + self.assertEqual(self.view._stack.get_child_by_name("messages"), + self.view._messagesview) def test_summary_view(self): """Check that the XfstestsView sets up a SummaryView correctly.""" - sep = self.view._testcaseview.get_next_sibling() + sep = self.view._stack.get_next_sibling() self.assertIsInstance(sep, Gtk.Separator) self.assertIsInstance(self.view._summaryview, xfstestsdb.gtk.view.SummaryView) @@ -538,3 +553,21 @@ class TestXfstestsView(unittest.TestCase): """Test the XfstestsView 'filterbuttons' property.""" self.assertEqual(self.view.filterbuttons, self.view._testcaseview.filterbuttons) + + def test_messages(self): + """Test displaying messages to the user.""" + self.assertEqual(self.view._stack.get_visible_child_name(), + "testcases") + + self.view._testcaseview.emit("show-messages", "testcase", + "xunit", "stdout", "stderr") + self.assertEqual(self.view._stack.get_visible_child_name(), + "messages") + self.assertEqual(self.view._messagesview.testcase, "testcase") + self.assertEqual(self.view._messagesview.xunit, "xunit") + self.assertEqual(self.view._messagesview.stdout, "stdout") + self.assertEqual(self.view._messagesview.stderr, "stderr") + + self.view._messagesview.emit("go-back") + self.assertEqual(self.view._stack.get_visible_child_name(), + "testcases") diff --git a/xfstestsdb/gtk/view.py b/xfstestsdb/gtk/view.py index 62d160f..6250d5c 100644 --- a/xfstestsdb/gtk/view.py +++ b/xfstestsdb/gtk/view.py @@ -299,10 +299,13 @@ class XfstestsView(Gtk.Box): def __init__(self): """Initialize an XfstestsView.""" + animation = Gtk.StackTransitionType.OVER_LEFT_RIGHT super().__init__(orientation=Gtk.Orientation.VERTICAL) self._environview = EnvironmentView() self._propertyview = PropertyView() self._testcaseview = TestCaseView() + self._messagesview = MessagesView() + self._stack = Gtk.Stack(transition_type=animation) self._summaryview = SummaryView() self.bind_property("environment", self._environview, "model") @@ -310,14 +313,31 @@ class XfstestsView(Gtk.Box): self.bind_property("model", self._testcaseview, "model") self.bind_property("summary", self._summaryview, "model") + self._testcaseview.connect("show-messages", self.__show_messages) + self._messagesview.connect("go-back", self.__show_testcases) + + self._stack.add_named(self._testcaseview, "testcases") + self._stack.add_named(self._messagesview, "messages") + self.append(self._environview) self.append(Gtk.Separator()) self.append(self._propertyview) self.append(Gtk.Separator()) - self.append(self._testcaseview) + self.append(self._stack) self.append(Gtk.Separator()) self.append(self._summaryview) + def __show_messages(self, view: TestCaseView, testcase: str, + xunit: str, stdout: str, stderr: str) -> None: + self._messagesview.testcase = testcase + self._messagesview.xunit = xunit + self._messagesview.stdout = stdout + self._messagesview.stderr = stderr + self._stack.set_visible_child_name("messages") + + def __show_testcases(self, view: MessagesView) -> None: + self._stack.set_visible_child_name("testcases") + @GObject.Property(type=FilterButtons) def filterbuttons(self) -> FilterButtons: """Get the FilterButtons attached to the child TestCaseView."""