Example #1
0
 def test_delitem_does_not_work_on_orphans(self):
     doc = Document({"item": {"nested": "value"}})
     fragment = doc['item']
     doc.value = {}
     self.assertTrue(fragment.is_orphaned)
     self.assertRaises(OrphanedFragmentError, fragment.__delitem__,
                       "nested")
Example #2
0
 def __getattribute__(self, name) :
     _fields = Document.__getattribute__(self, '_fields')
     if name in _fields:
         if isinstance(_fields[name], JSONObjectField) or \
             isinstance(_fields[name], JSONListField):
             return FragmentProxy(self[name])
         return self[name].value
     return Document.__getattribute__(self, name)
 def __getattribute__(self, name):
     _fields = Document.__getattribute__(self, '_fields')
     if name in _fields:
         if isinstance(_fields[name], JSONObjectField) or \
             isinstance(_fields[name], JSONListField):
             return FragmentProxy(self[name])
         return self[name].value
     return Document.__getattribute__(self, name)
Example #4
0
 def test_delitem_undefaults(self):
     doc = Document(DefaultValue, {'default': {"foo": "bar"}})
     self.assertEqual(doc['foo'].value, "bar")
     self.assertTrue(doc.is_default)
     del doc["foo"]
     self.assertEqual(doc['foo'].value, "bar")
     self.assertFalse(doc.is_default)
Example #5
0
 def test_deeply_nested_defaults_unwind(self):
     doc = Document(value={},
                    schema={
                        "type": "object",
                        "default": {},
                        "properties": {
                            "a": {
                                "type": "object",
                                "default": {},
                                "properties": {
                                    "b": {
                                        "type": "object",
                                        "default": {},
                                        "properties": {
                                            "c": {
                                                "type": "integer",
                                                "default": 0
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    })
     self.assertEqual(doc._value, {})
     self.assertTrue(doc['a']['b']['c'].is_default)
     self.assertEqual(doc['a']['b']['c'].value, 0)
     self.assertEqual(doc._value, {})
     doc['a']['b']['c'].value = 0
     self.assertFalse(doc['a']['b']['c'].is_default)
     self.assertEqual(doc._value, {'a': {'b': {'c': 0}}})
Example #6
0
 def test_delitem_removes_data(self):
     # NOTE: I use Document, insted of DocumentFragment, as here the
     # document revision gets bumped and I did not want to mock that
     doc = Document({"item": "value"})
     del doc['item']
     self.assertTrue("item" not in doc._value)
     self.assertTrue("item" not in doc._fragment_cache)
Example #7
0
 def __delattr__(self, item):
     if hasattr(self, '_fields') and item in self._fields:
         del self[item]
     else:
         return Document.__delattr__(self, item)
Example #8
0
 def test_delitem_bumps_document_revision(self):
     doc = Document({"item": "value"})
     before = doc._revision
     del doc['item']
     after = doc._revision
     self.assertNotEqual(before, after)
Example #9
0
 def __setattr__(self, key, value):
     if hasattr(self, '_fields') and key in self._fields:
         self[key] = value
     else:
         return Document.__setattr__(self, key, value)
 def __setattr__(self, key, value):
     if hasattr(self, '_fields') and key in self._fields:
         self[key] = value
     else:
         return Document.__setattr__(self, key, value)
 def __delattr__(self, item):
     if hasattr(self, '_fields') and item in self._fields:
         del self[item]
     else:
         return Document.__delattr__(self, item)
Example #12
0
 def test_is_orphaned(self):
     doc = Document({})
     doc["foo"] = "value"
     foo = doc["foo"]
     doc.value = {}
     self.assertTrue(foo.is_orphaned)
Example #13
0
 def test_document_has_initial_revision(self):
     doc = Document({})
     self.assertEqual(doc.revision, 0)
Example #14
0
 def test_delitem_does_not_work_on_orphans(self):
     doc = Document({"item": {"nested": "value"}})
     fragment = doc['item']
     doc.value = {}
     self.assertTrue(fragment.is_orphaned)
     self.assertRaises(OrphanedFragmentError, fragment.__delitem__, "nested")
Example #15
0
 def test_document_is_valid_initially(self):
     doc = Document({})
     try:
         doc.validate()
     except ValidationError:
         self.fail("Document was not valid")
Example #16
0
 def test_delitem_orphans_fragments(self):
     doc = Document({"item": "value"})
     fragment = doc['item']
     del doc['item']
     self.assertTrue(fragment.is_orphaned)
Example #17
0
 def test_is_orphaned(self):
     doc = Document({})
     doc["foo"] = "value"
     foo = doc["foo"]
     doc.value = {}
     self.assertTrue(foo.is_orphaned)
Example #18
0
 def test_document_has_no_item(self):
     doc = Document({})
     self.assertIs(doc._item, None)
Example #19
0
 def test_document_is_its_own_document(self):
     doc = Document({})
     self.assertIs(doc._document, doc)
Example #20
0
 def test_document_initial_schema(self):
     doc = Document({})
     self.assertEqual(doc.document_schema, {"type": "any"})
Example #21
0
 def test_document_is_valid_initially(self):
     doc = Document({})
     try:
         doc.validate()
     except ValidationError:
         self.fail("Document was not valid")
Example #22
0
 def test_document_is_empty_initially(self):
     doc = Document({})
     self.assertEqual(doc._value, {})