def test_get_meta_diff(self): item = self.imw[self.item_name] rev1 = item.store_revision(dict(name=[self.item_name, ]), StringIO(u'x'), trusted=True, return_rev=True) notification = Notification(app, self.item_name, [rev1], action=ACTION_SAVE) assert notification.get_meta_diff() == dict_diff(dict(), rev1.meta._meta) rev2 = item.store_revision(dict(name=[self.item_name, ]), StringIO(u'xx'), trusted=True, return_rev=True) notification = Notification(app, self.item_name, [rev2, rev1], action=ACTION_SAVE) assert notification.get_meta_diff() == dict_diff(rev1.meta._meta, rev2.meta._meta) actions = [DESTROY_REV, DESTROY_ALL, ACTION_TRASH, ] for action in actions: notification = Notification(app, self.item_name, [rev2, rev1], meta=rev2.meta, action=action) assert notification.get_meta_diff() == dict_diff(rev2.meta._meta, dict())
def test_get_meta_diff(self): item = self.imw[self.item_name] rev1 = item.store_revision(dict(name=[ self.item_name, ]), StringIO(u'x'), trusted=True, return_rev=True) notification = Notification(app, self.fqname, [rev1], action=ACTION_SAVE) assert notification.get_meta_diff() == dict_diff( dict(), rev1.meta._meta) rev2 = item.store_revision(dict(name=[ self.item_name, ]), StringIO(u'xx'), trusted=True, return_rev=True) notification = Notification(app, self.fqname, [rev2, rev1], action=ACTION_SAVE) assert notification.get_meta_diff() == dict_diff( rev1.meta._meta, rev2.meta._meta) actions = [ DESTROY_REV, DESTROY_ALL, ACTION_TRASH, ] for action in actions: notification = Notification(app, self.fqname, [rev2, rev1], meta=rev2.meta, action=action) assert notification.get_meta_diff() == dict_diff( rev2.meta._meta, dict())
def get_meta_diff(self): """ Create a meta diff for the last item change :return: a list of tuples of the format (<change type>, <basekeys>, <value>) that can be used to format a diff """ if self.action in [ACTION_TRASH, DESTROY_REV, DESTROY_ALL, ]: old_meta, new_meta = dict(self.meta), dict() else: new_meta = dict(self.revs[0].meta) if len(self.revs) == 1: old_meta = dict() else: old_meta = dict(self.revs[1].meta) meta_diff = dict_diff(old_meta, new_meta) return meta_diff