def testGetSingle(self): doc = libxml2.parseDoc(testEntry) fragment = XMLFragment(doc) self.assertEqual(fragment.getSingle("/item/title").getFragment().content, "Test Post 1") self.assertEqual(fragment.getSingle("/item/category").getFragment().content, "XML") self.assertEqual(fragment.getSingle("/item/no-exist"), None)
def _increment(self, txn, record, params): self.log.debug("increment called") targetPath = params.getValue("param[@name='target-path']") keyPath = params.getValue("param[@name='key-path']") # We get the key data that we should look for in the related documents. targetID = record.getValue(keyPath) try: self.log.debug("increment retrieving record " + targetID) target = XMLFragment(self.getRecord(txn, targetID)) self.log.debug("increment record retrieved") result = target.getSingle(targetPath) # See whether we should update the count or add the element if result != None: count = int(result.getContent()) result.setContent(str(count + 1)) else: nodeName = targetPath.split("/")[-1] target.getRootElement().newChild(None, nodeName, "1") self.log.debug("increment saving modified record") self.updateRecord(txn, targetID, target.serialize()) except NotFoundError: self.log.warn("increment called for non-existent target")
def testGetValue(self): fragment = XMLFragment(testEntry) self.assertEqual(fragment.getValue("/item/title"), "Test Post 1") self.assertEqual(fragment.getValue("/item/category"), "XML") self.assertEqual(fragment.getValue("/item/category", "default"), "XML") self.assertEqual(fragment.getValue("/item/no-exist"), "") self.assertEqual(fragment.getValue("/item/no-exist", "default"), "default") # Test relative paths against nodes fragment2 = fragment.getSingle("/item") self.assertEqual(fragment2.getValue("title"), "Test Post 1") self.assertEqual(fragment2.getValue("category"), "XML") self.assertEqual(fragment2.getValue("no-exist", "default"), "default")
def _decrement(self, txn, record, params): self.log.debug("decrement called") targetPath = params.getValue("param[@name='target-path']") keyPath = params.getValue("param[@name='key-path']") # We get the key data that we should look for in the related documents. targetID = record.getValue(keyPath) try: target = XMLFragment(self.getRecord(txn, targetID)) result = target.getSingle(targetPath) if result != None: count = int(result.getContent()) - 1 if count < 0: count = 0 result.setContent(str(count)) self.updateRecord(txn, targetID, target.serialize()) except NotFoundError: self.log.warn("decrement called for non-existent target")