summaryrefslogtreecommitdiff
path: root/src/backends/tdepim/TDEPIMNotesSourceRegister.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/tdepim/TDEPIMNotesSourceRegister.cpp')
-rw-r--r--src/backends/tdepim/TDEPIMNotesSourceRegister.cpp204
1 files changed, 202 insertions, 2 deletions
diff --git a/src/backends/tdepim/TDEPIMNotesSourceRegister.cpp b/src/backends/tdepim/TDEPIMNotesSourceRegister.cpp
index 7a5152b7..522ae6a0 100644
--- a/src/backends/tdepim/TDEPIMNotesSourceRegister.cpp
+++ b/src/backends/tdepim/TDEPIMNotesSourceRegister.cpp
@@ -17,7 +17,7 @@
* 02110-1301 USA
*
*
- * $Id: TDEPIMNotesSourceRegister.cpp,v 1.5 2016/09/12 19:57:27 emanoil Exp $
+ * $Id: TDEPIMNotesSourceRegister.cpp,v 1.6 2016/09/20 12:56:49 emanoil Exp $
*
*/
@@ -58,7 +58,7 @@ static class RegisterTDEPIMNotesSyncSource : public RegisterSyncSource
public:
RegisterTDEPIMNotesSyncSource() :
RegisterSyncSource("TDE PIM Notes",
-#ifdef ENABLE_TDEPIMCAL
+#ifdef ENABLE_TDEPIMNOTES
true,
#else
false,
@@ -79,5 +79,205 @@ public:
} registerMe;
// TODO finish unit tests
+#ifdef ENABLE_TDEPIMNOTES
+#ifdef ENABLE_UNIT_TESTS
+class TDENotesTest : public CppUnit::TestFixture {
+ CPPUNIT_TEST_SUITE(TDENotesTest);
+ CPPUNIT_TEST(testInstantiate);
+
+ // There is no default database in Akonadi:
+ // CPPUNIT_TEST(testOpenDefaultCalendar);
+ // CPPUNIT_TEST(testOpenDefaultTodo);
+ // CPPUNIT_TEST(testOpenDefaultMemo);
+
+ // Besides, don't enable tests which depend on running Akonadi,
+ // because that would cause "client-test SyncEvolution" unless
+ // Akonadi was started first:
+ // CPPUNIT_TEST(testTimezones);
+
+ CPPUNIT_TEST_SUITE_END();
+
+protected:
+ static string addItem(boost::shared_ptr<TestingSyncSource> source,
+ string &data) {
+ SyncSourceRaw::InsertItemResult res = source->insertItemRaw("", data);
+ return res.m_luid;
+ }
+
+ void testInstantiate() {
+ boost::shared_ptr<SyncSource> source;
+
+ // source.reset(SyncSource::createTestingSource("memos", "memos", true));
+ source.reset(SyncSource::createTestingSource("memos", "tdepim-notes", true));
+ source.reset(SyncSource::createTestingSource("memos", "TDE PIM Notes:text/plain", true));
+ }
+
+ // TODO: support default databases
+
+ // void testOpenDefaultMemo() {
+ // boost::shared_ptr<TestingSyncSource> source;
+ // source.reset((TestingSyncSource *)SyncSource::createTestingSource("memos", "tdepim-memos", true, NULL));
+ // CPPUNIT_ASSERT_NO_THROW(source->open());
+ // }
+
+ void testTimezones() {
+ const char *prefix = getenv("CLIENT_TEST_EVOLUTION_PREFIX");
+ if (!prefix) {
+ prefix = "SyncEvolution_Test_";
+ }
+
+ boost::shared_ptr<TestingSyncSource> source;
+ source.reset((TestingSyncSource *)SyncSource::createTestingSource("eds_event", "tdepim-notes", true, prefix));
+ CPPUNIT_ASSERT_NO_THROW(source->open());
+
+ string newyork =
+ "BEGIN:VCALENDAR\n"
+ "PRODID:-//Ximian//NONSGML Evolution Calendar//EN\n"
+ "VERSION:2.0\n"
+ "BEGIN:VTIMEZONE\n"
+ "TZID:America/New_York\n"
+ "BEGIN:STANDARD\n"
+ "TZOFFSETFROM:-0400\n"
+ "TZOFFSETTO:-0500\n"
+ "TZNAME:EST\n"
+ "DTSTART:19701025T020000\n"
+ "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10\n"
+ "END:STANDARD\n"
+ "BEGIN:DAYLIGHT\n"
+ "TZOFFSETFROM:-0500\n"
+ "TZOFFSETTO:-0400\n"
+ "TZNAME:EDT\n"
+ "DTSTART:19700405T020000\n"
+ "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=4\n"
+ "END:DAYLIGHT\n"
+ "END:VTIMEZONE\n"
+ "BEGIN:VEVENT\n"
+ "UID:artificial\n"
+ "DTSTAMP:20060416T205224Z\n"
+ "DTSTART;TZID=America/New_York:20060406T140000\n"
+ "DTEND;TZID=America/New_York:20060406T143000\n"
+ "TRANSP:OPAQUE\n"
+ "SEQUENCE:2\n"
+ "SUMMARY:timezone New York with custom definition\n"
+ "DESCRIPTION:timezone New York with custom definition\n"
+ "CLASS:PUBLIC\n"
+ "CREATED:20060416T205301Z\n"
+ "LAST-MODIFIED:20060416T205301Z\n"
+ "END:VEVENT\n"
+ "END:VCALENDAR\n";
+
+ string luid;
+ CPPUNIT_ASSERT_NO_THROW(luid = addItem(source, newyork));
+
+ string newyork_suffix = newyork;
+ boost::replace_first(newyork_suffix,
+ "UID:artificial",
+ "UID:artificial-2");
+ boost::replace_all(newyork_suffix,
+ "TZID:America/New_York",
+ "TZID://FOOBAR/America/New_York-SUFFIX");
+ CPPUNIT_ASSERT_NO_THROW(luid = addItem(source, newyork_suffix));
+
+
+ string notimezone =
+ "BEGIN:VCALENDAR\n"
+ "PRODID:-//Ximian//NONSGML Evolution Calendar//EN\n"
+ "VERSION:2.0\n"
+ "BEGIN:VEVENT\n"
+ "UID:artificial-3\n"
+ "DTSTAMP:20060416T205224Z\n"
+ "DTSTART;TZID=America/New_York:20060406T140000\n"
+ "DTEND;TZID=America/New_York:20060406T143000\n"
+ "TRANSP:OPAQUE\n"
+ "SEQUENCE:2\n"
+ "SUMMARY:timezone New York without custom definition\n"
+ "DESCRIPTION:timezone New York without custom definition\n"
+ "CLASS:PUBLIC\n"
+ "CREATED:20060416T205301Z\n"
+ "LAST-MODIFIED:20060416T205301Z\n"
+ "END:VEVENT\n"
+ "END:VCALENDAR\n";
+ CPPUNIT_ASSERT_NO_THROW(luid = addItem(source, notimezone));
+
+ // fake VTIMEZONE where daylight saving starts on first Sunday in March
+ string fake_march =
+ "BEGIN:VCALENDAR\n"
+ "PRODID:-//Ximian//NONSGML Evolution Calendar//EN\n"
+ "VERSION:2.0\n"
+ "BEGIN:VTIMEZONE\n"
+ "TZID:FAKE\n"
+ "BEGIN:STANDARD\n"
+ "TZOFFSETFROM:-0400\n"
+ "TZOFFSETTO:-0500\n"
+ "TZNAME:EST MARCH\n"
+ "DTSTART:19701025T020000\n"
+ "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10\n"
+ "END:STANDARD\n"
+ "BEGIN:DAYLIGHT\n"
+ "TZOFFSETFROM:-0500\n"
+ "TZOFFSETTO:-0400\n"
+ "TZNAME:EDT\n"
+ "DTSTART:19700405T020000\n"
+ "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=3\n"
+ "END:DAYLIGHT\n"
+ "END:VTIMEZONE\n"
+ "BEGIN:VEVENT\n"
+ "UID:artificial-4\n"
+ "DTSTAMP:20060416T205224Z\n"
+ "DTSTART;TZID=FAKE:20060406T140000\n"
+ "DTEND;TZID=FAKE:20060406T143000\n"
+ "TRANSP:OPAQUE\n"
+ "SEQUENCE:2\n"
+ "SUMMARY:fake timezone with daylight starting in March\n"
+ "CLASS:PUBLIC\n"
+ "CREATED:20060416T205301Z\n"
+ "LAST-MODIFIED:20060416T205301Z\n"
+ "END:VEVENT\n"
+ "END:VCALENDAR\n";
+ CPPUNIT_ASSERT_NO_THROW(luid = addItem(source, fake_march));
+
+ string fake_may = fake_march;
+ boost::replace_first(fake_may,
+ "UID:artificial-4",
+ "UID:artificial-5");
+ boost::replace_first(fake_may,
+ "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=3",
+ "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=5");
+ boost::replace_first(fake_may,
+ "starting in March",
+ "starting in May");
+ boost::replace_first(fake_may,
+ "TZNAME:EST MARCH",
+ "TZNAME:EST MAY");
+ CPPUNIT_ASSERT_NO_THROW(luid = addItem(source, fake_may));
+
+ // insert again, shouldn't re-add timezone
+ CPPUNIT_ASSERT_NO_THROW(luid = addItem(source, fake_may));
+ }
+};
+
+SYNCEVOLUTION_TEST_SUITE_REGISTRATION(TDENotesTest);
+
+#endif // ENABLE_UNIT_TESTS
+
+namespace {
+#if 0
+}
+#endif
+
+
+
+static class MemoTest : public RegisterSyncSourceTest {
+public:
+ MemoTest() : RegisterSyncSourceTest("tdepim_notes", "eds_memo") {}
+
+ virtual void updateConfig(ClientTestConfig &config) const
+ {
+ config.m_type = "TDE PIM Notes"; // use an alias here to test that
+ }
+} memoTest;
+
+}
+#endif
SE_END_CXX