[conduit: 64/138] Expose whether or not a dataprovider is two way friendly



commit 02bf97225c5e4d5766b6e84983152a595db97960
Author: John Carr <john carr unrouted co uk>
Date:   Fri May 1 05:57:38 2009 -0700

    Expose whether or not a dataprovider is two way friendly
---
 test/soup/modules/__init__.py     |    4 +++
 test/soup/modules/evolution.py    |   12 +++++---
 test/soup/modules/folder.py       |    3 +-
 test/soup/modules/ipod.py         |   52 ++++++++++--------------------------
 test/soup/modules/n800.py         |   37 ++++++++-----------------
 test/soup/test_synchronization.py |    2 +
 6 files changed, 43 insertions(+), 67 deletions(-)

diff --git a/test/soup/modules/__init__.py b/test/soup/modules/__init__.py
index a9c12fd..383d0bb 100644
--- a/test/soup/modules/__init__.py
+++ b/test/soup/modules/__init__.py
@@ -49,6 +49,10 @@ class ModuleWrapper(object):
             elif t == CHANGE_DELETE:
                 self.delete(uid)
 
+    @classmethod
+    def is_twoway(cls):
+        return cls.klass._module_type_ == "twoway"
+
     def get_wrapped(self):
         return self.conduit.wrap_dataprovider(self.dp)
 
diff --git a/test/soup/modules/evolution.py b/test/soup/modules/evolution.py
index 854d8bf..ee343f2 100644
--- a/test/soup/modules/evolution.py
+++ b/test/soup/modules/evolution.py
@@ -10,32 +10,36 @@ import conduit.modules.EvolutionModule.EvolutionModule as EvolutionModule
 
 class EvolutionMemo(soup.modules.ModuleWrapper):
 
+    klass = EvolutionModule.EvoMemoTwoWay
     dataclass = NoteWrapper
 
     def create_dataprovider(self):
-        return EvolutionModule.EvoMemoTwoWay()
+        return self.klass()
 
 
 class EvolutionContacts(soup.modules.ModuleWrapper):
 
+    klass = EvolutionModule.EvoContactTwoWay
     dataclass = ContactWrapper
 
     def create_dataprovider(self):
-        return EvolutionModule.EvoContactTwoWay()
+        return self.klass()
 
 
 class EvolutionCalendar(soup.modules.ModuleWrapper):
 
+    klass = EvolutionModule.EvoCalendarTwoWay
     dataclass = EventWrapper
 
     def create_dataprovider(self):
-        return EvolutionModule.EvoCalendarTwoWay()
+        return self.klass()
 
 
 class EvolutionTasks(soup.modules.ModuleWrapper):
 
+    klass = EvolutionModule.EvoTasksTwoWay
     dataclass = EventWrapper
 
     def create_dataprovider(self):
-        return EvolutionModule.EvoTasksTwoWay()
+        return self.klass()
 
diff --git a/test/soup/modules/folder.py b/test/soup/modules/folder.py
index da5b56c..72f986c 100644
--- a/test/soup/modules/folder.py
+++ b/test/soup/modules/folder.py
@@ -7,10 +7,11 @@ import conduit.utils as Utils
 
 class Folder(soup.modules.ModuleWrapper):
 
+    klass = FileModule.FolderTwoWay
     dataclass = FileWrapper
 
     def create_dataprovider(self):
-        dp = FileModule.FolderTwoWay()
+        dp = self.klass()
         dp.set_configuration({
             "folder": Utils.new_tempdir(),
         })
diff --git a/test/soup/modules/ipod.py b/test/soup/modules/ipod.py
index 56ef352..f950958 100644
--- a/test/soup/modules/ipod.py
+++ b/test/soup/modules/ipod.py
@@ -13,53 +13,31 @@ import conduit.utils as Utils
 
 import gpod
 
-def create_fake_ipod():
-    dir = Utils.new_tempdir()
-    assert gpod.gpod.itdb_init_ipod(dir, "MA450", "Test iPod", None)
-    return dir
-
-
-class iPodNote(soup.modules.ModuleWrapper):
-
-    dataclass = NoteWrapper
+class iPodWrapper(object):
 
     def create_dataprovider(self):
-        self.folder = create_fake_ipod()
-        return iPodModule.IPodNoteTwoWay(self.folder, "")
+        self.folder = Utils.new_tempdir()
+        assert gpod.gpod.itdb_init_ipod(self.folder, "MA450", "Test iPod", None)
+        return self.klass(self.folder, "")
 
 
-class iPodContacts(soup.modules.ModuleWrapper):
+class iPodNote(soup.modules.ModuleWrapper, iPodWrapper):
+    klass = iPodModule.IPodNoteTwoWay
+    dataclass = NoteWrapper
 
+class iPodContacts(soup.modules.ModuleWrapper, iPodWrapper):
+    klass = iPodModule.IPodContactsTwoWay
     dataclass = ContactWrapper
 
-    def create_dataprovider(self):
-        self.folder = create_fake_ipod()
-        return iPodModule.IPodContactsTwoWay(self.folder, "")
-
-
-class iPodCalendar(soup.modules.ModuleWrapper):
-
+class iPodCalendar(soup.modules.ModuleWrapper, iPodWrapper):
+    klass = iPodModule.IPodCalendarTwoWay
     dataclass = EventWrapper
 
-    def create_dataprovider(self):
-        self.folder = create_fake_ipod()
-        return iPodModule.IPodCalendarTwoWay(self.folder, "")
-
-
-class iPodPhoto(soup.modules.ModuleWrapper):
-
+class iPodPhoto(soup.modules.ModuleWrapper, iPodWrapper):
+    klass = iPodModule.IPodPhotoSink
     dataclass = PhotoWrapper
 
-    def create_dataprovider(self):
-        self.folder = create_fake_ipod()
-        return iPodModule.IPodPhotoSink(self.folder, "")
-
-
-class iPodMusic(soup.modules.ModuleWrapper):
-
+class iPodMusic(soup.modules.ModuleWrapper, iPodWrapper):
+    klass = iPodModule.IPodMusicTwoWay
     dataclass = MusicWrapper
 
-    def create_dataprovider(self):
-        self.folder = create_fake_ipod()
-        return iPodModule.IPodMusicTwoWay(self.folder, "")
-
diff --git a/test/soup/modules/n800.py b/test/soup/modules/n800.py
index 0d27bc1..839459f 100644
--- a/test/soup/modules/n800.py
+++ b/test/soup/modules/n800.py
@@ -10,40 +10,27 @@ from soup.data.video import VideoWrapper
 import conduit.modules.N800Module.N800Module as N800Module
 import conduit.utils as Utils
 
-
-class N800Folder(soup.modules.ModuleWrapper):
-
-    dataclass = FileWrapper
+class N800Wrapper(object):
 
     def create_dataprovider(self):
         self.folder = Utils.new_tempdir()
-        return N800Module.N800FolderTwoWay(self.folder, "")
+        return self.klass(self.folder, "")
 
 
-class N800Photo(soup.modules.ModuleWrapper):
+class N800Folder(soup.modules.ModuleWrapper, N800Wrapper):
+    klass = N800Module.N800FolderTwoWay
+    dataclass = FileWrapper
 
+class N800Photo(soup.modules.ModuleWrapper, N800Wrapper):
+    klass = N800Module.N800PhotoTwoWay
     dataclass = PhotoWrapper
 
-    def create_dataprovider(self):
-        self.folder = Utils.new_tempdir()
-        return N800Module.N800PhotoTwoWay(self.folder, "")
-
-
-#class N800Music(soup.modules.ModuleWrapper):
-
-#    dataclass = MusicWrapper
-
-#    def create_dataprovider(self):
-#        self.folder = Utils.new_tempdir()
-#        return N800Module.N800MusicTwoWay(self.folder, "")
-
-
-#class N800Video(soup.modules.ModuleWrapper):
+class N800Audio(soup.modules.ModuleWrapper, N800Wrapper):
+    klass = N800Module.N800AudioTwoWay
+    dataclass = MusicWrapper
 
+#class N800Video(soup.modules.ModuleWrapper, N800Wraooer):
+#    klass = N800Module.N800VideoTwoWay
 #    dataclass = VideoWrapper
 
-#    def create_dataprovider(self):
-#        self.folder = Utils.new_tempdir()
-#        return N800Module.N800VideoTwoWay(self.folder, "")
-
 
diff --git a/test/soup/test_synchronization.py b/test/soup/test_synchronization.py
index 96ecfcc..9b368d2 100644
--- a/test/soup/test_synchronization.py
+++ b/test/soup/test_synchronization.py
@@ -105,6 +105,8 @@ for i in range(len(mods)):
         if sink.dataclass != source.dataclass:
             # FIXME: Need a generic way to say, hey you can sync contacts to folders
             continue
+        if not source.is_twoway() or not sink.is_twoway():
+            continue
         testklass = make_testcase(source, sink, sink.dataclass)
         setattr(self, testklass.name(), testklass)
 



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