def test_registration_ok(self): '''This test case ensures all resources are registered correctly.''' registrator = ResourcesRegistrator(Mock(), file_patterns=["simple_resource.py"], folder_pattern=["tests/"]) root_folder = instantiator.get_class_abslocation(SettingsFacade) registrator.register_resources(root_folder) registry = ResourcesRegistry() resource = registry.find_by_name("Simple Resource") self.assertIsNotNone(resource) self.assertEqual(resource.name, "Simple Resource") self.assertEqual(resource.version, 1.0) self.assertEqual(resource.url, "/simple-resources") self.assertEqual(resource.subresources, {"address": ["address_id"]}) model = resource.model self.assertIsNotNone(model) from fantastico.roa.tests.simple_resource import SimpleResource self.assertEqual(model, SimpleResource)
def test_registration_ok(self): '''This test case ensures all resources are registered correctly.''' registrator = ResourcesRegistrator( Mock(), file_patterns=["simple_resource.py"], folder_pattern=["tests/"]) root_folder = instantiator.get_class_abslocation(SettingsFacade) registrator.register_resources(root_folder) registry = ResourcesRegistry() resource = registry.find_by_name("Simple Resource") self.assertIsNotNone(resource) self.assertEqual(resource.name, "Simple Resource") self.assertEqual(resource.version, 1.0) self.assertEqual(resource.url, "/simple-resources") self.assertEqual(resource.subresources, {"address": ["address_id"]}) model = resource.model self.assertIsNotNone(model) from fantastico.roa.tests.simple_resource import SimpleResource self.assertEqual(model, SimpleResource)
def test_find_resource_by_name_notfound(self): '''This test case ensures no exception is raised when we try to retrieve a resource which is not registered.''' registry = ResourcesRegistry() resource = registry.find_by_name("app-setting", 1.0) self.assertIsNone(resource)
def test_find_resource_by_url_notofound(self): '''This test case ensures None is returned if the resource can not be found by url.''' registry = ResourcesRegistry() resource = registry.find_by_url("/app-settings", "latest") self.assertIsNone(resource)
def test_unregister_resource_namenotfound(self): '''This test case ensures no exception is raised if the given resource name is not registered.''' registry = ResourcesRegistry() registry.unregister_resource("not_found", 1.0) self.assertIsNone(registry.find_by_name("not_found", 1.0))
def _register_resource_duplicate(self, resource1, resource2): '''This method executes register resource test case for duplicate exception.''' registry = ResourcesRegistry() registry.register_resource(resource1) with self.assertRaises(FantasticoRoaDuplicateError): registry.register_resource(resource2)
def test_find_resource_by_url_version_notfound(self): '''This test case ensures None is returned if the resource url is found but the requested version is not registered.''' registry = ResourcesRegistry() registry.register_resource(Resource(name="app-setting", url="/app-settings", version="1.0")) resource = registry.find_by_url("/app-settings", 2.0) self.assertIsNone(resource)
def test_find_resource_by_name_version_notfound(self): '''This test case ensures no exception is raised when we try to retrieve a resource which does not have the version requested registered.''' registry = ResourcesRegistry() registry.register_resource(Resource(name="app-setting", url="/app-settings")) resource = registry.find_by_name("app-setting", 2.0) self.assertIsNone(resource)
def test_find_resource_by_url_version_notfound(self): '''This test case ensures None is returned if the resource url is found but the requested version is not registered.''' registry = ResourcesRegistry() registry.register_resource( Resource(name="app-setting", url="/app-settings", version="1.0")) resource = registry.find_by_url("/app-settings", 2.0) self.assertIsNone(resource)
def test_find_resource_by_name_version_notfound(self): '''This test case ensures no exception is raised when we try to retrieve a resource which does not have the version requested registered.''' registry = ResourcesRegistry() registry.register_resource( Resource(name="app-setting", url="/app-settings")) resource = registry.find_by_name("app-setting", 2.0) self.assertIsNone(resource)
def _find_resource_by_name(self, name, version): '''This method provides a test case template for find by name method.''' resource = Resource(name=name, url="/%ss" % name) registry = ResourcesRegistry() registry.register_resource(resource) if version != "latest": found_resource = registry.find_by_name(name, version) else: found_resource = registry.find_by_name(name) self.assertEqual(resource.name, found_resource.name) self.assertEqual(resource.version, found_resource.version) self.assertEqual(resource.url, found_resource.url) self.assertEqual(resource.model, found_resource.model)
def _find_resource_by_url(self, url, version): '''This method provides a test case template for find by url method.''' resource = Resource(name=url[1:-1], url=url) registry = ResourcesRegistry() registry.register_resource(resource) if version != "latest": found_resource = registry.find_by_url(url, version) else: found_resource = registry.find_by_url(url) self.assertEqual(resource.name, found_resource.name) self.assertEqual(resource.version, found_resource.version) self.assertEqual(resource.url, found_resource.url) self.assertEqual(resource.model, found_resource.model)
def test_unregister_resource_noremaining_version(self): '''This test case ensures latest version is also removed when all resource versions are removed.''' registry = ResourcesRegistry() expected_name = "app-setting" expected_url = "/app-setting" resource1 = Resource(name=expected_name, url=expected_url, version=1.0) registry.register_resource(resource1) self.assertEqual(registry.find_by_name(expected_name), resource1) self.assertEqual(registry.find_by_url(expected_url), resource1) registry.unregister_resource(expected_name, version=1.0) self.assertIsNone(registry.find_by_name(expected_name)) self.assertIsNone(registry.find_by_url(expected_url))
def test_unregister_resource_ok(self): '''This test case ensures unregister is ok for registered resources.''' registry = ResourcesRegistry() expected_name = "app-setting" expected_url = "/app-setting" resource1 = Resource(name=expected_name, url=expected_url, version=1.0) resource2 = Resource(name=expected_name, url=expected_url, version=2.0) registry.register_resource(resource1) registry.register_resource(resource2) registry.unregister_resource(expected_name, 2.0) self.assertIsNone(registry.find_by_name(expected_name, 2.0)) self.assertIsNone(registry.find_by_url(expected_url, 2.0)) self.assertEqual(registry.find_by_name(expected_name), resource1) self.assertEqual(registry.find_by_url(expected_url), resource1)
def __call__(self, model_cls, resources_registry=None): '''This method is invoked when the model class is first imported into python virtual machine.''' from fantastico.roa.resources_registry import ResourcesRegistry resources_registry = resources_registry or ResourcesRegistry() self._model = model_cls model_cls._resource_decorator = self # pylint: disable=W0212 resources_registry.register_resource(self) return model_cls
def test_unregister_resource_versionnotfound(self): '''This test case ensures no exception is raised if the given resource version is not registered.''' registry = ResourcesRegistry() registry.register_resource( Resource(name="for_test", url="/for_test", version=2.0)) registry.unregister_resource("for_test", 1.0) self.assertIsNone(registry.find_by_name("for_test", 1.0))
def test_unregister_resource_latestnotallowed(self): '''This test case ensures that nothing happens if latest is given as version.''' registry = ResourcesRegistry() expected_name = "app-setting" expected_url = "/app-setting" resource1 = Resource(name=expected_name, url=expected_url, version=1.0) registry.register_resource(resource1) registry.unregister_resource(expected_name, version="latest") self.assertEqual(registry.find_by_name(expected_name), resource1) self.assertEqual(registry.find_by_url(expected_url), resource1)
def test_unregister_resource_versionnotfound(self): '''This test case ensures no exception is raised if the given resource version is not registered.''' registry = ResourcesRegistry() registry.register_resource(Resource(name="for_test", url="/for_test", version=2.0)) registry.unregister_resource("for_test", 1.0) self.assertIsNone(registry.find_by_name("for_test", 1.0))
def test_all_resources_list(self): '''This test case ensures registered resources can be listed correctly (sorted by name).''' resource1 = Resource(name="triplex", url="/triplex", version=2.0) resource2 = Resource(name="triplex", url="/triplex", version=1.0) resource3 = Resource(name="abc", url="/abc", version=1.0) registry = ResourcesRegistry() registry.register_resource(resource1) registry.register_resource(resource2) registry.register_resource(resource3) expected_resources = [ resource3, resource3, resource2, resource1, resource1 ] resources = registry.all_resources() self.assertEqual(resources, expected_resources)
def test_all_resources_list(self): '''This test case ensures registered resources can be listed correctly (sorted by name).''' resource1 = Resource(name="triplex", url="/triplex", version=2.0) resource2 = Resource(name="triplex", url="/triplex", version=1.0) resource3 = Resource(name="abc", url="/abc", version=1.0) registry = ResourcesRegistry() registry.register_resource(resource1) registry.register_resource(resource2) registry.register_resource(resource3) expected_resources = [resource3, resource3, resource2, resource1, resource1] resources = registry.all_resources() self.assertEqual(resources, expected_resources)
def test_all_resources_list_empty(self): '''This test case ensures empty registry can be still listed.''' registry = ResourcesRegistry() self.assertEqual(registry.all_resources(), [])
def cleanup(self): '''This method cleanup all affected dependencies after each test case.''' registry = ResourcesRegistry() registry.available_resources.clear() registry.available_url_resources.clear()
def init(self): '''This method ensures registry is empty before each test case.''' registry = ResourcesRegistry() registry.available_resources.clear() registry.available_url_resources.clear()