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

Proposed by Renato Araujo Oliveira Filho
Status: Merged
Approved by: Timo Jyrinki
Approved revision: 72
Merged at revision: 72
Proposed branch: lp:~renatofilho/qtorganizer5-eds/fix-1424924
Merge into: lp:qtorganizer5-eds
Diff against target: 116 lines (+94/-1)
2 files modified
organizer/qorganizer-eds-engine.cpp (+1/-1)
tests/unittest/recurrence-test.cpp (+93/-0)
To merge this branch: bzr merge lp:~renatofilho/qtorganizer5-eds/fix-1424924
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Needs Fixing
Charles Kerr (community) Approve
Review via email: mp+251129@code.launchpad.net

Commit message

Use '0' as value for recurrence count if this is unset.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Charles Kerr (charlesk) wrote :

LGTM.

The relevant EDS logic is in calendar/libecal/e-cal-recur.c; e.g. e_cal_recur_obtain_enddate()
which reasons that an event recurs forever if neither COUNT nor UNTIL are set.

So it makes sense for QOrganizerRecurrenceRule::NoLimit to be translated to
icalrecurrencetype.count==0 instead of
icalrecurrencetype.count==ICAL_RECURRENCE_ARRAY_MAX.

review: Approve
72. By Renato Araujo Oliveira Filho

Trunk merged.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Timo Jyrinki (timo-jyrinki) wrote :

Assuming Charles' Approve is enough for top-approve too.

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 2014-11-21 13:32:42 +0000
3+++ organizer/qorganizer-eds-engine.cpp 2015-02-27 19:40:58 +0000
4@@ -2016,7 +2016,7 @@
5 break;
6 case QOrganizerRecurrenceRule::NoLimit:
7 default:
8- rule->count = ICAL_RECURRENCE_ARRAY_MAX;
9+ rule->count = 0;
10 }
11
12 QSet<int> positions = qRule.positions();
13
14=== modified file 'tests/unittest/recurrence-test.cpp'
15--- tests/unittest/recurrence-test.cpp 2014-11-21 13:32:42 +0000
16+++ tests/unittest/recurrence-test.cpp 2015-02-27 19:40:58 +0000
17@@ -539,6 +539,99 @@
18 }
19 #endif
20 }
21+
22+ void testCreateWeeklyEventWithoutEndDate()
23+ {
24+ static QString displayLabelValue = QStringLiteral("testCreateWeeklyEventWithoutEndDate test");
25+ static QString descriptionValue = QStringLiteral("testCreateWeeklyEventWithoutEndDate description");
26+
27+ QOrganizerEvent ev;
28+ ev.setCollectionId(m_collection.id());
29+ ev.setStartDateTime(QDateTime(QDate(2014, 03, 1), QTime(0,0,0), QTimeZone("America/Recife")));
30+ ev.setEndDateTime(QDateTime(QDate(2014, 03, 1), QTime(0,30,0), QTimeZone("America/Recife")));
31+ ev.setDisplayLabel(displayLabelValue);
32+ ev.setDescription(descriptionValue);
33+
34+ QOrganizerRecurrenceRule rule;
35+ rule.setFrequency(QOrganizerRecurrenceRule::Weekly);
36+ QSet<Qt::DayOfWeek> dasyOfWeek;
37+ dasyOfWeek << Qt::Monday
38+ << Qt::Tuesday
39+ << Qt::Wednesday
40+ << Qt::Thursday
41+ << Qt::Friday;
42+
43+ rule.setDaysOfWeek(dasyOfWeek);
44+ ev.setRecurrenceRule(rule);
45+
46+ QtOrganizer::QOrganizerManager::Error error;
47+ QMap<int, QtOrganizer::QOrganizerManager::Error> errorMap;
48+ QList<QOrganizerItem> items;
49+ items << ev;
50+ bool saveResult = m_engine->saveItems(&items,
51+ QList<QtOrganizer::QOrganizerItemDetail::DetailType>(),
52+ &errorMap,
53+ &error);
54+ QVERIFY(saveResult);
55+ QCOMPARE(error, QtOrganizer::QOrganizerManager::NoError);
56+
57+ QOrganizerItemId parentId = items[0].id();
58+ // check if the parent was saved correct
59+ items = m_engine->items(QList<QOrganizerItemId>() << parentId,
60+ QOrganizerItemFetchHint(),
61+ &errorMap, &error);
62+ QCOMPARE(items.size(), 1);
63+ QOrganizerEvent result = items[0];
64+ QCOMPARE(result.collectionId(), ev.collectionId());
65+ QCOMPARE(result.startDateTime(), ev.startDateTime());
66+ QCOMPARE(result.endDateTime(), ev.endDateTime());
67+
68+ QCOMPARE(result.displayLabel(), ev.displayLabel());
69+ QCOMPARE(result.description(), ev.description());
70+
71+ QOrganizerRecurrenceRule savedRule = result.recurrenceRule();
72+ QCOMPARE(savedRule.frequency(), rule.frequency());
73+ QCOMPARE(savedRule.daysOfWeek(), rule.daysOfWeek());
74+ QCOMPARE(savedRule.limitType(), QOrganizerRecurrenceRule::NoLimit);
75+ QCOMPARE(savedRule.limitDate().isValid(), false);
76+ QCOMPARE(savedRule.limitCount(), -1);
77+
78+ // edit event
79+ dasyOfWeek.remove(Qt::Monday);
80+ rule.setDaysOfWeek(dasyOfWeek);
81+ result.setRecurrenceRule(rule);
82+
83+ items.clear();
84+ items << result;
85+ saveResult = m_engine->saveItems(&items,
86+ QList<QtOrganizer::QOrganizerItemDetail::DetailType>(),
87+ &errorMap,
88+ &error);
89+ QVERIFY(saveResult);
90+ QCOMPARE(error, QtOrganizer::QOrganizerManager::NoError);
91+
92+ // check if the item was updated
93+ items = m_engine->items(QList<QOrganizerItemId>() << parentId,
94+ QOrganizerItemFetchHint(),
95+ &errorMap, &error);
96+ QCOMPARE(items.size(), 1);
97+ result = items[0];
98+
99+ QCOMPARE(result.collectionId(), ev.collectionId());
100+ QCOMPARE(result.startDateTime(), ev.startDateTime());
101+ QCOMPARE(result.endDateTime(), ev.endDateTime());
102+
103+ QCOMPARE(result.displayLabel(), ev.displayLabel());
104+ QCOMPARE(result.description(), ev.description());
105+
106+ savedRule = result.recurrenceRule();
107+ QCOMPARE(savedRule.frequency(), rule.frequency());
108+ QCOMPARE(savedRule.daysOfWeek(), rule.daysOfWeek());
109+ QVERIFY(!savedRule.daysOfWeek().contains(Qt::Monday));
110+ QCOMPARE(savedRule.limitType(), QOrganizerRecurrenceRule::NoLimit);
111+ QCOMPARE(savedRule.limitDate().isValid(), false);
112+ QCOMPARE(savedRule.limitCount(), -1);
113+ }
114 };
115
116 QTEST_MAIN(RecurrenceTest)

Subscribers

People subscribed via source and target branches