Example #1
0
 def test_create_model_changed(self):
     sample = self._sample_doc()
     obj = next(iter(sample.roots))
     event = document.ModelChangedEvent(sample, obj, 'foo', obj.foo, 42)
     Protocol("1.0").create("PATCH-DOC", [event])
    def test_should_suppress_model_changed(self):
        sample = self._sample_doc()
        root = None
        other_root = None
        for r in sample.roots:
            if r.child is not None:
                root = r
            else:
                other_root = r
        assert root is not None
        assert other_root is not None
        new_child = AnotherModelInTestPatchDoc(bar=56)

        # integer property changed
        event1 = document.ModelChangedEvent(sample, root, 'foo', root.foo, 42,
                                            42)
        msg = Protocol("1.0").create("PATCH-DOC", [event1])
        assert msg.should_suppress_on_change(event1)
        assert not msg.should_suppress_on_change(
            document.ModelChangedEvent(sample, root, 'foo', root.foo, 43, 43))
        assert not msg.should_suppress_on_change(
            document.ModelChangedEvent(sample, root, 'bar', root.foo, 43, 43))
        assert not msg.should_suppress_on_change(
            document.ModelChangedEvent(sample, other_root, 'foo', root.foo, 43,
                                       43))

        # Model property changed
        event2 = document.ModelChangedEvent(sample, root, 'child', root.child,
                                            new_child, new_child)
        msg2 = Protocol("1.0").create("PATCH-DOC", [event2])
        assert msg2.should_suppress_on_change(event2)
        assert not msg2.should_suppress_on_change(
            document.ModelChangedEvent(sample, root, 'child', root.child,
                                       other_root, other_root))
        assert not msg2.should_suppress_on_change(
            document.ModelChangedEvent(sample, root, 'blah', root.child,
                                       new_child, new_child))
        assert not msg2.should_suppress_on_change(
            document.ModelChangedEvent(sample, other_root, 'child',
                                       other_root.child, new_child, new_child))

        # Model property changed to None
        event3 = document.ModelChangedEvent(sample, root, 'child', root.child,
                                            None, None)
        msg3 = Protocol("1.0").create("PATCH-DOC", [event3])
        assert msg3.should_suppress_on_change(event3)
        assert not msg3.should_suppress_on_change(
            document.ModelChangedEvent(sample, root, 'child', root.child,
                                       other_root, other_root))
        assert not msg3.should_suppress_on_change(
            document.ModelChangedEvent(sample, root, 'blah', root.child, None,
                                       None))
        assert not msg3.should_suppress_on_change(
            document.ModelChangedEvent(sample, other_root, 'child',
                                       other_root.child, None, None))

        # Model property changed from None
        event4 = document.ModelChangedEvent(sample, other_root, 'child',
                                            other_root.child, None, None)
        msg4 = Protocol("1.0").create("PATCH-DOC", [event4])
        assert msg4.should_suppress_on_change(event4)
        assert not msg4.should_suppress_on_change(
            document.ModelChangedEvent(sample, other_root, 'child',
                                       other_root.child, root, root))
        assert not msg4.should_suppress_on_change(
            document.ModelChangedEvent(sample, other_root, 'blah',
                                       other_root.child, None, None))
        assert not msg4.should_suppress_on_change(
            document.ModelChangedEvent(sample, root, 'child', other_root.child,
                                       None, None))

        # RootAdded
        event5 = document.RootAddedEvent(sample, root)
        msg5 = Protocol("1.0").create("PATCH-DOC", [event5])
        assert msg5.should_suppress_on_change(event5)
        assert not msg5.should_suppress_on_change(
            document.RootAddedEvent(sample, other_root))
        assert not msg5.should_suppress_on_change(
            document.RootRemovedEvent(sample, root))

        # RootRemoved
        event6 = document.RootRemovedEvent(sample, root)
        msg6 = Protocol("1.0").create("PATCH-DOC", [event6])
        assert msg6.should_suppress_on_change(event6)
        assert not msg6.should_suppress_on_change(
            document.RootRemovedEvent(sample, other_root))
        assert not msg6.should_suppress_on_change(
            document.RootAddedEvent(sample, root))

        # ColumnsStreamed
        event7 = document.ModelChangedEvent(sample,
                                            root,
                                            'data',
                                            10,
                                            None,
                                            None,
                                            hint=document.ColumnsStreamedEvent(
                                                sample, root, {}, None))
        msg7 = Protocol("1.0").create("PATCH-DOC", [event7])
        assert msg7.should_suppress_on_change(event7)
        assert not msg7.should_suppress_on_change(
            document.ModelChangedEvent(sample,
                                       root,
                                       'data',
                                       10,
                                       None,
                                       None,
                                       hint=document.ColumnsStreamedEvent(
                                           sample, root, {}, 10)))
        assert not msg7.should_suppress_on_change(
            document.ModelChangedEvent(sample,
                                       root,
                                       'data',
                                       10,
                                       None,
                                       None,
                                       hint=document.ColumnsStreamedEvent(
                                           sample, root, {"a": [10]}, None)))
        assert not msg7.should_suppress_on_change(
            document.ModelChangedEvent(sample,
                                       root,
                                       'data',
                                       10,
                                       None,
                                       None,
                                       hint=document.ColumnsStreamedEvent(
                                           sample, other_root, {}, None)))

        # ColumnsPatched
        event8 = document.ModelChangedEvent(sample,
                                            root,
                                            'data',
                                            10,
                                            None,
                                            None,
                                            hint=document.ColumnsPatchedEvent(
                                                sample, root,
                                                {"a": [(0, 11)]}))
        msg8 = Protocol("1.0").create("PATCH-DOC", [event8])
        assert msg8.should_suppress_on_change(event8)
        assert not msg8.should_suppress_on_change(
            document.ModelChangedEvent(sample,
                                       root,
                                       'data',
                                       10,
                                       None,
                                       None,
                                       hint=document.ColumnsPatchedEvent(
                                           sample, root, {})))
        assert not msg8.should_suppress_on_change(
            document.ModelChangedEvent(sample,
                                       root,
                                       'data',
                                       10,
                                       None,
                                       None,
                                       hint=document.ColumnsPatchedEvent(
                                           sample, root, {"a": [(0, 10)]})))
        assert msg8.should_suppress_on_change(
            document.ModelChangedEvent(sample,
                                       root,
                                       'data',
                                       10,
                                       None,
                                       None,
                                       hint=document.ColumnsPatchedEvent(
                                           sample, root, {"a": [(0, 11)]})))
        assert not msg8.should_suppress_on_change(
            document.ModelChangedEvent(sample,
                                       root,
                                       'data',
                                       10,
                                       None,
                                       None,
                                       hint=document.ColumnsPatchedEvent(
                                           sample, other_root, {})))