Example #1
0
    def test_clean_multichartseries_non_number_is_prompting_error(self):
        context = RenderContext(
            None,
            TableShape(3, [
                Column('A', ColumnType.TEXT()),
                Column('B', ColumnType.DATETIME()),
            ]), None, None)
        value = [
            {
                'column': 'A',
                'color': '#aaaaaa'
            },
            {
                'column': 'B',
                'color': '#cccccc'
            },
        ]
        with self.assertRaises(PromptingError) as cm:
            clean_value(ParamDType.Multichartseries(), value, context)

        self.assertEqual(cm.exception.errors, [
            PromptingError.WrongColumnType(['A'], 'text', frozenset({'number'
                                                                     })),
            PromptingError.WrongColumnType(['B'], 'datetime',
                                           frozenset({'number'})),
        ])
Example #2
0
    def test_list_prompting_error_concatenate_different_type(self):
        context = RenderContext(None, None, TableShape(3, [
            Column('A', ColumnType.TEXT()),
            Column('B', ColumnType.DATETIME()),
        ]), None, None)
        schema = ParamDType.List(
            inner_dtype=ParamDType.Column(column_types=frozenset({'number'}))
        )
        with self.assertRaises(PromptingError) as cm:
            clean_value(schema, ['A', 'B'], context)

        self.assertEqual(cm.exception.errors, [
            PromptingError.WrongColumnType(['A'], 'text',
                                           frozenset({'number'})),
            PromptingError.WrongColumnType(['B'], 'datetime',
                                           frozenset({'number'})),
        ])
Example #3
0
    def test_clean_multicolumn_prompting_error_convert_to_text(self):
        # TODO make this _automatic_ instead of quick-fix?
        # ... but for now: prompt for a Quick Fix.
        context = RenderContext(None, None, TableShape(3, [
            Column('A', ColumnType.NUMBER()),
            Column('B', ColumnType.DATETIME()),
            Column('C', ColumnType.TEXT()),
        ]), None, None)
        with self.assertRaises(PromptingError) as cm:
            schema = ParamDType.Multicolumn(column_types=frozenset({'text'}))
            clean_value(schema, 'A,B', context)

        self.assertEqual(cm.exception.errors, [
            PromptingError.WrongColumnType(['A'], 'number',
                                           frozenset({'text'})),
            PromptingError.WrongColumnType(['B'], 'datetime',
                                           frozenset({'text'})),
        ])
Example #4
0
    def test_dict_prompting_error(self):
        context = RenderContext(None, None, TableShape(3, [
            Column('A', ColumnType.TEXT()),
            Column('B', ColumnType.TEXT()),
        ]), None, None)
        schema = ParamDType.Dict({
            'col1': ParamDType.Column(column_types=frozenset({'number'})),
            'col2': ParamDType.Column(column_types=frozenset({'datetime'})),
        })
        with self.assertRaises(PromptingError) as cm:
            clean_value(schema, {'col1': 'A', 'col2': 'B'}, context)

        self.assertEqual(cm.exception.errors, [
            PromptingError.WrongColumnType(['A'], 'text',
                                           frozenset({'number'})),
            PromptingError.WrongColumnType(['B'], 'text',
                                           frozenset({'datetime'})),
        ])
Example #5
0
 def test_as_quick_fixes(self):
     err = PromptingError([
         PromptingError.WrongColumnType(['A'], 'text',
                                        frozenset({'number'})),
         PromptingError.WrongColumnType(['B', 'C'], 'datetime',
                                        frozenset({'number'})),
     ])
     result = err.as_quick_fixes()
     self.assertEqual(result, [
         QuickFix('Convert "A" to Numbers', 'prependModule',
                  ['converttexttonumber', {
                      'colnames': ['A']
                  }]),
         QuickFix('Convert "B", "C" to Numbers', 'prependModule',
                  ['converttexttonumber', {
                      'colnames': ['B', 'C']
                  }]),
     ])
Example #6
0
 def test_clean_column_prompting_error_convert_to_number(self):
     context = RenderContext(None, None, TableShape(3, [
         Column('A', ColumnType.TEXT()),
     ]), None, None)
     with self.assertRaises(PromptingError) as cm:
         clean_value(ParamDType.Column(column_types=frozenset({'number'})),
                                       'A', context)
     self.assertEqual(cm.exception.errors, [
         PromptingError.WrongColumnType(['A'], 'text',
                                        frozenset({'number'})),
     ])
Example #7
0
    def test_clean_column_prompting_error_convert_to_text(self):
        # TODO make this _automatic_ instead of quick-fix?
        # Consider Regex. We probably want to pass the module a text Series
        # _separately_ from the input DataFrame. That way Regex can output
        # a new Text column but preserve its input column's data type.
        #
        # ... but for now: prompt for a Quick Fix.
        context = RenderContext(None, None, TableShape(3, [
            Column('A', ColumnType.NUMBER()),
        ]), None, None)
        with self.assertRaises(PromptingError) as cm:
            clean_value(ParamDType.Column(column_types=frozenset({'text'})),
                        'A', context)

        self.assertEqual(cm.exception.errors, [
            PromptingError.WrongColumnType(['A'], 'number',
                                           frozenset({'text'})),
        ])