Exemplo n.º 1
0
 def test_get_value_model_attr_callable(self):
     o = SimpleDemoModel()
     ds = SimpleDemoModelSource.as_datasource()
     o.fake = F
     c = Column('fake')
     v = c.get_value(o, ds)
     self.assertIsInstance(v, RowValue)
     self.assertEqual(v, 'called without obj')
Exemplo n.º 2
0
    def test_init(self):
        attr = 'char'
        c = Column(attr)
        self.assertEqual(c.attr, attr)
        self.assertEqual(str(c), attr)
        self.assertEqual(repr(c), "'%s'" % attr)

        c = Column(attr, widget='Widget')
        self.assertEqual(c.widget, 'Widget')
Exemplo n.º 3
0
 def test_custom_column(self):
     G(SimpleDemoModel, n=2, char='abc', integer1=1, integer2=3)
     ds = Datasource.as_datasource(model=SimpleDemoModel,
                                   columns=[
                                       Column('integer1'),
                                       Column('integer2'),
                                       CalcColumn(['integer1', 'integer2'])
                                   ])
     self.assertSequenceEqual(ds, [(1, 3, 4), (1, 3, 4)])
Exemplo n.º 4
0
    def test_apply_manipulator(self):
        class FakeCell():
            value = 'low'

        def upper(v):
            return v.upper()

        c = Column('char', manipulator=upper)
        v = c.apply_manipulator(FakeCell())
        self.assertEqual(v.value, 'LOW')
Exemplo n.º 5
0
    def test_get_value_attr_on_ds(self):
        """Test get value where attr not found on model, but on ds"""
        o = SimpleDemoModel()
        ds = SimpleDemoModelSource.as_datasource()

        ds.fake = 'Hello'
        c = Column('fake')
        v = c.get_value(o, ds)
        self.assertIsInstance(v, RowValue)
        self.assertEqual(v, 'Hello')
Exemplo n.º 6
0
    def test_columns(self):
        G(SimpleDemoModel, n=2, char='abc', integer1=1)
        ds = Datasource.as_datasource(
            model=SimpleDemoModel,
            columns=[Column('char', 'AAA'),
                     Column('integer1')])

        self.assertSequenceEqual([c.name for c in ds.columns],
                                 ['char', 'integer1'])
        self.assertSequenceEqual([c.title for c in ds.columns],
                                 ['AAA', 'Integer #1'])
        self.assertSequenceEqual(ds, [(u'abc', 1), (u'abc', 1)])
Exemplo n.º 7
0
    def test_get_value_attr_callable_on_ds(self):
        """Test get value where attr is not found on model and is callable
        attr on ds
        """
        o = SimpleDemoModel()
        ds = SimpleDemoModelSource.as_datasource()

        ds.fake = F
        c = Column('fake')
        v = c.get_value(o, ds)
        self.assertIsInstance(v, RowValue)
        self.assertEqual(v, 'called with obj')
Exemplo n.º 8
0
 def test_custom_column_from_datasource_method(self):
     G(SimpleDemoModel, n=2, char='abc', integer1=1, integer2=3)
     ds = Datasource.as_datasource(model=SimpleDemoModel,
                                   extra_column=lambda obj: 'extra_value',
                                   columns=[
                                       Column('integer1'),
                                       Column('integer2'),
                                       Column('extra_column'),
                                       CalcColumn(['integer1', 'integer2'])
                                   ])
     self.assertSequenceEqual(ds, [(1, 3, 'extra_value', 4),
                                   (1, 3, 'extra_value', 4)])
Exemplo n.º 9
0
    def test_custom_column_callable(self):
        G(SimpleDemoModel, n=2, char='abc', integer1=10, integer2=20)

        def _custom_callable(obj, ds):
            return obj.integer1 + 100

        ds = Datasource.as_datasource(model=SimpleDemoModel,
                                      columns=[
                                          Column('integer1'),
                                          Column('integer2'),
                                          ColumnCallable(_custom_callable)
                                      ])

        self.assertSequenceEqual(ds, [(10, 20, 110), (10, 20, 110)])
Exemplo n.º 10
0
def test_with_widget():
    c = Column('user.first_name')
    r = RowValue('Test', column=c)
    assert with_widget(r) == 'Test'
    assert with_widget(r, format='foo') == 'Test'

    c = Column('normal', format="%Y-%m-%d")
    r = RowValue(datetime.date(2000, 1, 1), column=c)
    assert with_widget(r, format='xls') == datetime.date(2000, 1, 1)

    e = RowValueError('Test')
    assert with_widget(e) == 'Test'

    with pytest.raises(ValueError):
        with_widget('Wrong')
Exemplo n.º 11
0
def test_currencywidget():
    c = Column('normal')
    r = RowValue(1000.00, column=c)
    assert CurrencyWidget.render(r) == "1,000.00"

    r = RowValue(1000, column=c)
    assert CurrencyWidget.render(r) == "1,000.00"
Exemplo n.º 12
0
def test_columnwidget():
    c = Column('normal')
    r = RowValue('abc', column=c)
    assert ColumnWidget.render(r) == 'abc'

    r = RowValue(None, column=c)
    assert ColumnWidget.render(r) == ''
Exemplo n.º 13
0
def test_timewidget():
    c = Column('normal', format="%H:%M")
    r = RowValue(datetime.time(16, 20, 10), column=c)
    assert TimeWidget.render(r) == "16:20"

    r = RowValue(None, column=c)
    assert TimeWidget.render(r) == ""
Exemplo n.º 14
0
def test_datewidget():
    c = Column('normal', format="%Y-%m-%d")
    r = RowValue(datetime.date(2000, 1, 1), column=c)
    assert DateWidget.render(r) == "2000-01-01"

    r = RowValue(None, column=c)
    assert DateWidget.render(r) == ""
Exemplo n.º 15
0
def test_col_to_css_class():
    c = Column('user.first_name')
    r = RowValue('Test', column=c)
    assert col_to_css_class(r) == 'ereports_engine_columns_column'

    e = RowValueError('Test')
    assert col_to_css_class(e) == 'Test'

    with pytest.raises(ValueError):
        col_to_css_class('Wrong')

    ds = Datasource.as_datasource(
        model=User,
        queryset=FakeQuerySet(
            model=User,
            items=[User(username='******'),
                   User(username='******')]))

    TestReport = type('TestReport', (BaseReport, ), {
        'model': User,
        'datasource': ds
    })
    report = TestReport.as_report()

    assert col_to_css_class(
        report[0].username) == 'ereports_engine_columns_charcolumn'
    assert col_to_css_class(
        report[0]['username']) == 'ereports_engine_columns_charcolumn'
Exemplo n.º 16
0
    def test_pickle(self):
        import pickle
        value = 'val'
        c = Column('char')
        r = RowValue(value, column=c)

        p = pickle.dumps(r)
        up = pickle.loads(p)
        self.assertEqual(up.column, None)
Exemplo n.º 17
0
def test_yesnowidget():
    c = Column('normal')
    r = RowValue(True, column=c)
    assert YesNoWidget.render(r) == 'Yes'

    r = RowValue('abc', column=c)
    assert YesNoWidget.render(r) == 'Yes'

    r = RowValue(False, column=c)
    assert YesNoWidget.render(r) == 'No'
Exemplo n.º 18
0
def test_with_widget():
    c = Column('user.first_name')
    r = RowValue('Test', column=c)
    assert with_widget(r) == 'Test'

    e = RowValueError('Test')
    assert with_widget(e) == 'Test'

    with pytest.raises(ValueError):
        with_widget('Wrong')
Exemplo n.º 19
0
 def test_optional_column_optional(self):
     G(DemoOptionalModel, n=2, name='abc', user=None)
     ds = Datasource.as_datasource(
         model=DemoOptionalModel,
         columns=[Column('name'),
                  OptionalColumn('user.first_name')])
     self.assertSequenceEqual([c.title for c in ds.columns],
                              ['name', 'first name'])
     self.assertSequenceEqual(ds, [(
         'abc',
         '',
     ), ('abc', '')])
Exemplo n.º 20
0
def test_percentwidget():
    c = Column('normal')
    r = RowValue("10", column=c)
    assert PercentWidget.render(r) == "10 %"

    r = RowValue(10, column=c)
    assert PercentWidget.render(r) == "10 %"

    r = RowValue(10.0, column=c)
    assert PercentWidget.render(r) == "10.0 %"

    r = RowValue(10.01, column=c)
    assert PercentWidget.render(r) == "10.01 %"
Exemplo n.º 21
0
    def test_custom_filter(self):
        G(SimpleDemoModel, n=10, char='abc')
        ds = Datasource.as_datasource(model=SimpleDemoModel,
                                      columns=[Column('filter_source')])
        ds._get_queryset = mock.Mock(wraps=ds._get_queryset)
        ds._create_result_cache = mock.Mock(wraps=ds._create_result_cache)

        def filter_odd(row):
            if not row.filter_source.value % 2:
                raise RecordFilteredError

        ds.add_custom_filter(filter_odd)
        list(ds)
        list(ds)
        self.assertSequenceEqual(ds, [(1, ), (3, ), (5, ), (7, ), (9, )])
        assert ds._get_queryset.call_count == 1
        assert ds._create_result_cache.call_count == 1
Exemplo n.º 22
0
    def test_title(self):
        title = 'AAA'
        c = Column('char', title=title)
        self.assertEqual(c.title, title)

        c = Column('char')
        self.assertEqual(c.title, "Char")

        c = Column('char', title="")
        self.assertEqual(c.title, "")

        c = Column('char', model="AAA")
        self.assertEqual(c.title, "Char")

        c = Column('char', model="AAA", title="")
        self.assertEqual(c.title, "")

        c = Column('name', model=DemoModel)
        self.assertEqual(c.title, 'Name')

        c = Column('user.first_name', model=DemoModelGroup)
        self.assertEqual(c.title, 'first name')
Exemplo n.º 23
0
 def test_manipulator(self):
     G(SimpleDemoModel, n=2, char='abc', integer1=1)
     ds = Datasource.as_datasource(
         model=SimpleDemoModel,
         columns=[Column('char', manipulator=lambda v: v.upper())])
     self.assertSequenceEqual(ds, [(u'ABC', ), (u'ABC', )])
Exemplo n.º 24
0
    def test_get_value(self):
        o = SimpleDemoModel()
        ds = SimpleDemoModelSource.as_datasource()

        # model found return attr
        c = Column('char')
        v = c.get_value(o, ds)
        self.assertIsInstance(v, RowValue)

        # raise last ValueError
        c = Column('nonexistant')
        with self.assertRaises(ValueError):
            c.get_value(o, ds)

        # Exception with raise ValueError
        c = Column(FakeCallable, name='fake')
        with self.assertRaises(ValueError):
            c.get_value(o, ds)