# imports import unittest # bsie imports from bsfs.graph import Graph from bsfs.graph.ac import NullAC from bsfs.triple_store import SparqlStore from bsfs.utils import errors, URI # objects to test from bsfs.front.builder import build_backend, build_graph ## code ## class TestBuilder(unittest.TestCase): def test_build_backend(self): # valid config produces a valid store store = build_backend({'SparqlStore': {}}) self.assertIsInstance(store, SparqlStore) self.assertIsNone(store.uri) # cannot create an invalid store self.assertRaises(errors.ConfigError, build_backend, {'MyStore': {}}) # must pass a dict self.assertRaises(TypeError, build_backend, 1234) self.assertRaises(TypeError, build_backend, 'hello world') self.assertRaises(TypeError, build_backend, [1,2,3]) # cannot create a store from an invalid config self.assertRaises(errors.ConfigError, build_backend, {}) self.assertRaises(errors.ConfigError, build_backend, {'SparqlStore': {}, 'OtherStore': {}}) self.assertRaises(TypeError, build_backend, {'SparqlStore': {'hello': 'world'}}) def test_build_graph(self): # valid config produces a valid graph graph = build_graph({'Graph': {'backend': {'SparqlStore': {}}, 'user': 'http://example.com/me'}}) self.assertIsInstance(graph, Graph) self.assertIsInstance(graph._backend, SparqlStore) self.assertEqual(graph._ac, NullAC(graph._backend, URI('http://example.com/me'))) # cannot create an invalid graph self.assertRaises(errors.ConfigError, build_graph, {'MyGraph': {}}) # must pass a dict self.assertRaises(TypeError, build_graph, 1234) self.assertRaises(TypeError, build_graph, 'hello world') self.assertRaises(TypeError, build_graph, [1,2,3]) # cannot create a graph from an invalid config self.assertRaises(errors.ConfigError, build_graph, {}) self.assertRaises(errors.ConfigError, build_graph, {'Graph': {}, 'Graph2': {}}) self.assertRaises(errors.ConfigError, build_graph, {'Graph': {}}) self.assertRaises(errors.ConfigError, build_graph, {'Graph': {'user': 'http://example.com/me'}}) self.assertRaises(errors.ConfigError, build_graph, {'Graph': {'backend': 'Hello world'}}) self.assertRaises(TypeError, build_graph, {'Graph': {'user': 'http://example.com/me', 'backend': 'Hello world'}}) ## main ## if __name__ == '__main__': unittest.main() ## EOF ##