Merge lp:~renatofilho/qtorganizer5-eds/fix-signal-order into lp:~ubuntu-sdk-team/qtorganizer5-eds/trunk

Proposed by Renato Araujo Oliveira Filho
Status: Merged
Approved by: Gustavo Pichorim Boiko
Approved revision: 15
Merged at revision: 13
Proposed branch: lp:~renatofilho/qtorganizer5-eds/fix-signal-order
Merge into: lp:~ubuntu-sdk-team/qtorganizer5-eds/trunk
Diff against target: 127 lines (+70/-4)
3 files modified
qorganizer/qorganizer-eds-removerequestdata.cpp (+1/-1)
qorganizer/qorganizer-eds-saverequestdata.cpp (+0/-2)
tests/unittest/event-test.cpp (+69/-1)
To merge this branch: bzr merge lp:~renatofilho/qtorganizer5-eds/fix-signal-order
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve
Gustavo Pichorim Boiko (community) Approve
Review via email: mp+184783@code.launchpad.net

Commit message

Avoid emit signal item removed before query finish.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
14. By Renato Araujo Oliveira Filho

Removed use of extra variable to store the removed ids.

15. By Renato Araujo Oliveira Filho

Created unit test for check the order that the signal is fired.

Revision history for this message
Gustavo Pichorim Boiko (boiko) wrote :

Looks good!

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

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'qorganizer/qorganizer-eds-removerequestdata.cpp'
2--- qorganizer/qorganizer-eds-removerequestdata.cpp 2013-09-04 01:33:06 +0000
3+++ qorganizer/qorganizer-eds-removerequestdata.cpp 2013-09-16 18:53:18 +0000
4@@ -72,6 +72,7 @@
5 QMap<int, QOrganizerManager::Error>(),
6 QOrganizerAbstractRequest::FinishedState);
7
8+ m_changeSet.emitSignals(m_parent);
9 }
10
11 GSList *RemoveRequestData::compIds() const
12@@ -88,7 +89,6 @@
13 QOrganizerAbstractRequest::ActiveState);
14
15 m_changeSet.insertRemovedItems(m_currentIds);
16- m_changeSet.emitSignals(m_parent);
17 m_currentCollectionId = QOrganizerCollectionId();
18 clear();
19 }
20
21=== modified file 'qorganizer/qorganizer-eds-saverequestdata.cpp'
22--- qorganizer/qorganizer-eds-saverequestdata.cpp 2013-08-14 21:23:01 +0000
23+++ qorganizer/qorganizer-eds-saverequestdata.cpp 2013-09-16 18:53:18 +0000
24@@ -38,14 +38,12 @@
25
26 void SaveRequestData::finish(QtOrganizer::QOrganizerManager::Error error)
27 {
28-
29 QOrganizerManagerEngine::updateItemSaveRequest(request<QOrganizerItemSaveRequest>(),
30 m_result,
31 error,
32 QMap<int, QOrganizerManager::Error>(),
33 QOrganizerAbstractRequest::FinishedState);
34 Q_FOREACH(QOrganizerItem item, m_result) {
35- qDebug() << "Item Added" << item.id();
36 m_changeSet.insertAddedItem(item.id());
37 }
38 m_changeSet.emitSignals(m_parent);
39
40=== modified file 'tests/unittest/event-test.cpp'
41--- tests/unittest/event-test.cpp 2013-09-07 23:37:27 +0000
42+++ tests/unittest/event-test.cpp 2013-09-16 18:53:18 +0000
43@@ -37,8 +37,25 @@
44 static const QString collectionTypePropertyName;
45 static const QString taskListTypeName;
46
47+ QDateTime m_itemRemovedTime;
48+ QDateTime m_requestFinishedTime;
49+
50 private Q_SLOTS:
51- void testCreateEventWithReminder()
52+ //helper
53+ void itemRemoved()
54+ {
55+ m_itemRemovedTime = QDateTime::currentDateTime();
56+ }
57+
58+ void requestFinished(QOrganizerAbstractRequest::State state)
59+ {
60+ if (state == QOrganizerAbstractRequest::FinishedState) {
61+ m_requestFinishedTime = QDateTime::currentDateTime();
62+ }
63+ }
64+
65+ // test functions
66+ void xtestCreateEventWithReminder()
67 {
68 static QString displayLabelValue = QStringLiteral("Todo test");
69 static QString descriptionValue = QStringLiteral("Todo description");
70@@ -125,6 +142,57 @@
71 QCOMPARE(vReminder2.dataUrl(), vReminder.dataUrl());
72 QCOMPARE(vReminder2.message(), vReminder.message());
73 }
74+
75+ void testRemoveEvent()
76+ {
77+ static QString displayLabelValue = QStringLiteral("event to be removed");
78+ static QString descriptionValue = QStringLiteral("removable event");
79+
80+ QOrganizerEDSEngine *engine = QOrganizerEDSEngine::createEDSEngine(QMap<QString, QString>());
81+
82+ QOrganizerCollection collection;
83+ QtOrganizer::QOrganizerManager::Error error;
84+ collection.setMetaData(QOrganizerCollection::KeyName, defaultTaskCollectionName + "_TODELETE");
85+ collection.setExtendedMetaData(collectionTypePropertyName, taskListTypeName);
86+ QVERIFY(engine->saveCollection(&collection, &error));
87+
88+ QOrganizerTodo todo;
89+ todo.setCollectionId(collection.id());
90+ todo.setStartDateTime(QDateTime(QDate(2013, 9, 3), QTime(0,30,0)));
91+ todo.setDisplayLabel(displayLabelValue);
92+ todo.setDescription(descriptionValue);
93+
94+ QMap<int, QtOrganizer::QOrganizerManager::Error> errorMap;
95+ QList<QOrganizerItem> items;
96+ items << todo;
97+ bool saveResult = engine->saveItems(&items,
98+ QList<QtOrganizer::QOrganizerItemDetail::DetailType>(),
99+ &errorMap,
100+ &error);
101+ QVERIFY(saveResult);
102+ QCOMPARE(error, QOrganizerManager::NoError);
103+ QVERIFY(errorMap.isEmpty());
104+ QVERIFY(!items[0].id().isNull());
105+
106+ QTest::qSleep(1000);
107+
108+ m_itemRemovedTime = QDateTime();
109+ m_requestFinishedTime = QDateTime();
110+
111+ QOrganizerItemRemoveRequest req;
112+ connect(&req, SIGNAL(stateChanged(QOrganizerAbstractRequest::State)),
113+ this, SLOT(requestFinished(QOrganizerAbstractRequest::State)));
114+ connect(engine, SIGNAL(itemsRemoved(QList<QOrganizerItemId>)),
115+ this, SLOT(itemRemoved()));
116+ req.setItem(items[0]);
117+ engine->startRequest(&req);
118+ engine->waitForRequestFinished(&req, -1);
119+
120+ // check if the signal item removed was fired after the request finish
121+ QVERIFY(!m_itemRemovedTime.isValid());
122+ QVERIFY(m_requestFinishedTime.isValid());
123+ QVERIFY(m_requestFinishedTime > m_itemRemovedTime);
124+ }
125 };
126
127 const QString EventTest::defaultCollectionName = QStringLiteral("TEST_EVENT_COLLECTION");

Subscribers

People subscribed via source and target branches