diff options
Diffstat (limited to 'src/backends/tdepim/TDEPIMNotesSourceRegister.cpp')
-rw-r--r-- | src/backends/tdepim/TDEPIMNotesSourceRegister.cpp | 204 |
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 |