Adding some unit tests
authorEd Page <eopage@byu.net>
Sat, 18 Apr 2009 21:04:47 +0000 (16:04 -0500)
committerEd Page <eopage@byu.net>
Sat, 18 Apr 2009 21:04:47 +0000 (16:04 -0500)
tests/test_backend.py [new file with mode: 0644]
tests/test_cache_backend.py [new file with mode: 0644]
tests/test_file_backend.py [new file with mode: 0644]

diff --git a/tests/test_backend.py b/tests/test_backend.py
new file mode 100644 (file)
index 0000000..504ae4d
--- /dev/null
@@ -0,0 +1,122 @@
+def exercise_projects(backend):
+       PROJECT_1_NAME = "1"
+       PROJECT_1_NEW_NAME = "1_1"
+       PROJECT_2_NAME = "2"
+
+       projects = list(backend.get_projects())
+       assert len(projects) == 0
+
+       # Verify add/getters
+       proj1Id = backend.add_project(PROJECT_1_NAME)
+
+       proj = backend.get_project(proj1Id)
+       assert proj["name"] == PROJECT_1_NAME
+       assert proj["id"] == proj1Id
+       assert proj["isVisible"]
+       assert not proj["isMeta"]
+
+       projects = list(backend.get_projects())
+       assert len(projects) == 1
+       assert proj == projects[0]
+
+       lookupProj = backend.lookup_project(PROJECT_1_NAME)
+       assert proj == lookupProj
+
+       # verify name/getters
+       backend.set_project_name(proj1Id, PROJECT_1_NEW_NAME)
+
+       proj = backend.get_project(proj1Id)
+       assert proj["name"] == PROJECT_1_NEW_NAME
+       assert proj["id"] == proj1Id
+       assert proj["isVisible"]
+       assert not proj["isMeta"]
+
+       projects = list(backend.get_projects())
+       assert len(projects) == 1
+       assert proj == projects[0]
+
+       lookupProj = backend.lookup_project(PROJECT_1_NEW_NAME)
+       assert proj == lookupProj
+
+       # verify visibility/getters
+       backend.set_project_visibility(proj1Id, False)
+
+       proj = backend.get_project(proj1Id)
+       assert proj["name"] == PROJECT_1_NEW_NAME
+       assert proj["id"] == proj1Id
+       assert not proj["isVisible"]
+       assert not proj["isMeta"]
+
+       projects = list(backend.get_projects())
+       assert len(projects) == 1
+       assert proj == projects[0]
+
+       lookupProj = backend.lookup_project(PROJECT_1_NEW_NAME)
+       assert proj == lookupProj
+
+       # verify second project while modifying first
+       proj2Id = backend.add_project(PROJECT_2_NAME)
+
+       proj = backend.get_project(proj1Id)
+       assert proj["name"] == PROJECT_1_NEW_NAME
+       assert proj["id"] == proj1Id
+       assert not proj["isVisible"]
+       assert not proj["isMeta"]
+
+       lookupProj = backend.lookup_project(PROJECT_1_NEW_NAME)
+       assert proj == lookupProj
+
+       proj = backend.get_project(proj2Id)
+       assert proj["name"] == PROJECT_2_NAME
+       assert proj["id"] == proj2Id
+       assert proj["isVisible"]
+       assert not proj["isMeta"]
+
+       lookupProj = backend.lookup_project(PROJECT_2_NAME)
+       assert proj == lookupProj
+
+       backend.set_project_name(proj1Id, PROJECT_1_NAME)
+
+       proj = backend.get_project(proj1Id)
+       assert proj["name"] == PROJECT_1_NAME
+       assert proj["id"] == proj1Id
+       assert not proj["isVisible"]
+       assert not proj["isMeta"]
+
+       lookupProj = backend.lookup_project(PROJECT_1_NAME)
+       assert proj == lookupProj
+
+       proj = backend.get_project(proj2Id)
+       assert proj["name"] == PROJECT_2_NAME
+       assert proj["id"] == proj2Id
+       assert proj["isVisible"]
+       assert not proj["isMeta"]
+
+       lookupProj = backend.lookup_project(PROJECT_2_NAME)
+       assert proj == lookupProj
+
+       # verify visibility/getters
+       backend.set_project_visibility(proj1Id, True)
+
+       proj = backend.get_project(proj1Id)
+       assert proj["name"] == PROJECT_1_NAME
+       assert proj["id"] == proj1Id
+       assert proj["isVisible"]
+       assert not proj["isMeta"]
+
+       lookupProj = backend.lookup_project(PROJECT_1_NAME)
+       assert proj == lookupProj
+
+       proj = backend.get_project(proj2Id)
+       assert proj["name"] == PROJECT_2_NAME
+       assert proj["id"] == proj2Id
+       assert proj["isVisible"]
+       assert not proj["isMeta"]
+
+       lookupProj = backend.lookup_project(PROJECT_2_NAME)
+       assert proj == lookupProj
+
+
+def exercise_locations(backend):
+       locations = list(backend.get_locations())
+       assert len(locations) == 0
diff --git a/tests/test_cache_backend.py b/tests/test_cache_backend.py
new file mode 100644 (file)
index 0000000..6d163b9
--- /dev/null
@@ -0,0 +1,36 @@
+import os
+
+import test_backend
+
+import sys
+sys.path.append("../src")
+
+import file_backend
+import cache_backend
+
+
+class TestCacheBackend(object):
+
+       def test_projects(self):
+               fileBackend = file_backend.FileBackend(os.tmpnam())
+               backend = cache_backend.LazyCacheBackend(fileBackend)
+               test_backend.exercise_projects(backend)
+
+               # Confirm cache matches actual
+               fileProjects = list(fileBackend.get_projects())
+               fileProjects.sort()
+               cacheProjects = list(backend.get_projects())
+               cacheProjects.sort()
+               assert fileProjects == cacheProjects
+
+       def test_locations(self):
+               fileBackend = file_backend.FileBackend(os.tmpnam())
+               backend = cache_backend.LazyCacheBackend(fileBackend)
+               test_backend.exercise_locations(backend)
+
+               # Confirm cache matches actual
+               fileLocations = list(fileBackend.get_locations())
+               fileLocations.sort()
+               cacheLocations = list(backend.get_locations())
+               cacheLocations.sort()
+               assert fileLocations == cacheLocations
diff --git a/tests/test_file_backend.py b/tests/test_file_backend.py
new file mode 100644 (file)
index 0000000..8fefb83
--- /dev/null
@@ -0,0 +1,18 @@
+import os
+
+import test_backend
+
+import sys
+sys.path.append("../src")
+
+import file_backend
+
+class TestFileBackend(object):
+
+       def test_projects(self):
+               backend = file_backend.FileBackend(os.tmpnam())
+               test_backend.exercise_projects(backend)
+
+       def test_locations(self):
+               backend = file_backend.FileBackend(os.tmpnam())
+               test_backend.exercise_locations(backend)