def test_can_specify_a_view_decorator(self): def dummy_decorator(view): return view service = Service("coconuts", "/migrate", decorator=dummy_decorator) args = service.get_arguments({}) self.assertEqual(args['decorator'], dummy_decorator) # make sure Service.decorator() still works @service.decorator('put') def dummy_view(request): return "data" self.assertTrue(any(view is dummy_view for method, view, args in service.definitions))
def test_get_arguments(self): service = Service("coconuts", "/migrate") # not specifying anything, we should get the default values args = service.get_arguments({}) for arg in Service.mandatory_arguments: self.assertEquals(args[arg], getattr(Service, arg, None)) # calling this method on a configured service should use the values # passed at instanciation time as default values service = Service("coconuts", "/migrate", renderer="html") args = service.get_arguments({}) self.assertEquals(args['renderer'], 'html') # if we specify another renderer for this service, despite the fact # that one is already set in the instance, this one should be used args = service.get_arguments({'renderer': 'foobar'}) self.assertEquals(args['renderer'], 'foobar') # test that list elements are not overwritten # define a validator for the needs of the test service = Service("vaches", "/fetchez", validators=(_validator, )) self.assertEquals(len(service.validators), 1) args = service.get_arguments({'validators': (_validator2, )}) # the list of validators didn't changed self.assertEquals(len(service.validators), 1) # but the one returned contains 2 validators self.assertEquals(len(args['validators']), 2) # test that exclude effectively removes the items from the list of # validators / filters it returns, without removing it from the ones # registered for the service. service = Service("open bar", "/bar", validators=(_validator, _validator2)) self.assertEquals(service.validators, [_validator, _validator2]) args = service.get_arguments({"exclude": _validator2}) self.assertEquals(args['validators'], [_validator]) # defining some non-mandatory arguments in a service should make # them available on further calls to get_arguments. service = Service("vaches", "/fetchez", foobar="baz") self.assertIn("foobar", service.arguments) self.assertIn("foobar", service.get_arguments())
def test_get_arguments(self): service = Service("coconuts", "/migrate") # not specifying anything, we should get the default values args = service.get_arguments({}) for arg in Service.mandatory_arguments: self.assertEquals(args[arg], getattr(Service, arg, None)) # calling this method on a configured service should use the values # passed at instanciation time as default values service = Service("coconuts", "/migrate", renderer="html") args = service.get_arguments({}) self.assertEquals(args['renderer'], 'html') # if we specify another renderer for this service, despite the fact # that one is already set in the instance, this one should be used args = service.get_arguments({'renderer': 'foobar'}) self.assertEquals(args['renderer'], 'foobar') # test that list elements are not overwritten # define a validator for the needs of the test service = Service("vaches", "/fetchez", validators=(_validator,)) self.assertEquals(len(service.validators), 1) args = service.get_arguments({'validators': (_validator2,)}) # the list of validators didn't changed self.assertEquals(len(service.validators), 1) # but the one returned contains 2 validators self.assertEquals(len(args['validators']), 2) # test that exclude effectively removes the items from the list of # validators / filters it returns, without removing it from the ones # registered for the service. service = Service("open bar", "/bar", validators=(_validator, _validator2)) self.assertEquals(service.validators, [_validator, _validator2]) args = service.get_arguments({"exclude": _validator2}) self.assertEquals(args['validators'], [_validator]) # defining some non-mandatory arguments in a service should make # them available on further calls to get_arguments. service = Service("vaches", "/fetchez", foobar="baz") self.assertIn("foobar", service.arguments) self.assertIn("foobar", service.get_arguments())