Merge lp:~renatofilho/qtorganizer5-eds/fix-1577416 into lp:qtorganizer5-eds

Proposed by Renato Araujo Oliveira Filho
Status: Merged
Approved by: Arthur Mello
Approved revision: 104
Merged at revision: 103
Proposed branch: lp:~renatofilho/qtorganizer5-eds/fix-1577416
Merge into: lp:qtorganizer5-eds
Diff against target: 184 lines (+103/-17)
3 files modified
organizer/qorganizer-eds-engine.cpp (+8/-3)
tests/unittest/eds-base-test.cpp (+14/-3)
tests/unittest/recurrence-test.cpp (+81/-11)
To merge this branch: bzr merge lp:~renatofilho/qtorganizer5-eds/fix-1577416
Reviewer Review Type Date Requested Status
Arthur Mello (community) Approve
Tiago Salem Herrmann (community) Approve
PS Jenkins bot continuous-integration Approve
Review via email: mp+294014@code.launchpad.net

Commit message

Make sure that recurrence-id contains the event timezone.

To post a comment you must log in.
104. By Renato Araujo Oliveira Filho

Removed debug message.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Tiago Salem Herrmann (tiagosh) wrote :

LGTM.

review: Approve
Revision history for this message
Arthur Mello (artmello) wrote :

lgtm

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'organizer/qorganizer-eds-engine.cpp'
2--- organizer/qorganizer-eds-engine.cpp 2016-04-20 23:47:22 +0000
3+++ organizer/qorganizer-eds-engine.cpp 2016-05-06 14:32:01 +0000
4@@ -2444,7 +2444,6 @@
5 QOrganizerItem *item,
6 QOrganizerEDSCollectionEngineId *edsCollectionId)
7 {
8-
9 ECalComponentId *id = e_cal_component_get_id(comp);
10 QOrganizerEDSEngineId *edsParentId = 0;
11 QOrganizerEDSEngineId *edsId;
12@@ -2738,11 +2737,17 @@
13
14 if (!rId.isEmpty()) {
15 ECalComponentRange recur_id;
16- struct icaltimetype tt = icaltime_from_string(rId.toUtf8().data());
17+
18+ // use component tz on recurrence id
19+ ECalComponentDateTime dt;
20+ e_cal_component_get_dtstart(comp, &dt);
21+ dt.value = g_new(icaltimetype, 1);
22+ *dt.value = icaltime_from_string(rId.toUtf8().data());
23
24 recur_id.type = E_CAL_COMPONENT_RANGE_SINGLE;
25- recur_id.datetime.value = &tt;
26+ recur_id.datetime = dt;
27 e_cal_component_set_recurid(comp, &recur_id);
28+ e_cal_component_free_datetime(&dt);
29 }
30 }
31 }
32
33=== modified file 'tests/unittest/eds-base-test.cpp'
34--- tests/unittest/eds-base-test.cpp 2016-01-12 13:10:01 +0000
35+++ tests/unittest/eds-base-test.cpp 2016-05-06 14:32:01 +0000
36@@ -77,7 +77,6 @@
37 QString EDSBaseTest::getEventFromEvolution(const QOrganizerItemId &id,
38 const QOrganizerCollectionId &collectionId)
39 {
40- QString uid = id.toString().split("/").last();
41 GError *error = 0;
42 GScopedPointer<ESourceRegistry> sourceRegistry(e_source_registry_new_sync(0, &error));
43 if (error) {
44@@ -90,7 +89,7 @@
45 calendar.reset(e_source_registry_ref_default_calendar(sourceRegistry.data()));
46 } else {
47 calendar.reset(e_source_registry_ref_source(sourceRegistry.data(),
48- collectionId.toString().toUtf8().data()));
49+ collectionId.toString().split(":").last().toUtf8().data()));
50 }
51 GScopedPointer<EClient> client(E_CAL_CLIENT_CONNECT_SYNC(calendar.data(),
52 E_CAL_CLIENT_SOURCE_TYPE_EVENTS,
53@@ -103,8 +102,20 @@
54 }
55
56 icalcomponent *obj = 0;
57+ QString uid = id.toString().split("/").last();
58+ QString ruid;
59+
60+ // recurrence id
61+ if (uid.contains("#")) {
62+ QStringList ids = uid.split("#");
63+ uid = ids[0];
64+ ruid = ids[1];
65+ }
66+
67 e_cal_client_get_object_sync(reinterpret_cast<ECalClient*>(client.data()),
68- uid.toUtf8().data(), 0, &obj, 0, &error);
69+ uid.toUtf8().data(),
70+ ruid.toUtf8().data(),
71+ &obj, 0, &error);
72 if (error) {
73 qWarning() << "Fail to retrieve object:" << error->message;
74 g_error_free(error);
75
76=== modified file 'tests/unittest/recurrence-test.cpp'
77--- tests/unittest/recurrence-test.cpp 2016-01-15 14:55:49 +0000
78+++ tests/unittest/recurrence-test.cpp 2016-05-06 14:32:01 +0000
79@@ -305,6 +305,78 @@
80 QCOMPARE(items[0].displayLabel(), QStringLiteral("Updated item 2"));
81 }
82
83+ void testModifyReccurenceEventsWithTimeZone()
84+ {
85+ // Create event
86+ static QString displayLabelValue = QStringLiteral("Daily modify test");
87+ static QString descriptionValue = QStringLiteral("Daily modify description");
88+
89+ QOrganizerEvent ev;
90+ ev.setCollectionId(m_collection.id());
91+ ev.setStartDateTime(QDateTime(QDate(2013, 12, 2), QTime(0,0,0), QTimeZone("America/Recife")));
92+ ev.setEndDateTime(QDateTime(QDate(2013, 12, 2), QTime(0,30,0), QTimeZone("America/Recife")));
93+ ev.setDisplayLabel(displayLabelValue);
94+ ev.setDescription(descriptionValue);
95+
96+ QOrganizerRecurrenceRule rule;
97+ rule.setFrequency(QOrganizerRecurrenceRule::Daily);
98+ rule.setLimit(QDate(2013, 12, 4));
99+ ev.setRecurrenceRule(rule);
100+
101+ QSignalSpy itemsAdded(m_engine, SIGNAL(itemsAdded(QList<QOrganizerItemId>)));
102+ QtOrganizer::QOrganizerManager::Error error;
103+ QMap<int, QtOrganizer::QOrganizerManager::Error> errorMap;
104+ QList<QOrganizerItem> items;
105+ items << ev;
106+ bool saveResult = m_engine->saveItems(&items,
107+ QList<QtOrganizer::QOrganizerItemDetail::DetailType>(),
108+ &errorMap,
109+ &error);
110+ QCOMPARE(saveResult, true);
111+ QCOMPARE(errorMap.size(), 0);
112+ QTRY_COMPARE(itemsAdded.count(), 1);
113+
114+ // query recent created item
115+ QOrganizerItemCollectionFilter filter;
116+ QOrganizerItemSortOrder sort;
117+ QOrganizerItemFetchHint hint;
118+ filter.setCollectionId(m_collection.id());
119+ items = m_engine->items(filter,
120+ QDateTime(QDate(2013, 1, 1), QTime(0,0,0)),
121+ QDateTime(QDate(2015, 1, 1), QTime(0,0,0)),
122+ 100,
123+ sort,
124+ hint,
125+ &error);
126+ QCOMPARE(items.size(), 3);
127+
128+ // edit first item
129+ QList<QOrganizerItem> updateItems;
130+ QOrganizerItem updateItem = items[0];
131+ QList<QtOrganizer::QOrganizerItemDetail::DetailType> mask;
132+ updateItem.setDisplayLabel("Updated item 2");
133+ updateItems << updateItem;
134+
135+ saveResult = m_engine->saveItems(&updateItems, mask, &errorMap, &error);
136+ QCOMPARE(saveResult, true);
137+ QCOMPARE(errorMap.size(), 0);
138+ QCOMPARE(error, QOrganizerManager::NoError);
139+
140+ items = m_engine->items(filter,
141+ QDateTime(QDate(2013, 1, 1), QTime(0,0,0)),
142+ QDateTime(QDate(2015, 1, 1), QTime(0,0,0)),
143+ 100,
144+ sort,
145+ hint,
146+ &error);
147+
148+ QCOMPARE(items.size(), 3);
149+ QCOMPARE(items[0].displayLabel(), QStringLiteral("Updated item 2"));
150+
151+ QString vcard = getEventFromEvolution(items[0].id(), m_collection.id());
152+ QVERIFY(vcard.contains("RECURRENCE-ID;TZID=/freeassociation.sourceforge.net/Tzfile/America/Recife:\r\n 20131202T000000\r\n"));
153+ }
154+
155 void testQueryRecurrenceForAParentItem()
156 {
157 QOrganizerItem recurrenceEvent = createTestEvent();
158@@ -527,17 +599,15 @@
159
160 QCOMPARE(items.count(), 5);
161 //FIXME
162-#if 0
163- Q_FOREACH(const QOrganizerItem &i, items) {
164- QOrganizerEventOccurrence event = static_cast<QOrganizerEventOccurrence>(i);
165- qDebug() << i.displayLabel() << event.startDateTime().time() << i.description();
166- //if (event.startDateTime().date() <= changeItemDate) {
167- // QCOMPARE(i.displayLabel(), newDisplayLabel);
168- //} else {
169- // QCOMPARE(i.displayLabel(), item.displayLabel());
170- //}
171- }
172-#endif
173+// Q_FOREACH(const QOrganizerItem &i, items) {
174+// QOrganizerEventOccurrence event = static_cast<QOrganizerEventOccurrence>(i);
175+// qDebug() << i.displayLabel() << event.startDateTime().time() << i.description();
176+// //if (event.startDateTime().date() <= changeItemDate) {
177+// // QCOMPARE(i.displayLabel(), newDisplayLabel);
178+// //} else {
179+// // QCOMPARE(i.displayLabel(), item.displayLabel());
180+// //}
181+// }
182 }
183
184 void testCreateWeeklyEventWithoutEndDate()

Subscribers

People subscribed via source and target branches