Пример #1
0
    def test_str_returns_string_with_attached_view(self):
        model = base_model.ReportModel(data={
            'a': 1,
            'b': 2
        },
                                       attached_view=BasicView())

        self.assertEqual(six.text_type(model), 'a: 1;b: 2;')
Пример #2
0
    def test_recursive_type_propagation_with_nested_lists(self):
        nested_model = mwdv_generator()
        data = {'a': 1, 'b': [nested_model]}
        top_model = base_model.ReportModel(data=data)

        top_model.set_current_view_type('json')
        self.assertEqual(nested_model.attached_view,
                         nested_model.views['json'])
Пример #3
0
    def test_recursive_type_propagation_with_nested_dicts(self):
        nested_model = mwdv.ModelWithDefaultViews(json_view='abc')
        data = {'a': 1, 'b': {'c': nested_model}}
        top_model = base_model.ReportModel(data=data)

        top_model.set_current_view_type('json')
        self.assertEqual(nested_model.attached_view,
                         nested_model.views['json'])
Пример #4
0
    def test_recursive_type_propogation_on_recursive_structures(self):
        nested_model = mwdv_generator()
        data = {'a': 1, 'b': [nested_model]}
        nested_model['c'] = data
        top_model = base_model.ReportModel(data=data)

        top_model.set_current_view_type('json')
        self.assertEqual(nested_model.attached_view,
                         nested_model.views['json'])
        del nested_model['c']
Пример #5
0
    def test_basic_kv_view(self):
        attached_view = text_generic.BasicKeyValueView()
        self.model = base_model.ReportModel(data={
            'string': 'value',
            'int': 1
        },
                                            attached_view=attached_view)

        self.assertEqual('int = 1\nstring = value\n',
                         six.text_type(self.model))
Пример #6
0
    def test_basic_kv_view(self):
        attached_view = json_generic.BasicKeyValueView()
        self.model = base_model.ReportModel(data={
            'string': 'value',
            'int': 1
        },
                                            attached_view=attached_view)

        self.assertEqual('{"int": 1, "string": "value"}',
                         six.text_type(self.model))
Пример #7
0
    def test_str_throws_error_with_no_attached_view(self):
        model = base_model.ReportModel(data={'c': [1, 2, 3]})

        # ugly code for python 2.6 compat, since python 2.6
        # does not have assertRaisesRegexp
        try:
            six.text_type(model)
        except Exception as e:
            err_str = 'Cannot stringify model: no attached view'
            self.assertEqual(six.text_type(e), err_str)
        else:
            self.assertTrue(False)
Пример #8
0
    def test_multi_view(self):
        attached_view = text_generic.MultiView()
        self.model = base_model.ReportModel(data={},
                                            attached_view=attached_view)

        self.model['1'] = mwdv_generator()
        self.model['2'] = mwdv_generator()
        self.model['2']['int'] = 2
        self.model.set_current_view_type('text')

        target_str = ('int = 1\n'
                      'string = value\n'
                      'int = 2\n'
                      'string = value')
        self.assertEqual(target_str, six.text_type(self.model))
Пример #9
0
    def test_table_view(self):
        column_names = ['Column A', 'Column B']
        column_values = ['a', 'b']
        attached_view = text_generic.TableView(column_names, column_values,
                                               'table')
        self.model = base_model.ReportModel(data={},
                                            attached_view=attached_view)

        self.model['table'] = [{'a': 1, 'b': 2}, {'a': 3, 'b': 4}]

        target_str = (
            '             Column A              |             Column B               \n'  # noqa
            '------------------------------------------------------------------------\n'  # noqa
            '                 1                 |                 2                  \n'  # noqa
            '                 3                 |                 4                  \n'
        )  # noqa

        self.assertEqual(target_str, six.text_type(self.model))
Пример #10
0
    def test_immutable_mappings_produce_mutable_models(self):
        class SomeImmutableMapping(col.Mapping):
            def __init__(self):
                self.data = {'a': 2, 'b': 4, 'c': 8}

            def __getitem__(self, key):
                return self.data[key]

            def __len__(self):
                return len(self.data)

            def __iter__(self):
                return iter(self.data)

        mp = SomeImmutableMapping()
        model = base_model.ReportModel(data=mp)
        model.attached_view = BasicView()

        self.assertEqual('a: 2;b: 4;c: 8;', six.text_type(model))

        model['d'] = 16

        self.assertEqual('a: 2;b: 4;c: 8;d: 16;', six.text_type(model))
        self.assertEqual({'a': 2, 'b': 4, 'c': 8}, mp.data)
Пример #11
0
 def setUp(self):
     super(TestJinjaView, self).setUp()
     self.model = base_model.ReportModel(data={'int': 1, 'string': 'value'})
Пример #12
0
 def test_str_throws_error_with_no_attached_view(self):
     model = base_model.ReportModel(data={'c': [1, 2, 3]})
     self.assertRaisesRegex(Exception,
                            'Cannot stringify model: no attached view',
                            six.text_type, model)
Пример #13
0
 def generate_model_with_submodel():
     base_m = basic_generator()
     tv = TmpView()
     base_m['submodel'] = base_model.ReportModel(data={'c': [1, 2, 3]},
                                                 attached_view=tv)
     return base_m
Пример #14
0
def basic_generator():
    return base_model.ReportModel(data={'string': 'value', 'int': 1})
Пример #15
0
    def test_data_as_sequence_is_handled_properly(self):
        model = base_model.ReportModel(data=['a', 'b'])
        model.attached_view = BasicView()

        # if we don't handle lists properly, we'll get a TypeError here
        self.assertEqual('0: a;1: b;', six.text_type(model))
Пример #16
0
    def test_getattr(self):
        model = base_model.ReportModel(data={'a': 1})

        self.assertEqual(model.a, 1)

        self.assertRaises(AttributeError, getattr, model, 'b')