def testValidation(self): Entity._ally_listeners = {} validateAutoId(Entity.Id) validateRequired(Entity.Required) validateMaxLength(Entity.WithLength, 5) validateManaged(Entity.Managed) dummyService = DummyServiceEntity() proxySrvNonValid = proxyWrapFor(dummyService) proxySrv = proxyWrapFor(dummyService) bindValidations(proxySrv) assert isinstance(proxySrv, IServiceEntity) e = Entity() self.assertRaisesRegex(InputError, "(Entity.Required='Expected a value')", proxySrv.insert, e) self.assertEqual(proxySrvNonValid.insert(e), 'inserted') self.assertRaisesRegex(InputError, "(Entity.Id='Expected a value')", proxySrv.update, e) self.assertEqual(proxySrvNonValid.update(e), 'updated') e.Id = 'custom id' self.assertRaisesRegex(InputError, "(Entity.Id='No value expected')", proxySrv.insert, e) self.assertTrue(proxySrv.update(e) == 'updated') e = Entity() e.Required = 'Provided a value' self.assertTrue(proxySrv.insert(e) == 'inserted') e.Id = 'id' self.assertTrue(proxySrv.update(e) == 'updated') e = Entity() e.Required = 'required' e.WithLength = 'This is a longer text then 5' self.assertRaisesRegex(InputError, "(Entity.WithLength='Maximum length allowed is 5)", proxySrv.insert, e) e.WithLength = 'hello' self.assertTrue(proxySrv.insert(e) == 'inserted') e.WithLength = 'This is a longer text then 5' e.Id = 'id' self.assertRaisesRegex(InputError, "(Entity.WithLength='Maximum length allowed is 5)", proxySrv.update, e) e.WithLength = 'hello' self.assertTrue(proxySrv.update(e) == 'updated') e = Entity() e.Required = 'required' e.Managed = 'should not have value' self.assertRaisesRegex(InputError, "(Entity.Managed='No value expected')", proxySrv.insert, e) e.Id = 'id' self.assertRaisesRegex(InputError, "(Entity.Managed='No value expected')", proxySrv.update, e) self.assertRaises(AttributeError, getattr, proxySrv, '_hidden')
def registerService(service, binders=None): ''' A listener to register the service. @param service: object The service to be registered. @param binders: list[Callable]|tuple(Callable) The binders used for the registered services. ''' proxy = proxyWrapFor(service) if binders: for binder in binders: binder(proxy) services().append(proxy)