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