on xenial help sign in
Add ability for mock to change number of sessions
c09e2b9Josh Arenson
tests/mocks/LightDM/IntegratedLightDM/MockSessionsModel.cpp+29
@@ -18,6 +18,23 @@
18#include "MockSessionsModel.h"
18#include "MockSessionsModel.h"
19#include <QLightDM/SessionsModel>
19#include <QLightDM/SessionsModel>
20
20
21+
22+int MockSessionsModel::numSessions() const
23+{
24+ QLightDM::SessionsModel* qSessionsModel =
25+ static_cast<QLightDM::SessionsModel*>(sourceModel());
26+
27+ return qSessionsModel->numSessions();
28+}
29+
30+int MockSessionsModel::numAvailableSessions() const
31+{
32+ QLightDM::SessionsModel* qSessionsModel =
33+ static_cast<QLightDM::SessionsModel*>(sourceModel());
34+
35+ return qSessionsModel->numAvailableSessions();
36+}
37+
21QString MockSessionsModel::testScenario() const
38QString MockSessionsModel::testScenario() const
22{
39{
23 QLightDM::SessionsModel* qSessionsModel =
40 QLightDM::SessionsModel* qSessionsModel =
@@ -26,6 +43,17 @@ QString MockSessionsModel::testScenario() const
26 return qSessionsModel->testScenario();
43 return qSessionsModel->testScenario();
27}
44}
28
45
46+void MockSessionsModel::setNumSessions(const int numSessions)
47+{
48+ QLightDM::SessionsModel* qSessionsModel =
49+ static_cast<QLightDM::SessionsModel*>(sourceModel());
50+
51+ if (qSessionsModel->numSessions() != numSessions) {
52+ qSessionsModel->setNumSessions(numSessions);
53+ Q_EMIT numSessionsChanged();
54+ }
55+}
56+
29void MockSessionsModel::setTestScenario(const QString testScenario)
57void MockSessionsModel::setTestScenario(const QString testScenario)
30{
58{
31 QLightDM::SessionsModel* qSessionsModel =
59 QLightDM::SessionsModel* qSessionsModel =
@@ -33,5 +61,6 @@ void MockSessionsModel::setTestScenario(const QString testScenario)
33
61
34 if (qSessionsModel->testScenario() != testScenario) {
62 if (qSessionsModel->testScenario() != testScenario) {
35 qSessionsModel->setTestScenario(testScenario);
63 qSessionsModel->setTestScenario(testScenario);
64+ Q_EMIT testScenarioChanged();
36 }
65 }
37}
66}
tests/mocks/LightDM/IntegratedLightDM/MockSessionsModel.h+12−2
@@ -24,11 +24,21 @@ class MockSessionsModel : public SessionsModel
24{
24{
25 Q_OBJECT
25 Q_OBJECT
26
26
27+ Q_PROPERTY(int numAvailableSessions READ numAvailableSessions CONSTANT)
28+ Q_PROPERTY(int numSessions READ numSessions WRITE setNumSessions NOTIFY numSessionsChanged)
27− Q_PROPERTY(QString testScenario READ testScenario WRITE setTestScenario)
29+ Q_PROPERTY(QString testScenario READ testScenario WRITE setTestScenario NOTIFY testScenarioChanged)
28
30
29public:
31public:
32+ int numAvailableSessions() const;
33+ int numSessions() const;
30 QString testScenario() const;
34 QString testScenario() const;
35+ void setNumSessions(const int numSessions);
31− void setTestScenario(QString testScenario);
36+ void setTestScenario(const QString testScenario);
37+
38+Q_SIGNALS:
39+ void numSessionsChanged();
40+ void testScenarioChanged();
41+
32};
42};
33
43
34#endif // MOCK_UNITY_SESSIONSMODEL_H
44#endif // MOCK_UNITY_SESSIONSMODEL_H
tests/mocks/LightDM/IntegratedLightDM/liblightdm/SessionsModel.cpp+22
@@ -80,12 +80,34 @@ int SessionsModel::rowCount(const QModelIndex& parent) const
80 }
80 }
81}
81}
82
82
83+int SessionsModel::numSessions() const
84+{
85+ Q_D(const SessionsModel);
86+ return d->numSessions;
87+}
88+
89+int SessionsModel::numAvailableSessions() const
90+{
91+ Q_D(const SessionsModel);
92+ return d->numAvailableSessions();
93+}
94+
83QString SessionsModel::testScenario() const
95QString SessionsModel::testScenario() const
84{
96{
85 Q_D(const SessionsModel);
97 Q_D(const SessionsModel);
86 return d->testScenario;
98 return d->testScenario;
87}
99}
88
100
101+void SessionsModel::setNumSessions(int numSessions)
102+{
103+ Q_D(SessionsModel);
104+
105+ if (d->numSessions != numSessions) {
106+ d->numSessions = numSessions;
107+ d->resetEntries();
108+ }
109+}
110+
89void SessionsModel::setTestScenario(QString testScenario)
111void SessionsModel::setTestScenario(QString testScenario)
90{
112{
91 Q_D(SessionsModel);
113 Q_D(SessionsModel);
tests/mocks/LightDM/IntegratedLightDM/liblightdm/SessionsModel.h+3−3
@@ -31,9 +31,6 @@ class Q_DECL_EXPORT SessionsModel : public QAbstractListModel
31
31
32 Q_ENUMS(SessionModelRoles SessionType)
32 Q_ENUMS(SessionModelRoles SessionType)
33
33
34− // Mock-only API for testing purposes
35− Q_PROPERTY(QString testScenario READ testScenario WRITE setTestScenario)
36−
37 public:
34 public:
38
35
39 enum SessionModelRoles {
36 enum SessionModelRoles {
@@ -57,7 +54,10 @@ class Q_DECL_EXPORT SessionsModel : public QAbstractListModel
57 int rowCount(const QModelIndex& parent) const override;
54 int rowCount(const QModelIndex& parent) const override;
58 QVariant data(const QModelIndex& index, int role) const override;
55 QVariant data(const QModelIndex& index, int role) const override;
59
56
57+ int numSessions() const;
58+ int numAvailableSessions() const;
60 QString testScenario() const;
59 QString testScenario() const;
60+ void setNumSessions(int numSessions);
61 void setTestScenario(QString testScenario);
61 void setTestScenario(QString testScenario);
62
62
63 protected:
63 protected:
tests/mocks/LightDM/IntegratedLightDM/liblightdm/SessionsModelPrivate.cpp+27−17
@@ -16,24 +16,44 @@
16
16
17#include "SessionsModel.h"
17#include "SessionsModel.h"
18#include "SessionsModelPrivate.h"
18#include "SessionsModelPrivate.h"
19−
19+#include <QDebug>
20namespace QLightDM
20namespace QLightDM
21{
21{
22
22
23SessionsModelPrivate::SessionsModelPrivate(SessionsModel* parent)
23SessionsModelPrivate::SessionsModelPrivate(SessionsModel* parent)
24 : testScenario("singleSession")
24 : testScenario("singleSession")
25+ , m_availableSessions(
26+ {
27+ {"ubuntu", "", "Ubuntu", ""},
28+ {"ubuntu-2d", "", "Ubuntu 2D", ""},
29+ {"gnome", "", "GNOME", ""},
30+ {"gnome-classic", "", "GNOME Classic", ""},
31+ {"gnome-flashback-compiz", "", "GNOME Flashback (Compiz)", ""},
32+ {"gnome-flashback-metacity", "", "GNOME Flashback (Metacity)", ""},
33+ {"gnome-wayland", "", "GNOME on Wayland", ""},
34+ {"plasma", "", "Plasma", ""},
35+ {"kde", "", "KDE" , ""},
36+ {"xterm", "", "Recovery Console", ""},
37+ {"", "", "Unknown?", ""}
38+ })
25 , q_ptr(parent)
39 , q_ptr(parent)
26{
40{
41+ numSessions = numAvailableSessions();
27 resetEntries();
42 resetEntries();
28}
43}
29
44
45+int SessionsModelPrivate::numAvailableSessions() const
46+{
47+ return m_availableSessions.length();
48+}
49+
30void SessionsModelPrivate::resetEntries()
50void SessionsModelPrivate::resetEntries()
31{
51{
32 Q_Q(SessionsModel);
52 Q_Q(SessionsModel);
33
53
34 q->beginResetModel();
54 q->beginResetModel();
35 if (testScenario == "multipleSessions") {
55 if (testScenario == "multipleSessions") {
36− resetEntries_multipleSessions();
56+ resetEntries_multipleSessions(numSessions);
37 } else if (testScenario == "noSessions") {
57 } else if (testScenario == "noSessions") {
38 resetEntries_noSessions();
58 resetEntries_noSessions();
39 } else {
59 } else {
@@ -42,22 +62,12 @@ void SessionsModelPrivate::resetEntries()
42 q->endResetModel();
62 q->endResetModel();
43}
63}
44
64
45−void SessionsModelPrivate::resetEntries_multipleSessions()
65+void SessionsModelPrivate::resetEntries_multipleSessions(int numSessions)
46{
66{
47− sessionItems =
67+ sessionItems.clear();
48− {
68+ for (int i = 0; i < numSessions; i++) {
49− {"ubuntu", "", "Ubuntu", ""},
69+ sessionItems.append(m_availableSessions.value(i));
50− {"ubuntu-2d", "", "Ubuntu 2D", ""},
70+ }
51− {"gnome", "", "GNOME", ""},
52− {"gnome-classic", "", "GNOME Classic", ""},
53− {"gnome-flashback-compiz", "", "GNOME Flashback (Compiz)", ""},
54− {"gnome-flashback-metacity", "", "GNOME Flashback (Metacity)", ""},
55− {"gnome-wayland", "", "GNOME on Wayland", ""},
56− {"plasma", "", "Plasma", ""},
57− {"kde", "", "KDE" , ""},
58− {"xterm", "", "Recovery Console", ""},
59− {"", "", "Unknown?", ""}
60− };
61}
71}
62
72
63void SessionsModelPrivate::resetEntries_noSessions()
73void SessionsModelPrivate::resetEntries_noSessions()
tests/mocks/LightDM/IntegratedLightDM/liblightdm/SessionsModelPrivate.h+5−1
@@ -40,7 +40,10 @@ public:
40 explicit SessionsModelPrivate(SessionsModel* parent=0);
40 explicit SessionsModelPrivate(SessionsModel* parent=0);
41 virtual ~SessionsModelPrivate() = default;
41 virtual ~SessionsModelPrivate() = default;
42
42
43+ int numAvailableSessions() const;
44+
43 QList<SessionItem> sessionItems;
45 QList<SessionItem> sessionItems;
46+ int numSessions;
44 QString testScenario;
47 QString testScenario;
45
48
46 void resetEntries();
49 void resetEntries();
@@ -48,7 +51,8 @@ protected:
48 SessionsModel* const q_ptr;
51 SessionsModel* const q_ptr;
49
52
50private:
53private:
54+ const QList<SessionItem> m_availableSessions;
51− void resetEntries_multipleSessions();
55+ void resetEntries_multipleSessions(int numSessions);
52 void resetEntries_noSessions();
56 void resetEntries_noSessions();
53 void resetEntries_singleSession();
57 void resetEntries_singleSession();
54 Q_DECLARE_PUBLIC(SessionsModel)
58 Q_DECLARE_PUBLIC(SessionsModel)
tests/qmltests/Greeter/tst_WideView.qml+26−3
@@ -24,6 +24,9 @@ import Unity.Test 0.1 as UT
24
24
25StyledItem {
25StyledItem {
26 id: root
26 id: root
27+
28+ property int numSessions: LightDM.Sessions.numSessions
29+
27 width: units.gu(120)
30 width: units.gu(120)
28 height: units.gu(80)
31 height: units.gu(80)
29
32
@@ -108,7 +111,6 @@ StyledItem {
108 color: theme.palette.normal.background
111 color: theme.palette.normal.background
109 width: units.gu(40)
112 width: units.gu(40)
110 height: parent.height
113 height: parent.height
111−
112 Column {
114 Column {
113 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
115 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
114 spacing: units.gu(1)
116 spacing: units.gu(1)
@@ -263,8 +265,9 @@ StyledItem {
263 }
265 }
264 }
266 }
265 Row {
267 Row {
268+ id: multipleSessions
266 CheckBox {
269 CheckBox {
267− id: multipleSessions
270+ id: multipleSessionsCheckbox
268 onClicked: {
271 onClicked: {
269 if (checked) {
272 if (checked) {
270 LightDM.Sessions.testScenario = "multipleSessions"
273 LightDM.Sessions.testScenario = "multipleSessions"
@@ -274,7 +277,27 @@ StyledItem {
274 }
277 }
275 }
278 }
276 Label {
279 Label {
277− text: "Multiple sessions"
280+ text: "Multiple Sessions"
281+ }
282+ }
283+ Row {
284+ id: numSessions
285+ Slider {
286+ id: numSessionsSlider
287+
288+ width: units.gu(10)
289+ minimumValue: 0
290+ maximumValue: LightDM.Sessions.numAvailableSessions
291+ value: root.numSessions
292+ visible: LightDM.Sessions.testScenario === "multipleSessions"
293+ Binding {
294+ target: LightDM.Sessions
295+ property: "numSessions"
296+ value: numSessionsSlider.value
297+ }
298+ }
299+ Label {
300+ text: "Available Sessions"
278 }
301 }
279 }
302 }
280 Row {
303 Row {