Mongomallard

This commit is contained in:
Thomas Steinacher 2013-06-13 16:41:04 -07:00
commit dcc5d3c858
24 changed files with 584 additions and 1102 deletions

View file

@ -48,41 +48,42 @@ class DeltaTest(unittest.TestCase):
doc.save()
doc = Doc.objects.first()
self.assertEqual(doc._get_changed_fields(), [])
self.assertEqual(doc._get_changed_fields(), set())
self.assertEqual(doc._delta(), ({}, {}))
doc.string_field = 'hello'
self.assertEqual(doc._get_changed_fields(), ['string_field'])
self.assertEqual(doc._get_changed_fields(), set(['string_field']))
self.assertEqual(doc._delta(), ({'string_field': 'hello'}, {}))
doc._changed_fields = []
doc._changed_fields = set()
doc.int_field = 1
self.assertEqual(doc._get_changed_fields(), ['int_field'])
self.assertEqual(doc._get_changed_fields(), set(['int_field']))
self.assertEqual(doc._delta(), ({'int_field': 1}, {}))
doc._changed_fields = []
doc._changed_fields = set()
dict_value = {'hello': 'world', 'ping': 'pong'}
doc.dict_field = dict_value
self.assertEqual(doc._get_changed_fields(), ['dict_field'])
self.assertEqual(doc._get_changed_fields(), set(['dict_field']))
self.assertEqual(doc._delta(), ({'dict_field': dict_value}, {}))
doc._changed_fields = []
doc._changed_fields = set()
list_value = ['1', 2, {'hello': 'world'}]
doc.list_field = list_value
self.assertEqual(doc._get_changed_fields(), ['list_field'])
self.assertEqual(doc._get_changed_fields(), set(['list_field']))
self.assertEqual(doc._delta(), ({'list_field': list_value}, {}))
# Test unsetting
doc._changed_fields = []
doc._changed_fields = set()
doc.dict_field = {}
self.assertEqual(doc._get_changed_fields(), ['dict_field'])
self.assertEqual(doc._get_changed_fields(), set(['dict_field']))
self.assertEqual(doc._delta(), ({}, {'dict_field': 1}))
doc._changed_fields = []
doc._changed_fields = set()
doc.list_field = []
self.assertEqual(doc._get_changed_fields(), ['list_field'])
self.assertEqual(doc._get_changed_fields(), set(['list_field']))
self.assertEqual(doc._delta(), ({}, {'list_field': 1}))
@unittest.skip("not fully implemented")
def test_delta_recursive(self):
self.delta_recursive(Document, EmbeddedDocument)
self.delta_recursive(DynamicDocument, EmbeddedDocument)
@ -109,7 +110,7 @@ class DeltaTest(unittest.TestCase):
doc.save()
doc = Doc.objects.first()
self.assertEqual(doc._get_changed_fields(), [])
self.assertEqual(doc._get_changed_fields(), set())
self.assertEqual(doc._delta(), ({}, {}))
embedded_1 = Embedded()
@ -119,7 +120,7 @@ class DeltaTest(unittest.TestCase):
embedded_1.list_field = ['1', 2, {'hello': 'world'}]
doc.embedded_field = embedded_1
self.assertEqual(doc._get_changed_fields(), ['embedded_field'])
self.assertEqual(doc._get_changed_fields(), set(['embedded_field']))
embedded_delta = {
'string_field': 'hello',
@ -136,7 +137,7 @@ class DeltaTest(unittest.TestCase):
doc.embedded_field.dict_field = {}
self.assertEqual(doc._get_changed_fields(),
['embedded_field.dict_field'])
set(['embedded_field.dict_field']))
self.assertEqual(doc.embedded_field._delta(), ({}, {'dict_field': 1}))
self.assertEqual(doc._delta(), ({}, {'embedded_field.dict_field': 1}))
doc.save()
@ -145,7 +146,7 @@ class DeltaTest(unittest.TestCase):
doc.embedded_field.list_field = []
self.assertEqual(doc._get_changed_fields(),
['embedded_field.list_field'])
set(['embedded_field.list_field']))
self.assertEqual(doc.embedded_field._delta(), ({}, {'list_field': 1}))
self.assertEqual(doc._delta(), ({}, {'embedded_field.list_field': 1}))
doc.save()
@ -160,7 +161,7 @@ class DeltaTest(unittest.TestCase):
doc.embedded_field.list_field = ['1', 2, embedded_2]
self.assertEqual(doc._get_changed_fields(),
['embedded_field.list_field'])
set(['embedded_field.list_field']))
self.assertEqual(doc.embedded_field._delta(), ({
'list_field': ['1', 2, {
@ -192,7 +193,7 @@ class DeltaTest(unittest.TestCase):
doc.embedded_field.list_field[2].string_field = 'world'
self.assertEqual(doc._get_changed_fields(),
['embedded_field.list_field.2.string_field'])
set(['embedded_field.list_field.2.string_field']))
self.assertEqual(doc.embedded_field._delta(),
({'list_field.2.string_field': 'world'}, {}))
self.assertEqual(doc._delta(),
@ -206,7 +207,7 @@ class DeltaTest(unittest.TestCase):
doc.embedded_field.list_field[2].string_field = 'hello world'
doc.embedded_field.list_field[2] = doc.embedded_field.list_field[2]
self.assertEqual(doc._get_changed_fields(),
['embedded_field.list_field'])
set(['embedded_field.list_field']))
self.assertEqual(doc.embedded_field._delta(), ({
'list_field': ['1', 2, {
'_cls': 'Embedded',
@ -269,7 +270,7 @@ class DeltaTest(unittest.TestCase):
doc.dict_field['Embedded'].string_field = 'Hello World'
self.assertEqual(doc._get_changed_fields(),
['dict_field.Embedded.string_field'])
set(['dict_field.Embedded.string_field']))
self.assertEqual(doc._delta(),
({'dict_field.Embedded.string_field': 'Hello World'}, {}))
@ -371,39 +372,39 @@ class DeltaTest(unittest.TestCase):
doc.save()
doc = Doc.objects.first()
self.assertEqual(doc._get_changed_fields(), [])
self.assertEqual(doc._get_changed_fields(), set())
self.assertEqual(doc._delta(), ({}, {}))
doc.string_field = 'hello'
self.assertEqual(doc._get_changed_fields(), ['db_string_field'])
self.assertEqual(doc._get_changed_fields(), set(['string_field']))
self.assertEqual(doc._delta(), ({'db_string_field': 'hello'}, {}))
doc._changed_fields = []
doc._changed_fields = set()
doc.int_field = 1
self.assertEqual(doc._get_changed_fields(), ['db_int_field'])
self.assertEqual(doc._get_changed_fields(), set(['int_field']))
self.assertEqual(doc._delta(), ({'db_int_field': 1}, {}))
doc._changed_fields = []
doc._changed_fields = set()
dict_value = {'hello': 'world', 'ping': 'pong'}
doc.dict_field = dict_value
self.assertEqual(doc._get_changed_fields(), ['db_dict_field'])
self.assertEqual(doc._get_changed_fields(), set(['dict_field']))
self.assertEqual(doc._delta(), ({'db_dict_field': dict_value}, {}))
doc._changed_fields = []
doc._changed_fields = set()
list_value = ['1', 2, {'hello': 'world'}]
doc.list_field = list_value
self.assertEqual(doc._get_changed_fields(), ['db_list_field'])
self.assertEqual(doc._get_changed_fields(), set(['list_field']))
self.assertEqual(doc._delta(), ({'db_list_field': list_value}, {}))
# Test unsetting
doc._changed_fields = []
doc._changed_fields = set()
doc.dict_field = {}
self.assertEqual(doc._get_changed_fields(), ['db_dict_field'])
self.assertEqual(doc._get_changed_fields(), set(['dict_field']))
self.assertEqual(doc._delta(), ({}, {'db_dict_field': 1}))
doc._changed_fields = []
doc._changed_fields = set()
doc.list_field = []
self.assertEqual(doc._get_changed_fields(), ['db_list_field'])
self.assertEqual(doc._get_changed_fields(), set(['list_field']))
self.assertEqual(doc._delta(), ({}, {'db_list_field': 1}))
# Test it saves that data
@ -415,13 +416,15 @@ class DeltaTest(unittest.TestCase):
doc.dict_field = {'hello': 'world'}
doc.list_field = ['1', 2, {'hello': 'world'}]
doc.save()
doc = doc.reload(10)
#doc = doc.reload(10)
doc = doc.reload()
self.assertEqual(doc.string_field, 'hello')
self.assertEqual(doc.int_field, 1)
self.assertEqual(doc.dict_field, {'hello': 'world'})
self.assertEqual(doc.list_field, ['1', 2, {'hello': 'world'}])
@unittest.skip("not fully implemented")
def test_delta_recursive_db_field(self):
self.delta_recursive_db_field(Document, EmbeddedDocument)
self.delta_recursive_db_field(Document, DynamicEmbeddedDocument)
@ -449,7 +452,7 @@ class DeltaTest(unittest.TestCase):
doc.save()
doc = Doc.objects.first()
self.assertEqual(doc._get_changed_fields(), [])
self.assertEqual(doc._get_changed_fields(), set())
self.assertEqual(doc._delta(), ({}, {}))
embedded_1 = Embedded()
@ -459,7 +462,7 @@ class DeltaTest(unittest.TestCase):
embedded_1.list_field = ['1', 2, {'hello': 'world'}]
doc.embedded_field = embedded_1
self.assertEqual(doc._get_changed_fields(), ['db_embedded_field'])
self.assertEqual(doc._get_changed_fields(), set(['embedded_field']))
embedded_delta = {
'db_string_field': 'hello',
@ -487,7 +490,7 @@ class DeltaTest(unittest.TestCase):
doc.embedded_field.list_field = []
self.assertEqual(doc._get_changed_fields(),
['db_embedded_field.db_list_field'])
set(['db_embedded_field.db_list_field']))
self.assertEqual(doc.embedded_field._delta(),
({}, {'db_list_field': 1}))
self.assertEqual(doc._delta(),
@ -605,6 +608,7 @@ class DeltaTest(unittest.TestCase):
self.assertEqual(doc._delta(), ({},
{'db_embedded_field.db_list_field.2.db_list_field': 1}))
@unittest.skip("DynamicDocument not implemented")
def test_delta_for_dynamic_documents(self):
class Person(DynamicDocument):
name = StringField()
@ -640,6 +644,7 @@ class DeltaTest(unittest.TestCase):
p.save()
self.assertEqual(1, self.Person.objects(age=24).count())
@unittest.skip("DynamicDocument not implemented")
def test_dynamic_delta(self):
class Doc(DynamicDocument):