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_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 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 _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_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_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_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_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_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_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_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_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_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)