on xenial help sign in
Reset UserMetrics and Infographic state for each test. Check that user data is correctly updated when the day changes
commit0743ccc12d2afc0fc9b63134c99e99799022782d authorTomás Tormo <tomas.tormo@gmail.com> dateTue 11 Oct 2016, 11:13 (10 years ago) parentd76390f03243cb
3 files changed+79−18
tests/mocks/libusermetrics/UserMetrics.cpp+43−14 tests/mocks/libusermetrics/UserMetrics.h+4 tests/qmltests/Greeter/tst_Infographics.qml+32−4
tests/mocks/libusermetrics/UserMetrics.cpp+43−14
@@ -80,6 +80,7 @@ public:
8080 ColorTheme m_secondColor;
8181 QVariantListModel m_secondMonth;
8282 int m_currentDay;
83+ bool m_currentDayChanged;
8384 QString m_username;
8485 FakeDataMap::const_iterator m_dataIndex;
8586 UserMetricsDataPtr m_newData;
@@ -88,12 +89,16 @@ public:
8889 void setUsername(const QString &username);
8990
9091protected:
92+ void findAndSetUsername(const QString &username);
93+
9194 void nextFakeData();
9295
9396 void generateFakeData();
9497
9598 void loadFakeData();
9699
100+ void loadUserMetricsData();
101+
97102 void finishSetFakeData();
98103
99104private:
@@ -220,7 +225,7 @@ int UserMetricsData::length() const
220225}
221226
222227UserMetricsPrivate::UserMetricsPrivate(UserMetrics *parent) :
223− q_ptr(parent), m_firstColor(this), m_secondColor(this), m_currentDay(0)
228+ q_ptr(parent), m_firstColor(this), m_secondColor(this), m_currentDay(-1), m_currentDayChanged(false)
224229{
225230 m_fakeData.insert("", UserMetricsDataPtr(new UserMetricsData(this)));
226231}
@@ -229,12 +234,8 @@ UserMetricsPrivate::~UserMetricsPrivate()
229234{
230235}
231236
232−void UserMetricsPrivate::setUsername(const QString &username)
237+void UserMetricsPrivate::findAndSetUsername(const QString &username)
233238{
234− if (m_username == username && m_newData) {
235− return;
236− }
237−
238239 m_username = username;
239240
240241 m_dataIndex = m_fakeData.constFind(m_username);
@@ -242,7 +243,15 @@ void UserMetricsPrivate::setUsername(const QString &username)
242243 {
243244 m_dataIndex = m_fakeData.constFind("");
244245 }
246+}
247+
248+void UserMetricsPrivate::setUsername(const QString &username)
249+{
250+ if (m_username == username && m_newData) {
251+ return;
252+ }
245253
254+ findAndSetUsername(username);
246255 loadFakeData();
247256
248257 q_ptr->usernameChanged(m_username);
@@ -351,24 +360,27 @@ void UserMetricsPrivate::loadFakeData()
351360 // we emit no signal if the data has stayed empty
352361}
353362
354−void UserMetricsPrivate::finishSetFakeData()
363+void UserMetricsPrivate::loadUserMetricsData()
355364{
356− bool oldLabelEmpty = m_label.isEmpty();
357− bool newLabelEmpty = m_newData->label().isEmpty();
358−
359365 m_label = m_newData->label();
360366 m_firstColor = m_newData->firstColor();
361367 m_firstMonth.setVariantList(m_newData->firstMonth());
362368 m_secondColor = m_newData->secondColor();
363369 m_secondMonth.setVariantList(m_newData->secondMonth());
370+}
371+
372+void UserMetricsPrivate::finishSetFakeData()
373+{
374+ bool oldLabelEmpty = m_label.isEmpty();
375+ bool newLabelEmpty = m_newData->label().isEmpty();
364376
365− bool currentDayChanged = m_currentDay != m_username.length();
366− m_currentDay = m_username.length();
377+ loadUserMetricsData();
367378
368379 q_ptr->labelChanged(m_label);
369− if (currentDayChanged)
380+ if (m_currentDayChanged)
370381 {
371− q_ptr->currentDayChanged(m_currentDay);
382+ q_ptr->currentDayChanged(m_currentDay);
383+ m_currentDayChanged = false;
372384 }
373385
374386 if (oldLabelEmpty && !newLabelEmpty)
@@ -454,6 +466,14 @@ int UserMetrics::currentDay() const
454466 return d_ptr->m_currentDay;
455467}
456468
469+void UserMetrics::setDay(int day)
470+{
471+ if(day != d_ptr->m_currentDay){
472+ d_ptr->m_currentDay = day;
473+ d_ptr->m_currentDayChanged = true;
474+ }
475+}
476+
457477void UserMetrics::nextDataSourceSlot()
458478{
459479 d_ptr->nextFakeData();
@@ -464,6 +484,15 @@ void UserMetrics::readyForDataChangeSlot()
464484 d_ptr->finishSetFakeData();
465485}
466486
487+void UserMetrics::reset()
488+{
489+ d_ptr->m_currentDay = -1;
490+ d_ptr->m_currentDayChanged = false;
491+
492+ d_ptr->findAndSetUsername("");
493+ d_ptr->loadUserMetricsData();
494+}
495+
467496/**
468497 * Factory methods
469498 */
tests/mocks/libusermetrics/UserMetrics.h+4
@@ -57,10 +57,14 @@ public:
5757
5858 int currentDay() const;
5959
60+ Q_INVOKABLE void setDay(int day);
61+
6062 ColorTheme * secondColor() const;
6163
6264 QAbstractItemModel *secondMonth() const;
6365
66+ Q_INVOKABLE void reset();
67+
6468Q_SIGNALS:
6569 void labelChanged(const QString &label);
6670
tests/qmltests/Greeter/tst_Infographics.qml+32−4
@@ -44,9 +44,17 @@ Item {
4444 active: false
4545 anchors.fill: parent
4646
47+ property bool componentDestroyed: true
4748 sourceComponent: Component {
4849 Infographics {
50+ id: infographic
51+ width: loader.width
52+ height: loader.height
4953 model: infographicModel
54+
55+ Component.onDestruction: {
56+ loader.componentDestroyed = true
57+ }
5058 }
5159 }
5260 }
@@ -62,13 +70,24 @@ Item {
6270 property var pastCircles
6371 property var infographic
6472
65− function init() {
73+ function reloadInfographic() {
6674 loader.active = false;
6775 tryCompare(loader, "status", Loader.Null);
6876 tryCompare(loader, "item", null);
77+ tryCompare(loader, "componentDestroyed", true);
6978 loader.active = true;
7079 tryCompare(loader, "status", Loader.Ready);
80+ loader.componentDestroyed = false
7181 infographic = loader.item
82+ }
83+
84+ function reloadModel() {
85+ infographicModel.reset()
86+ }
87+
88+ function init() {
89+ reloadModel()
90+ reloadInfographic()
7291 dataCircle = findChild(infographic, "dataCircle")
7392 dots = findChild(infographic, "dots")
7493 label = findChild(infographic, "label")
@@ -118,15 +137,24 @@ Item {
118137 function test_set_current_day_data(data)
119138 {
120139 return [
121− { tag: "Same day", username: "", expectedDay: "".length}, // Expecting day 0, since the UserMetrics mock sets this value at creation time
122− { tag: "Different day", username: "has-password", expectedDay: "has-password".length},
140+ { tag: "Same day", expectedDay: 0, label: "<b>19</b> minutes talk time" },
141+ { tag: "Different day", expectedDay: 1, label: "<b>33</b> messages today" },
123142 ]
124143 }
125144
126145 function test_set_current_day(data)
127146 {
128− infographicModel.username = data.username
147+ //Given
148+ infographicModel.username = "single"
149+ infographic.currentDay = 0
150+
151+ //When
152+ infographicModel.setDay(data.expectedDay)
153+ infographic.startShowAnimation()
154+
155+ //Then
129156 tryCompare(infographic, "currentDay", data.expectedDay)
157+ tryCompare(label, "text", data.label)
130158 }
131159 }
132160