def test_string_format(self): mapper = ClassMapper([], modules=[test01]) validator = ModelValidator(mapper) self.db = CouchDBWrapper(mapper, COUCHDB_URL, COUCHDB_NAME, reset=True, validator=validator) self.db.update_designs() paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") cat = Cat(name="puss", owner_id=paul.key, legs=3, email="*****@*****.**") cat.save(self.db) cat.email = "paulglowinthedark.co.uk" self.assertRaises(FamValidationError, self.db.put, cat) self.db.session.close()
def test_make_a_validator(self): mapper = ClassMapper([Dog, Cat, Person, JackRussell]) validator = ModelValidator(None, classes=[Dog, Cat, Person, JackRussell]) self.db = CouchDBWrapper(mapper, COUCHDB_URL, COUCHDB_NAME, reset=True, validator=validator) self.db.update_designs() paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") cat = Cat(name="puss", owner_id=paul.key) self.assertRaises(FamValidationError, cat.save, self.db) self.db.session.close()
def test_ref_to(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul")
def test_get_cat(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) another = Cat.get(self.db, cat.key) self.assertEqual(cat, another)
def test_make_a_validator_from_modules(self): mapper = ClassMapper([], modules=[test01]) validator = ModelValidator(classes=[Dog, Cat, Person, JackRussell]) self.db = CouchDBWrapper(mapper, COUCHDB_URL, COUCHDB_NAME, reset=True, validator=validator) self.db.update_designs() paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") #missing legs cat = Cat(name="puss", owner_id=paul.key) self.assertRaises(FamValidationError, cat.save, self.db) #additional properties def failing_cat(): cat = Cat(name="puss", owner_id=paul.key, legs=2, collar="green") self.assertRaises(FamValidationError, failing_cat) dog = Dog(name="fly") self.db.put(dog) dog.tail = "long" self.db.put(dog) self.db.session.close()
def test_ref_to(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul")
def test_make_a_validator_from_modules(self): mapper = ClassMapper([], modules=[test01]) validator = ModelValidator(mapper) self.db = CouchDBWrapper(mapper, COUCHDB_URL, COUCHDB_NAME, reset=True, validator=validator) self.db.update_designs() paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") #missing legs cat = Cat(name="puss", owner_id=paul.key) self.assertRaises(FamValidationError, cat.save, self.db) #additional properties def failing_cat(): cat = Cat(name="puss", owner_id=paul.key, legs=2, collar="green") self.assertRaises(FamValidationError, failing_cat) dog = Dog(name="fly") self.db.put(dog) dog.tail = "long" self.db.put(dog) self.db.session.close()
def test_get_cat(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) another = Cat.get(self.db, cat.key) self.assertEqual(cat, another)
def test_refs_with_inheritance(self): paul = Person(name="paul") paul.save(self.db) jack = JackRussell() jack.owner_id = paul.key jack.name = "jack" jack.save(self.db) self.assertEqual(list(paul.dogs)[0], jack)
def test_make_an_object_saved_cas(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) self.assertEqual(cat.namespace, NAMESPACE) self.assertEqual(cat.type, "cat") self.assertNotEqual(cat.rev, None)
def test_make_an_object_saved_cas(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) self.assertEqual(cat.namespace, NAMESPACE) self.assertEqual(cat.type, "cat") self.assertNotEqual(cat.rev, None)
def test_refs_with_inheritance(self): paul = Person(name="paul") paul.save(self.db) jack = JackRussell() jack.owner_id = paul.key jack.name = "jack" jack.save(self.db) self.assertEqual(list(paul.dogs)[0], jack)
def test_ref_from(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key) cat.save(self.db) cat2 = Cat(name="puss", owner_id=paul.key) cat2.save(self.db) self.assertEqual(len(paul.cats), 2) self.assertTrue(paul.cats[0] == cat or paul.cats[1] == cat)
def test_ref_from(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key) cat.save(self.db) cat2 = Cat(name="puss", owner_id=paul.key) cat2.save(self.db) self.assertEqual(len(paul.cats), 2) self.assertTrue(paul.cats[0] == cat or paul.cats[1] == cat)
def test_update_cat(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) cat.name = "blackie" cat.save(self.db) self.assertEqual(cat.name, "blackie") self.assertEqual(cat._properties["name"], "blackie") self.assertFalse("name" in cat.__dict__.keys())
def test_delete_cat_refs(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) key = cat.key cat2 = Cat(name="puss", owner_id=paul.key, legs=2) cat2.save(self.db) cats = list(paul.cats)
def test_null_values(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, colour=None) self.assertTrue(cat.colour is None) self.assertTrue(cat._properties["colour"] is None) cat.save(self.db) another = Cat.get(self.db, cat.key) self.assertEqual(cat, another)
def test_update_cat_fails(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) cat.colour = "black" cat.save(self.db) def change_colour(): cat.colour = "white" self.assertRaises(FamImmutableError, change_colour)
def test_update_cat(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) cat.name = "blackie" cat.save(self.db) self.assertEqual(cat.name, "blackie") self.assertEqual(cat._properties["name"], "blackie") self.assertFalse("name" in cat.__dict__.keys())
def test_update_cat_fails(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) cat.colour = "black" cat.save(self.db) def change_colour(): cat.colour = "white" self.assertRaises(FamImmutableError, change_colour)
def test_delete_dog_refs(self): paul = Person(name="paul") paul.save(self.db) dog = Dog(name="rufus", owner_id=paul.key) dog.save(self.db) key = dog.key dog2 = Dog(name="fly", owner_id=paul.key) dog2.save(self.db) reviveddog1 = self.db.get(key) self.assertTrue(reviveddog1 is not None) paul.delete(self.db) reviveddog2 = self.db.get(key) self.assertTrue(reviveddog2 is not None)
def test_delete_cat_refs(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key) cat.save(self.db) key = cat.key cat2 = Cat(name="puss", owner_id=paul.key) cat2.save(self.db) revivedcat1 = self.db.get(key) self.assertNotEqual(revivedcat1, None) paul.delete(self.db) revivedcat2 = self.db.get(key) self.assertEqual(revivedcat2, None)
def test_ref_from_multiple_index(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) dog = Dog(name="fly", owner=paul) self.db.put(dog) cats = list(paul.cats) self.assertEqual(len(cats), 1) dogs = list(paul.dogs) self.assertEqual(len(dogs), 1) animals = list(paul.animals) self.assertEqual(len(animals), 2)
def test_ref_from_multiple_index(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) dog = Dog(name="fly", owner=paul) self.db.put(dog) cats = list(paul.cats) self.assertEqual(len(cats), 1) dogs = list(paul.dogs) self.assertEqual(len(dogs), 1) animals = list(paul.animals) self.assertEqual(len(animals), 2)
def test_delete_dog_refs(self): paul = Person(name="paul") paul.save(self.db) dog = Dog(name="rufus", owner_id=paul.key) dog.save(self.db) key = dog.key dog2 = Dog(name="fly", owner_id=paul.key) dog2.save(self.db) reviveddog1 = self.db.get(key) self.assertTrue(reviveddog1 is not None) paul.delete(self.db) reviveddog2 = self.db.get(key) self.assertTrue(reviveddog2 is not None)
def test_delete_cat_refs(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key) cat.save(self.db) key = cat.key cat2 = Cat(name="puss", owner_id=paul.key) cat2.save(self.db) revivedcat1 = self.db.get(key) self.assertNotEqual(revivedcat1, None) paul.delete(self.db) revivedcat2 = self.db.get(key) self.assertEqual(revivedcat2, None)
def test_delete_dog_to_refs(self): paul = Person(name="paul") paul.save(self.db) dog = Dog(name="rufus", owner_id=paul.key) dog.save(self.db) key = dog.key dog2 = Dog(name="fly", owner_id=paul.key) dog2.save(self.db) self.assertTrue(dog2.owner is not None) key = paul.key dog.delete(self.db) revivedpaul = self.db.get(key) self.assertTrue(revivedpaul is None) refresheddog2 = Dog.get(self.db, dog2.key) self.assertTrue(refresheddog2.owner is None)
def test_delete_cat_refs(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) key = cat.key cat2 = Cat(name="puss", owner_id=paul.key, legs=2) cat2.save(self.db) revivedcat1 = Cat.get(self.db, key) self.assertTrue(revivedcat1 is not None) paul.delete(self.db) revivedcat2 = self.db.get(key) self.assertTrue(revivedcat2 is None)
def test_make_a_validator_from_modules(self): validator = ModelValidator(modules=[test01]) #add validator to db self.db.validator = validator paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") cat = Cat(name="puss", owner_id=paul.key) self.assertRaises(FamValidationError, cat.save, self.db)
def test_delete_dog_to_refs(self): paul = Person(name="paul") paul.save(self.db) dog = Dog(name="rufus", owner_id=paul.key) dog.save(self.db) key = dog.key dog2 = Dog(name="fly", owner_id=paul.key) dog2.save(self.db) self.assertTrue(dog2.owner is not None) key = paul.key dog.delete(self.db) revivedpaul = self.db.get(key) self.assertTrue(revivedpaul is None) refresheddog2 = Dog.get(self.db, dog2.key) self.assertTrue(refresheddog2.owner is None)
def test_delete_cat_refs(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) key = cat.key cat2 = Cat(name="puss", owner_id=paul.key, legs=2) cat2.save(self.db) revivedcat1 = Cat.get(self.db, key) self.assertTrue(revivedcat1 is not None) paul.delete(self.db) revivedcat2 = self.db.get(key) self.assertTrue(revivedcat2 is None)
def test_make_a_validator_from_classes(self): validator = ModelValidator(None, classes=[Cat, Person]) #add validator to db self.db.validator = validator paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") cat = Cat(name="puss", owner_id=paul.key) self.assertRaises(FamValidationError, cat.save, self.db)
def test_make_a_validator(self): mapper = ClassMapper([Dog, Cat, Person, JackRussell]) validator = ModelValidator(classes=[Dog, Cat, Person, JackRussell]) self.db = CouchDBWrapper(mapper, COUCHDB_URL, COUCHDB_NAME, reset=True, validator=validator) self.db.update_designs() paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") cat = Cat(name="puss", owner_id=paul.key) self.assertRaises(FamValidationError, cat.save, self.db) self.db.session.close()
def test_included_refs_from_in_validator(self): mapper = ClassMapper([], modules=[test01]) validator = ModelValidator(modules=[test01]) self.db = CouchDBWrapper(mapper, COUCHDB_URL, COUCHDB_NAME, reset=True, validator=validator) self.db.update_designs() paul = Person(name="paul") paul.save(self.db) paul_id = paul.key cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") paul = Person.get(self.db, paul_id) paul.save(self.db) self.db.session.close()
def test_string_format(self): mapper = ClassMapper([], modules=[test01]) validator = ModelValidator(modules=[test01]) self.db = CouchDBWrapper(mapper, COUCHDB_URL, COUCHDB_NAME, reset=True, validator=validator) self.db.update_designs() paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") cat = Cat(name="puss", owner_id=paul.key, legs=3, email="*****@*****.**") cat.save(self.db) cat.email = "paulglowinthedark.co.uk" self.assertRaises(FamValidationError, self.db.put, cat) self.db.session.close()
def test_make_a_validator(self): validator = ModelValidator(None) validator.add_schema(test01.NAMESPACE, "cat", Cat) validator.add_schema(test01.NAMESPACE, "person", Person) #add validator to db self.db.validator = validator paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") cat = Cat(name="puss", owner_id=paul.key) self.assertRaises(FamValidationError, cat.save, self.db)
def test_make_a_validator(self): validator = ModelValidator() validator.add_schema(test01.NAMESPACE, "cat", Cat) validator.add_schema(test01.NAMESPACE, "person", Person) #add validator to db self.db.validator = validator paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") cat = Cat(name="puss", owner_id=paul.key) self.assertRaises(FamValidationError, cat.save, self.db)
def test_included_refs_from_in_validator(self): mapper = ClassMapper([], modules=[test01]) validator = ModelValidator(mapper) self.db = CouchDBWrapper(mapper, COUCHDB_URL, COUCHDB_NAME, reset=True, validator=validator) self.db.update_designs() paul = Person(name="paul") paul.save(self.db) paul_id = paul.key cat = Cat(name="whiskers", owner_id=paul.key, legs=4) cat.save(self.db) self.assertEqual(cat.owner, paul) self.assertEqual(cat.owner.name, "paul") paul = Person.get(self.db, paul_id) paul.save(self.db) self.db.session.close()
def test_immutability_on_non_existant_value(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(legs=4, owner=paul) self.make_red(cat)
def test_immutability(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(colour="tabby", legs=4, owner=paul) self.assertRaises(FamImmutableError, self.make_red, cat)
def test_update_catfood(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) self.assertRaises(Exception, self.setcatfood)
def test_immutable_defaults(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(legs=4, owner=paul) self.assertTrue(cat.tail == True) self.assertRaises(FamImmutableError, self.cut_off_tail, cat)
def test_update_catfood(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(name="whiskers", owner_id=paul.key, legs=2) cat.save(self.db) self.assertRaises(Exception, self.setcatfood)
def test_getting_unknown_fails(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(legs=4, owner=paul) self.assertRaises(AttributeError, self.get_address, cat)
def test_getting_absent_no_defaults_returns_none(self): paul = Person(name="paul") paul.save(self.db) cat = Cat(legs=4, owner=paul) name = cat.name self.assertEqual(name, None)