summaryrefslogtreecommitdiff
path: root/tests/unit/reports/test_base_report.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/reports/test_base_report.py')
-rw-r--r--tests/unit/reports/test_base_report.py150
1 files changed, 0 insertions, 150 deletions
diff --git a/tests/unit/reports/test_base_report.py b/tests/unit/reports/test_base_report.py
deleted file mode 100644
index db655fce..00000000
--- a/tests/unit/reports/test_base_report.py
+++ /dev/null
@@ -1,150 +0,0 @@
-# Copyright 2013 Red Hat, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-import collections as col
-import re
-
-from oslotest import base
-
-from openstack.common.report.models import base as base_model
-from openstack.common.report import report
-
-
-class BasicView(object):
- def __call__(self, model):
- res = ""
- for k in sorted(model.keys()):
- res += str(k) + ": " + str(model[k]) + ";"
- return res
-
-
-def basic_generator():
- return base_model.ReportModel(data={'string': 'value', 'int': 1})
-
-
-class TestBasicReport(base.BaseTestCase):
- def setUp(self):
- super(TestBasicReport, self).setUp()
-
- self.report = report.BasicReport()
-
- def test_add_section(self):
- self.report.add_section(BasicView(), basic_generator)
- self.assertEqual(len(self.report.sections), 1)
-
- def test_append_section(self):
- self.report.add_section(BasicView(), lambda: {'a': 1})
- self.report.add_section(BasicView(), basic_generator)
-
- self.assertEqual(len(self.report.sections), 2)
- self.assertEqual(self.report.sections[1].generator, basic_generator)
-
- def test_insert_section(self):
- self.report.add_section(BasicView(), lambda: {'a': 1})
- self.report.add_section(BasicView(), basic_generator, 0)
-
- self.assertEqual(len(self.report.sections), 2)
- self.assertEqual(self.report.sections[0].generator, basic_generator)
-
- def test_basic_render(self):
- self.report.add_section(BasicView(), basic_generator)
- self.assertEqual(self.report.run(), "int: 1;string: value;")
-
-
-class TestBaseModel(base.BaseTestCase):
- def test_submodel_attached_view(self):
- class TmpView(object):
- def __call__(self, model):
- return '{len: ' + str(len(model.c)) + '}'
-
- 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
-
- self.assertEqual(BasicView()(generate_model_with_submodel()),
- 'int: 1;string: value;submodel: {len: 3};')
-
- 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:
- str(model)
- except Exception as e:
- err_str = 'Cannot stringify model: no attached view'
- self.assertEqual(str(e), err_str)
- else:
- self.assertTrue(False)
-
- def test_str_returns_string_with_attached_view(self):
- model = base_model.ReportModel(data={'a': 1, 'b': 2},
- attached_view=BasicView())
-
- self.assertEqual(str(model), 'a: 1;b: 2;')
-
- def test_model_repr(self):
- model1 = base_model.ReportModel(data={'a': 1, 'b': 2},
- attached_view=BasicView())
-
- model2 = base_model.ReportModel(data={'a': 1, 'b': 2})
-
- base_re = r"<Model [^ ]+\.[^ ]+ \{.+\} with "
- with_view_re = base_re + r"view [^ ]+\.[^ ]+>"
- without_view_re = base_re + r"no view>"
-
- self.assertTrue(re.match(with_view_re, repr(model1)))
- self.assertTrue(re.match(without_view_re, repr(model2)))
-
- def test_getattr(self):
- model = base_model.ReportModel(data={'a': 1})
-
- self.assertEqual(model.a, 1)
-
- self.assertRaises(AttributeError, getattr, model, 'b')
-
- 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;', str(model))
-
- 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;', str(model))
-
- model['d'] = 16
-
- self.assertEqual('a: 2;b: 4;c: 8;d: 16;', str(model))
- self.assertEqual({'a': 2, 'b': 4, 'c': 8}, mp.data)