def test_apply(self):
     res = handler_resource("tag_team")
     hs = HistoryState("example", [res])
     ev = Event(
         {"path": "/handler.lua", "property": "comment", "value": "An arbitrary comment"}, identity("mitzi"), None
     )
     hs.apply(ev)
     self.assertEqual(res.comment, "An arbitrary comment")
     self.assertEqual(hs.hash, ev.hash())
    def test_create_interpreter(self):
        res = handler_resource("tag_team")
        hs = HistoryState("example", [res])
        interp = hs.create_interpreter()
        self.assertEqual(interp.can_read(identity("mitzi")), True)
        self.assertEqual(interp.can_write(identity("victor")), False)

        # Should not be the same/cached
        self.assertNotEqual(interp, hs.create_interpreter())
    def test_interpreter(self):
        res = handler_resource("tag_team")
        hs = HistoryState("example", [res])
        interp = hs.interpreter
        self.assertEqual(interp.can_read(identity("mitzi")), True)
        self.assertEqual(interp.can_write(identity("victor")), False)

        # Should be the same/cached
        self.assertEqual(interp, hs.interpreter)

        # Should not be the same/cached, after hash change
        hs.hash = "some other hash"
        self.assertNotEqual(interp, hs.interpreter)
    def setUp(self):
        self.mitzi = identity('mitzi')
        self.atlas = identity('atlas')

        self.res_default = Resource()
        self.res_tt      = handler_resource("tag_team")
        self.ev_default  = Event({'hello':'world'}, self.mitzi)
        self.ev_tt       = Event(
            {
                'path' : '/handler.lua',
                'property' : 'comment',
                'value' : 'An arbitrary comment',
            },
            self.atlas
        )
        self.hs1         = HistoryState(None, [self.res_default])
        self.hs2         = HistoryState("example", [self.res_default, self.res_tt])
 def test_handler(self):
     res = handler_resource("echo_chamber")
     hs = HistoryState("example", [res])
     self.assertEqual(hs.handler, res)