conduit r1338 - in trunk: . conduit/modules/EvolutionModule test/python-tests



Author: jstowers
Date: Tue Feb 26 23:03:30 2008
New Revision: 1338
URL: http://svn.gnome.org/viewvc/conduit?rev=1338&view=rev

Log:
2008-02-27  John Stowers  <john stowers gmail com>

	* conduit/modules/EvolutionModule/EvolutionModule.py:
	Move some more common code into EvoBase class
	
	* test/python-tests/TestDataProviderEvolution.py:
	* test/python-tests/TestSyncEvolutionFolder.py: Add evolution tests



Added:
   trunk/test/python-tests/TestDataProviderEvolution.py
   trunk/test/python-tests/TestSyncEvolutionFolder.py
Modified:
   trunk/ChangeLog
   trunk/conduit/modules/EvolutionModule/EvolutionModule.py

Modified: trunk/conduit/modules/EvolutionModule/EvolutionModule.py
==============================================================================
--- trunk/conduit/modules/EvolutionModule/EvolutionModule.py	(original)
+++ trunk/conduit/modules/EvolutionModule/EvolutionModule.py	Tue Feb 26 23:03:30 2008
@@ -30,8 +30,9 @@
 class EvoBase(DataProvider.TwoWay):
     def __init__(self, sourceURI, *args):
         DataProvider.TwoWay.__init__(self)
-        self.defaultURI = sourceURI
-        self.sourceURI = sourceURI
+        self.defaultSourceURI = sourceURI
+        self.selectedSourceURI = sourceURI
+        self.allSourceURIs = []
         self.uids = None
 
     def _get_object(self, uid):
@@ -93,7 +94,7 @@
         DataProvider.TwoWay.finish(self)
         self.uids = None
 
-    def configure(self, window, selected, sources, name):
+    def configure(self, window, name):
         import gtk
         tree = Utils.dataprovider_glade_get_widget(
                         __file__, 
@@ -115,30 +116,28 @@
         sourceComboBox.add_attribute(cell, 'text', 0)
         sourceComboBox.set_active(0)
         
-        for name,uri in sources:
+        for name,uri in self.allSourceURIs:
             rowref = store.append( (name, uri) )
-            if uri == selected:
+            if uri == self.selectedSourceURI:
                 sourceComboBox.set_active_iter(rowref)
         
         dlg = tree.get_widget("EvolutionConfigDialog")
         
         response = Utils.run_dialog (dlg, window)
         if response == True:
-            selected = store.get_value(sourceComboBox.get_active_iter(), 1)
-
+            self.selectedSourceURI = store.get_value(sourceComboBox.get_active_iter(), 1)
         dlg.destroy()  
-        return selected
 
     def get_configuration(self):
         return {
-            "sourceURI" : self.sourceURI
+            "sourceURI" : self.selectedSourceURI
             }
 
     def set_configuration(self, config):
-        self.sourceURI = config.get("sourceURI", self.defaultURI)
+        self.selectedSourceURI = config.get("sourceURI", self.defaultSourceURI)
 
     def get_UID(self):
-        return self.sourceURI
+        return self.selectedSourceURI
 
 
 class EvoContactTwoWay(EvoBase):
@@ -155,7 +154,7 @@
 
     def __init__(self, *args):
         EvoBase.__init__(self, EvoContactTwoWay.DEFAULT_ADDRESSBOOK_URI)
-        self._addressBooks = evolution.ebook.list_addressbooks()
+        self.allSourceURIs = evolution.ebook.list_addressbooks()
 
     def _get_object(self, LUID):
         """
@@ -186,17 +185,12 @@
     def refresh(self):
         EvoBase.refresh(self)
         
-        self.book = evolution.ebook.open_addressbook(self.sourceURI)
+        self.book = evolution.ebook.open_addressbook(self.selectedSourceURI)
         for i in self.book.get_all_contacts():
             self.uids.append(i.get_uid())
 
     def configure(self, window):
-        self.sourceURI = EvoBase.configure(self, 
-                                    window, 
-                                    self.sourceURI, 
-                                    self._addressBooks,
-                                    "Addressbook"
-                                    )
+        EvoBase.configure(self, window, "Addressbook")
 
 class EvoCalendarTwoWay(EvoBase):
 
@@ -212,7 +206,7 @@
 
     def __init__(self, *args):
         EvoBase.__init__(self, EvoCalendarTwoWay.DEFAULT_CALENDAR_URI)
-        self._calendarURIs = evolution.ecal.list_calendars()
+        self.allSourceURIs = evolution.ecal.list_calendars()
 
     def _get_object(self, LUID):
         """
@@ -247,19 +241,14 @@
         EvoBase.refresh(self)
         
         self.calendar = evolution.ecal.open_calendar_source(
-                            self.sourceURI, 
+                            self.selectedSourceURI, 
                             evolution.ecal.CAL_SOURCE_TYPE_EVENT
                             )
         for i in self.calendar.get_all_objects():
             self.uids.append(i.get_uid())
 
     def configure(self, window):
-        self.sourceURI = EvoBase.configure(self, 
-                                    window, 
-                                    self.sourceURI, 
-                                    self._calendarURIs,
-                                    "Calendar"
-                                    )
+        EvoBase.configure(self, window, "Calendar")
 
 class EvoTasksTwoWay(EvoBase):
 
@@ -275,7 +264,7 @@
 
     def __init__(self, *args):
         EvoBase.__init__(self, EvoTasksTwoWay.DEFAULT_TASK_URI)
-        self._uris = evolution.ecal.list_task_sources()
+        self.allSourceURIs = evolution.ecal.list_task_sources()
 
     def _get_object(self, LUID):
         raw = self.tasks.get_object(LUID, "")
@@ -309,19 +298,14 @@
     def refresh(self):
         EvoBase.refresh(self)
         self.tasks = evolution.ecal.open_calendar_source(
-                        self.sourceURI, 
+                        self.selectedSourceURI, 
                         evolution.ecal.CAL_SOURCE_TYPE_TODO
                         )
         for i in self.tasks.get_all_objects():
             self.uids.append(i.get_uid())
 
     def configure(self, window):
-        self.sourceURI = EvoBase.configure(self, 
-                                    window, 
-                                    self.sourceURI, 
-                                    self._uris,
-                                    "Tasks"
-                                    )
+        EvoBase.configure(self, window, "Tasks")
 
 class EvoMemoTwoWay(EvoBase):
 
@@ -337,15 +321,14 @@
 
     def __init__(self, *args):
         EvoBase.__init__(self, EvoMemoTwoWay.DEFAULT_MEMO_URI)
-        self.source = None
-        self._memoSources = evolution.ecal.list_memo_sources()
+        self.allSourceURIs = evolution.ecal.list_memo_sources()
 
     def _get_object(self, LUID):
         """
         Retrieve a specific contact object from evolution
         FIXME: In 0.5 this will replace get(...)
         """	
-        obj = self.source.get_object(LUID, "")
+        obj = self.memos.get_object(LUID, "")
         mtime = datetime.datetime.fromtimestamp(obj.get_modified())
         note = Note.Note(
                     title=obj.get_summary(),
@@ -366,7 +349,7 @@
         obj.set_summary(note.title)
         if note.contents != None:
             obj.set_description(note.contents)
-        uid = self.source.add_object(obj)
+        uid = self.memos.add_object(obj)
         
         if uid != None:
             mtime = datetime.datetime.fromtimestamp(obj.get_modified())
@@ -376,25 +359,19 @@
 
     def _delete_object(self, uid):
         try:
-            return self.source.remove_object(self.source.get_object(uid, ""))
+            return self.memos.remove_object(self.memos.get_object(uid, ""))
         except:
             return False
 
     def refresh(self):
         EvoBase.refresh(self)
-        self.source = evolution.ecal.open_calendar_source(
-                        self.sourceURI, 
+        self.memos = evolution.ecal.open_calendar_source(
+                        self.selectedSourceURI, 
                         evolution.ecal.CAL_SOURCE_TYPE_JOURNAL
                         )
-        for i in self.source.get_all_objects():
+        for i in self.memos.get_all_objects():
             self.uids.append(i.get_uid())
 
     def configure(self, window):
-        self.sourceURI = EvoBase.configure(self, 
-                                    window, 
-                                    self.sourceURI, 
-                                    self._memoSources,
-                                    "Memo Source"
-                                    )
-
+        EvoBase.configure(self, window, "Memos")
 

Added: trunk/test/python-tests/TestDataProviderEvolution.py
==============================================================================
--- (empty file)
+++ trunk/test/python-tests/TestDataProviderEvolution.py	Tue Feb 26 23:03:30 2008
@@ -0,0 +1,46 @@
+#common sets up the conduit environment
+from common import *
+
+SAFE_TASK_URI="file:///home/john/.evolution/tasks/local/1204062882 7099 2 nzjrs-desktop"
+SAFE_MEMO_URI="file:///home/john/.evolution/memos/local/1204062871 7099 1 nzjrs-desktop"
+SAFE_CALENDAR_URI="file:///home/john/.evolution/calendar/local/1204062855 7099 0 nzjrs-desktop"
+SAFE_CONTACT_URI="file:///home/john/.evolution/addressbook/local/1203075663 31342 0 nzjrs-desktop"
+
+
+TESTS = (
+#uri,               #newdata_func,          #name
+(SAFE_MEMO_URI,         new_note,               "EvoMemoTwoWay"),
+(SAFE_CONTACT_URI,      new_contact,            "EvoContactTwoWay"),
+(SAFE_CALENDAR_URI,     new_event,              "EvoCalendarTwoWay"),
+(SAFE_TASK_URI,         new_event,              "EvoTasksTwoWay"),
+)
+
+for uri, newdata_func, name in TESTS:
+    test = SimpleTest(sinkName=name)
+    config = {
+        "sourceURI":    uri
+    }
+    test.configure(sink=config)
+    
+    #Check we get the correct uri
+    dp = test.get_sink().module
+    try:
+        dp.refresh()
+        ok("Got evolution source uri: %s" % uri,
+            uri in [i[1] for i in dp.allSourceURIs]
+            )
+    except Exception, err:
+        ok("Got evolution source uri: %s" % uri, False)
+    
+    newdata = newdata_func(None)
+    test.do_dataprovider_tests(
+        supportsGet=True,
+        supportsDelete=True,
+        safeLUID=None,
+        data=newdata,
+        name=name
+        )
+
+finished()
+
+

Added: trunk/test/python-tests/TestSyncEvolutionFolder.py
==============================================================================
--- (empty file)
+++ trunk/test/python-tests/TestSyncEvolutionFolder.py	Tue Feb 26 23:03:30 2008
@@ -0,0 +1,43 @@
+#common sets up the conduit environment
+from common import *
+import conduit.Utils as Utils
+
+SAFE_TASK_URI="file:///home/john/.evolution/tasks/local/1204062882 7099 2 nzjrs-desktop"
+SAFE_MEMO_URI="file:///home/john/.evolution/memos/local/1204062871 7099 1 nzjrs-desktop"
+SAFE_CALENDAR_URI="file:///home/john/.evolution/calendar/local/1204062855 7099 0 nzjrs-desktop"
+SAFE_CONTACT_URI="file:///home/john/.evolution/addressbook/local/1203075663 31342 0 nzjrs-desktop"
+
+
+TESTS = (
+#uri,               #newdata_func,          #name
+(SAFE_MEMO_URI,         new_note,               "EvoMemoTwoWay"),
+(SAFE_CONTACT_URI,      new_contact,            "EvoContactTwoWay"),
+(SAFE_CALENDAR_URI,     new_event,              "EvoCalendarTwoWay"),
+(SAFE_TASK_URI,         new_event,              "EvoTasksTwoWay"),
+)
+
+for uri, newdata_func, name in TESTS:
+    #setup the conduit
+    test = SimpleSyncTest()
+    test.prepare(
+            source=test.get_dataprovider(name),
+            sink=test.get_dataprovider("FolderTwoWay")
+            )
+    test.set_two_way_policy({"conflict":"ask","deleted":"ask"})
+
+    #configure the source and sink
+    test.configure(
+            source={"sourceURI":uri},
+            sink={"folder":"file://"+Utils.new_tempdir()}
+            )
+    test.set_two_way_sync(True)
+
+    a = test.get_source_count()
+    ok("%s: %s items to sync" % (name, a), a > 0)
+    
+    #sync
+    test.sync()
+    abort,error,conflict = test.get_sync_result()
+    ok("%s: sync completed" % name, abort == False and error == False and conflict == False)
+
+finished()



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