Esempio n. 1
0
    def test_clean_tab_missing_tab_selected_gives_none(self):
        """
        If the user has selected a nonexistent tab, pretend tab is blank.

        JS sees nonexistent tab slugs. render() doesn't.
        """
        context = self._render_context(tab_results={})
        result = clean_value(ParamDType.Tab(), "tab-XXX", context)
        self.assertEqual(result, None)
Esempio n. 2
0
 def test_clean_multicolumn_from_other_tab_that_does_not_exist(self):
     # The other tab would not exist if the user selected and then deleted
     # it.
     schema = ParamDType.Dict({
         "tab":
         ParamDType.Tab(),
         "columns":
         ParamDType.Multicolumn(tab_parameter="tab"),
     })
     params = {"tab": "tab-missing", "columns": ["A-from-tab-1"]}
     context = self._render_context(
         input_table=arrow_table({"A-from-tab-1": [1]}),
         tab_results={},
         params=params,
     )
     result = clean_value(schema, params, context)
     # result['tab'] is not what we're testing here
     self.assertEqual(result["columns"], [])
Esempio n. 3
0
    def test_clean_multicolumn_from_other_tab(self):
        tab2 = Tab("tab-2", "Tab 2")
        tab2_output_table = arrow_table({"A-from-tab-2": [1, 2]})

        schema = ParamDType.Dict({
            "tab":
            ParamDType.Tab(),
            "columns":
            ParamDType.Multicolumn(tab_parameter="tab"),
        })
        params = {"tab": "tab-2", "columns": ["A-from-tab-1", "A-from-tab-2"]}
        context = self._render_context(
            input_table=arrow_table({"A-from-tab-1": [1]}),
            tab_results={tab2: RenderResult(tab2_output_table)},
            params=params,
        )
        result = clean_value(schema, params, context)
        # result['tab'] is not what we're testing here
        self.assertEqual(result["columns"], ["A-from-tab-2"])
Esempio n. 4
0
 def test_clean_tab_unreachable(self):
     tab = Tab("tab-error", "Buggy Tab")
     context = self._render_context(tab_results={tab: RenderResult()})
     with self.assertRaises(TabOutputUnreachableError):
         clean_value(ParamDType.Tab(), "tab-error", context)
Esempio n. 5
0
 def test_clean_tab_cycle(self):
     tab = Tab("tab-1", "Tab 1")
     context = self._render_context(tab_results={tab: None})
     with self.assertRaises(TabCycleError):
         clean_value(ParamDType.Tab(), "tab-1", context)
Esempio n. 6
0
 def test_clean_tab_no_tab_selected_gives_none(self):
     context = self._render_context(tab_results={})
     result = clean_value(ParamDType.Tab(), "", context)
     self.assertEqual(result, None)
Esempio n. 7
0
 def test_clean_tab_happy_path(self):
     tab = Tab("tab-1", "Tab 1")
     table = arrow_table({"A": [1, 2]})
     context = self._render_context(tab_results={tab: RenderResult(table)})
     result = clean_value(ParamDType.Tab(), "tab-1", context)
     self.assertEqual(result, TabOutput(tab, table))
 def test_clean_tab_unsupported(self):
     with self.assertRaisesRegex(RuntimeError, "Unsupported: fetch tab"):
         clean_value(ParamDType.Tab(), "", None)