Ejemplo n.º 1
0
    def test_compute_remove_root_patch(self):
        from bokeh.document import Document
        d = Document()
        root1 = SomeModelInTestDocument(foo=42)
        child1 = AnotherModelInTestDocument(bar=43)
        root1.child = child1
        d.add_root(root1)

        before = d.to_json()

        d.remove_root(root1)

        after = d.to_json()

        patch = Document._compute_patch_between_json(before, after)

        expected = dict(references=[],
                        events= [
                            {'kind': 'RootRemoved',
                             'model': {'id': None,
                                       'type': 'SomeModelInTestDocument'}}
                        ])
        expected['events'][0]['model']['id'] = root1._id

        self.assertDictEqual(expected, patch)

        d2 = Document.from_json(before)
        d2.apply_json_patch(patch)
        self.assertEqual([], d2.roots)
    def test_compute_remove_root_patch(self):
        from bokeh.document import Document
        d = Document()
        root1 = SomeModelInTestDocument(foo=42)
        child1 = AnotherModelInTestDocument(bar=43)
        root1.child = child1
        d.add_root(root1)

        before = d.to_json()

        d.remove_root(root1)

        after = d.to_json()

        patch = Document._compute_patch_between_json(before, after)

        expected = dict(references=[],
                        events= [
                            {'kind': 'RootRemoved',
                             'model': {'id': None,
                                       'type': 'SomeModelInTestDocument'}}
                        ])
        expected['events'][0]['model']['id'] = root1._id

        self.assertDictEqual(expected, patch)

        d2 = Document.from_json(before)
        d2.apply_json_patch(patch)
        self.assertEqual([], d2.roots)
Ejemplo n.º 3
0
    def test_compute_remove_root_patch(self):
        from bokeh.document import Document

        d = Document()
        root1 = SomeModelInTestDocument(foo=42)
        child1 = AnotherModelInTestDocument(bar=43)
        root1.child = child1
        d.add_root(root1)

        before = d.to_json()

        d.remove_root(root1)

        after = d.to_json()

        patch = Document._compute_patch_between_json(before, after)

        expected = dict(
            references=[], events=[{"kind": "RootRemoved", "model": {"id": None, "type": "SomeModelInTestDocument"}}]
        )
        expected["events"][0]["model"]["id"] = root1._id

        self.assertDictEqual(expected, patch)

        d2 = Document.from_json(before)
        d2.apply_json_patch(patch)
        self.assertEqual([], d2.roots)
def test_compute_remove_root_patch():
    d = Document()
    root1 = SomeModelInTestDocument(foo=42)
    child1 = AnotherModelInTestDocument(bar=43)
    root1.child = child1
    d.add_root(root1)

    before = d.to_json()

    d.remove_root(root1)

    after = d.to_json()

    patch = bdu.compute_patch_between_json(before, after)

    expected = dict(references=[],
                    events=[{
                        'kind': 'RootRemoved',
                        'model': {
                            'id': None,
                            'type': 'SomeModelInTestDocument'
                        }
                    }])
    expected['events'][0]['model']['id'] = root1._id

    assert expected == patch

    d2 = Document.from_json(before)
    d2.apply_json_patch(patch)
    assert d2.roots == []
Ejemplo n.º 5
0
    def test_len(self) -> None:
        d = Document()
        dm = d.models
        assert len(dm) == 0

        r1 = Row(children=[Div()])
        r2 = Row(children=[Div(), Div()])

        d.add_root(r1)
        assert len(dm) == 2

        d.add_root(r2)
        assert len(dm) == 5

        d.remove_root(r1)
        assert len(dm) == 3

        d.remove_root(r2)
        assert len(dm) == 0
Ejemplo n.º 6
0
    def test_theming_a_document_before_adding_root(self) -> None:
        theme = Theme(json={'attrs': {'ThemedModel': {'string': 'w00t'}}})
        obj = ThemedModel()
        doc = Document()
        assert 'hello' == obj.string
        doc.theme = theme
        assert doc.theme is theme
        changes = dict(calls=[])

        def record_trigger(attr, old, new_):
            changes['calls'].append((attr, old, new_))

        obj.on_change('string', record_trigger)
        doc.add_root(obj)
        assert 'w00t' == obj.string
        doc.remove_root(obj)
        assert 'hello' == obj.string
        assert [('string', 'hello', 'w00t'),
                ('string', 'w00t', 'hello')] == changes['calls']
Ejemplo n.º 7
0
    def test_theming_a_document_before_adding_root(self):
        theme = Theme(json={'attrs': {'ThemedModel': {'string': 'w00t'}}})
        obj = ThemedModel()
        doc = Document()
        self.assertEqual('hello', obj.string)
        doc.theme = theme
        self.assertIs(doc.theme, theme)
        changes = dict(calls=[])

        def record_trigger(attr, old, new_):
            changes['calls'].append((attr, old, new_))

        obj.on_change('string', record_trigger)
        doc.add_root(obj)
        self.assertEqual('w00t', obj.string)
        doc.remove_root(obj)
        self.assertEqual('hello', obj.string)
        self.assertEqual([('string', 'hello', 'w00t'),
                          ('string', 'w00t', 'hello')], changes['calls'])
Ejemplo n.º 8
0
 def test_theming_a_document_before_adding_root(self):
     theme = Theme(json={
         'attrs' : {
             'ThemedModel' : {
                 'string' : 'w00t'
             }
         }
     })
     obj = ThemedModel()
     doc = Document()
     assert 'hello' == obj.string
     doc.theme = theme
     assert doc.theme is theme
     changes = dict(calls=[])
     def record_trigger(attr, old, new_):
         changes['calls'].append((attr, old, new_))
     obj.on_change('string', record_trigger)
     doc.add_root(obj)
     assert 'w00t' == obj.string
     doc.remove_root(obj)
     assert 'hello' == obj.string
     assert [('string', 'hello', 'w00t'), ('string', 'w00t', 'hello')] == changes['calls']
Ejemplo n.º 9
0
    def test_seen(self) -> None:
        d = Document()
        dm = d.models
        assert len(dm) == 0

        m1 = Div(id="m1")
        m2 = Div(id="m2")

        d.add_root(m1)
        d.add_root(m2)

        assert not dm.seen("m1")
        assert not dm.seen("m2")

        d.remove_root(m2)

        assert not dm.seen("m1")
        assert dm.seen("m2")

        d.remove_root(m1)

        assert dm.seen("m1")
        assert dm.seen("m2")
Ejemplo n.º 10
0
 def test_theming_a_document_before_adding_root(self):
     theme = Theme(json={
         'attrs' : {
             'ThemedModel' : {
                 'string' : 'w00t'
             }
         }
     })
     obj = ThemedModel()
     doc = Document()
     self.assertEqual('hello', obj.string)
     doc.theme = theme
     self.assertIs(doc.theme, theme)
     changes = dict(calls=[])
     def record_trigger(attr, old, new_):
         changes['calls'].append((attr, old, new_))
     obj.on_change('string', record_trigger)
     doc.add_root(obj)
     self.assertEqual('w00t', obj.string)
     doc.remove_root(obj)
     self.assertEqual('hello', obj.string)
     self.assertEqual([('string', 'hello', 'w00t'),
                       ('string', 'w00t', 'hello')], changes['calls'])
Ejemplo n.º 11
0
    def test_recompute(self) -> None:
        d = Document()
        dm = d.models
        assert len(dm) == 0

        r1 = Row(children=[Div(id="d1", name="dr1")])
        r2 = Row(children=[Div(id="d2", name="dr2"), Div(id="d3", name="dr2")])

        d.add_root(r1)
        d.add_root(r2)

        assert set(dm._models_by_name._dict) == {"dr1", "dr2"}

        for m in dm:
            assert m._document is d

        d.remove_root(r1)
        for m in dm:
            assert m._document is d

        assert r1._document is None
        assert r1.children[0]._document is None

        assert set(dm._models_by_name._dict) == {"dr2"}