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_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 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 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 _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)
示例#18
0
    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_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_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 _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_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 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_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 _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 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 _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_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()
    def test_all_resources_list_empty(self):
        '''This test case ensures empty registry can be still listed.'''

        registry = ResourcesRegistry()

        self.assertEqual(registry.all_resources(), [])