[conduit: 29/138] Start teaching the dataprovider wrappers about test data



commit c1d0b2aa167c7a27c8af8adc76c39bd21876bf41
Author: John Carr <john carr unrouted co uk>
Date:   Mon Apr 27 16:13:08 2009 -0700

    Start teaching the dataprovider wrappers about test data
---
 test/soup/data/__init__.py     |   23 -----------------------
 test/soup/data/file.py         |   17 ++++++++++++++++-
 test/soup/modules/folder.py    |    4 ++++
 test/soup/modules/ipod.py      |   17 +++++++++++++++++
 test/soup/test_dataprovider.py |    3 ++-
 5 files changed, 39 insertions(+), 25 deletions(-)

diff --git a/test/soup/data/__init__.py b/test/soup/data/__init__.py
index 2b8ca46..604a472 100644
--- a/test/soup/data/__init__.py
+++ b/test/soup/data/__init__.py
@@ -8,26 +8,3 @@ class DataWrapper(object):
     def get_all(self):
         raise NotImplementedError
 
-
-def load_all_data():
-    basepath = os.path.dirname(__file__)
-    for root, dirs, files in os.walk(basepath):
-        for dir in dirs:
-            if dir[:1] != ".":
-                load_data(dir)
-        for file in files:
-            if file.endswith(".py") and not file.startswith("__"):
-                load_data(file[:-3])
-        break
-
-def load_data(dw):
-    if sys.modules.has_key(dw):
-        reload(sys.modules[dw])
-    else:
-        __import__("soup.data", {}, {}, [dw])
-
-def get_all():
-    if len(DataWrapper.__subclasses__()) == 0:
-        load_all_data()
-    return DataWrapper.__subclasses__()
-
diff --git a/test/soup/data/file.py b/test/soup/data/file.py
index 0e53163..0b6d429 100644
--- a/test/soup/data/file.py
+++ b/test/soup/data/file.py
@@ -1,5 +1,20 @@
+import soup
 import soup.data
 
+import conduit.utils as Utils
+
+
 class FileWrapper(soup.data.DataWrapper):
-    pass
+    """ Provides access to sample files and generated files """
+
+    def iter_samples(self):
+        for f in self.get_files_from_data_dir("*"):
+            yield File.File(URI=f)
+
+    def generate_sample(self):
+        f = Utils.new_tempfile(Utils.random_string())
+        uri = f._get_text_uri()
+        f.set_UID(uri)
+        f.set_open_URI(uri)
+        return f
 
diff --git a/test/soup/modules/folder.py b/test/soup/modules/folder.py
index 63cd2b3..7c11a8f 100644
--- a/test/soup/modules/folder.py
+++ b/test/soup/modules/folder.py
@@ -1,9 +1,13 @@
 import soup.modules
+from soup.data.file import FileWrapper
 
 import conduit.utils as Utils
 
+
 class Folder(soup.modules.ModuleWrapper):
 
+    dataclass = FileWrapper
+
     def create_dataprovider(self):
         dp = self.conduit.get_dataprovider("FolderTwoWay")
         dp.module.set_configuration({
diff --git a/test/soup/modules/ipod.py b/test/soup/modules/ipod.py
index a1ba97b..848d883 100644
--- a/test/soup/modules/ipod.py
+++ b/test/soup/modules/ipod.py
@@ -1,6 +1,13 @@
 
+import soup
 import soup.modules
 
+from soup.data.note import NoteWrapper
+from soup.data.contact import ContactWrapper
+from soup.data.event import EventWrapper
+from soup.data.photo import PhotoWrapper
+from soup.data.music import MusicWrapper
+
 import conduit.modules.iPodModule.iPodModule as iPodModule
 import conduit.utils as Utils
 
@@ -14,6 +21,8 @@ def create_fake_ipod():
 
 class iPodNote(soup.modules.ModuleWrapper):
 
+    dataclass = NoteWrapper
+
     def create_dataprovider(self):
         self.folder = create_fake_ipod()
         ipod = iPodModule.IPodNoteTwoWay(self.folder, "")
@@ -22,6 +31,8 @@ class iPodNote(soup.modules.ModuleWrapper):
 
 class iPodContacts(soup.modules.ModuleWrapper):
 
+    dataclass = ContactWrapper
+
     def create_dataprovider(self):
         self.folder = create_fake_ipod()
         ipod = iPodModule.IPodContactsTwoWay(self.folder, "")
@@ -30,6 +41,8 @@ class iPodContacts(soup.modules.ModuleWrapper):
 
 class iPodCalendar(soup.modules.ModuleWrapper):
 
+    dataclass = EventWrapper
+
     def create_dataprovider(self):
         self.folder = create_fake_ipod()
         ipod = iPodModule.IPodCalendarTwoWay(self.folder, "")
@@ -38,6 +51,8 @@ class iPodCalendar(soup.modules.ModuleWrapper):
 
 class iPodPhoto(soup.modules.ModuleWrapper):
 
+    dataclass = PhotoWrapper
+
     def create_dataprovider(self):
         self.folder = create_fake_ipod()
         ipod = iPodModule.IPodPhotoSink(self.folder, "")
@@ -46,6 +61,8 @@ class iPodPhoto(soup.modules.ModuleWrapper):
 
 class iPodMusic(soup.modules.ModuleWrapper):
 
+    dataclass = MusicWrapper
+
     def create_dataprovider(self):
         self.folder = create_fake_ipod()
         ipod = iPodModule.IPodMusicTwoWay(self.folder, "")
diff --git a/test/soup/test_dataprovider.py b/test/soup/test_dataprovider.py
index 783fa1d..1851f43 100644
--- a/test/soup/test_dataprovider.py
+++ b/test/soup/test_dataprovider.py
@@ -18,7 +18,8 @@ def make_testcase(wrp):
 
         def test_add(self):
             """ Should be able to add items """
-            pass
+            testdata = self.wrapper.dataclass()
+            testdata.iter_samples()
 
         def test_replace(self):
             """ Should be able to replace items """



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]