Esempio n. 1
0
    def test_clean_tabs_happy_path(self):
        tab2 = Tab("tab-2", "Tab 2")
        tab2_output = arrow_table({"B": [1]})
        tab3 = Tab("tab-3", "Tab 3")
        tab3_output = arrow_table({"C": [1]})

        context = self._render_context(tab_results={
            tab2: RenderResult(tab2_output),
            tab3: RenderResult(tab3_output),
        })
        result = clean_value(ParamDType.Multitab(), ["tab-2", "tab-3"],
                             context)
        self.assertEqual(
            result,
            [TabOutput(tab2, tab2_output),
             TabOutput(tab3, tab3_output)])
Esempio n. 2
0
    def test_clean_tabs_preserve_ordering(self):
        tab2 = Tab("tab-2", "Tab 2")
        tab2_output = arrow_table({"B": [1]})
        tab3 = Tab("tab-3", "Tab 3")
        tab3_output = arrow_table({"C": [1]})

        context = self._render_context(
            # RenderContext's dict ordering determines desired tab order.
            # (Python 3.7 spec: dict is ordered in insertion order. CPython 3.6
            # and PyPy 7 do this, too.)
            tab_results={
                tab3: RenderResult(tab3_output),
                tab2: RenderResult(tab2_output),
            })
        # Supply wrongly-ordered tabs; renderprep should reorder them.
        result = clean_value(ParamDType.Multitab(), ["tab-2", "tab-3"],
                             context)
        self.assertEqual([t.tab.slug for t in result], ["tab-3", "tab-2"])
Esempio n. 3
0
 def test_clean_tabs_tab_unreachable(self):
     tab = Tab("tab-1", "Tab 1")
     context = self._render_context(tab_results={tab: RenderResult()})
     with self.assertRaises(TabOutputUnreachableError):
         clean_value(ParamDType.Multitab(), ["tab-1"], context)
Esempio n. 4
0
 def test_clean_tabs_tab_cycle(self):
     tab = Tab("tab-1", "Tab 1")
     context = self._render_context(tab_results={tab: None})
     with self.assertRaises(TabCycleError):
         clean_value(ParamDType.Multitab(), ["tab-1"], context)
Esempio n. 5
0
 def test_clean_tabs_nix_missing_tab(self):
     context = self._render_context(tab_results={})
     result = clean_value(ParamDType.Multitab(), ["tab-missing"], context)
     self.assertEqual(result, [])
 def test_clean_multitab_unsupported(self):
     with self.assertRaisesRegex(RuntimeError,
                                 "Unsupported: fetch multitab"):
         clean_value(ParamDType.Multitab(), "", None)