summaryrefslogtreecommitdiff
path: root/test/test_core.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_core.py')
-rw-r--r--test/test_core.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/test_core.py b/test/test_core.py
index bc2828c..5feb9f1 100644
--- a/test/test_core.py
+++ b/test/test_core.py
@@ -14,6 +14,15 @@ fixture = {
}
+complex_fixture = {
+ 'name': 'Mixmaster',
+ 'properties': {
+ 'sub': {'type': 'object',
+ 'properties': {'foo': {'type': 'string'}}}
+ },
+}
+
+
class TestCore(unittest.TestCase):
def test_create_invalid_object(self):
Country = warlock.model_factory(fixture)
@@ -63,6 +72,49 @@ class TestCore(unittest.TestCase):
self.assertEqual(set(sweden.items()),
set([('name', 'Sweden'), ('population', 9379116)]))
+ def test_update(self):
+ Country = warlock.model_factory(fixture)
+ sweden = Country(name='Sweden', population=9379116)
+ exc = warlock.InvalidOperation
+ self.assertRaises(exc, sweden.update, {'population': 'N/A'})
+ self.assertRaises(exc, sweden.update, {'overloard': 'Bears'})
+
+ def test_deepcopy(self):
+ """Make sure we aren't leaking references."""
+ Mixmaster = warlock.model_factory(complex_fixture)
+ mike = Mixmaster(sub={'foo': 'mike'})
+
+ self.assertEquals(mike.sub['foo'], 'mike')
+
+ mike_1 = mike.copy()
+ mike_1['sub']['foo'] = 'james'
+ self.assertEquals(mike.sub['foo'], 'mike')
+
+ mike_2 = dict(mike.iteritems())
+ mike_2['sub']['foo'] = 'james'
+ self.assertEquals(mike.sub['foo'], 'mike')
+
+ mike_2 = dict(mike.items())
+ mike_2['sub']['foo'] = 'james'
+ self.assertEquals(mike.sub['foo'], 'mike')
+
+ mike_3_sub = list(mike.itervalues())[0]
+ mike_3_sub['foo'] = 'james'
+ self.assertEquals(mike.sub['foo'], 'mike')
+
+ mike_3_sub = list(mike.values())[0]
+ mike_3_sub['foo'] = 'james'
+ self.assertEquals(mike.sub['foo'], 'mike')
+
+ def test_forbidden_methods(self):
+ Country = warlock.model_factory(fixture)
+ sweden = Country(name='Sweden', population=9379116)
+ exc = warlock.InvalidOperation
+ self.assertRaises(exc, sweden.clear)
+ self.assertRaises(exc, sweden.pop, 0)
+ self.assertRaises(exc, sweden.popitem)
+ self.assertRaises(exc, sweden.__delitem__, 'name')
+
def test_dict_syntax(self):
Country = warlock.model_factory(fixture)
sweden = Country(name='Sweden', population=9379116)