aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavi Garcia Mena <xavi.garcia.mena@canonical.com>2015-10-01 15:15:16 +0200
committerXavi Garcia Mena <xavi.garcia.mena@canonical.com>2015-10-01 15:15:16 +0200
commit2dba91ca24ce98f866498333c7a39e20d68813f7 (patch)
treea7ccbc1f9eaf06d9cb50d766d7476fe70ffef38f
parent5d88ce9836c1d32abfd369e650354ed855ec4654 (diff)
downloadayatana-indicator-sound-2dba91ca24ce98f866498333c7a39e20d68813f7.tar.gz
ayatana-indicator-sound-2dba91ca24ce98f866498333c7a39e20d68813f7.tar.bz2
ayatana-indicator-sound-2dba91ca24ce98f866498333c7a39e20d68813f7.zip
added mechanism to wait for the gmenu to change. Added player test for the phone profile
-rw-r--r--tests/dbus-types/CMakeLists.txt6
-rw-r--r--tests/dbus-types/org.gtk.Actions.xml13
-rw-r--r--tests/dbus-types/org.gtk.Menus.xml6
-rw-r--r--tests/integration/indicator-sound-test-base.cpp38
-rw-r--r--tests/integration/indicator-sound-test-base.h4
-rw-r--r--tests/integration/test-indicator.cpp47
6 files changed, 91 insertions, 23 deletions
diff --git a/tests/dbus-types/CMakeLists.txt b/tests/dbus-types/CMakeLists.txt
index 6346e25..30dff60 100644
--- a/tests/dbus-types/CMakeLists.txt
+++ b/tests/dbus-types/CMakeLists.txt
@@ -24,15 +24,15 @@ set_source_files_properties(${dbusinterface_properties_xml} PROPERTIES
NO_NAMESPACE YES
INCLUDE "dbus-types.h")
-set(dbusinterface_menus_xml "org.gtk.Menus.xml")
-set_source_files_properties(${dbusinterface_menus_xml} PROPERTIES
+set(dbusinterface_actions_xml "org.gtk.Actions.xml")
+set_source_files_properties(${dbusinterface_actions_xml} PROPERTIES
CLASSNAME MenusInterface)
qt5_add_dbus_interface(interface_files ${dbusinterface_streamrestore_xml} stream_restore_interface)
qt5_add_dbus_interface(interface_files ${dbusinterface_properties_xml} dbus_properties_interface)
qt5_add_dbus_interface(interface_files ${dbusinterface_accounts_xml} dbus_accounts_interface)
qt5_add_dbus_interface(interface_files ${dbusinterface_accountssound_xml} dbus_accountssound_interface)
-qt5_add_dbus_interface(interface_files ${dbusinterface_menus_xml} dbus_menus_interface)
+qt5_add_dbus_interface(interface_files ${dbusinterface_actions_xml} dbus_menus_interface)
add_library(
sound-indicator-dbus-interfaces
diff --git a/tests/dbus-types/org.gtk.Actions.xml b/tests/dbus-types/org.gtk.Actions.xml
new file mode 100644
index 0000000..b691f1f
--- /dev/null
+++ b/tests/dbus-types/org.gtk.Actions.xml
@@ -0,0 +1,13 @@
+<node>
+ <interface name="org.gtk.Actions">
+ <signal name="Changed">
+ <arg name="removedActions" type="as" direction="in" />
+ <arg name="actionsFlags" type="a{sb}" direction="in" />
+ <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/>
+ <arg name="actionsChanged" type="a{sv}" direction="in" />
+ <annotation name="org.qtproject.QtDBus.QtTypeName.In2" value="QVariantMap"/>
+ <arg name="actionsAdded" type="a{s(bgav)}" direction="in" />
+ <annotation name="org.qtproject.QtDBus.QtTypeName.In3" value="QVariantMap"/>
+ </signal>
+ </interface>
+</node>
diff --git a/tests/dbus-types/org.gtk.Menus.xml b/tests/dbus-types/org.gtk.Menus.xml
deleted file mode 100644
index a0d6a83..0000000
--- a/tests/dbus-types/org.gtk.Menus.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<node>
- <interface name="org.gtk.Menus">
- <signal name="Changed">
- </signal>
- </interface>
-</node>
diff --git a/tests/integration/indicator-sound-test-base.cpp b/tests/integration/indicator-sound-test-base.cpp
index 16f0bd6..a8d41a0 100644
--- a/tests/integration/indicator-sound-test-base.cpp
+++ b/tests/integration/indicator-sound-test-base.cpp
@@ -140,7 +140,6 @@ bool IndicatorSoundTestBase::startTestSound(QString const &role)
if (!testSoundProcess.waitForStarted())
return false;
-// sleep(1);
return true;
}
@@ -218,7 +217,7 @@ void IndicatorSoundTestBase::startAccountsService()
new QProcessDBusService(DBusTypes::ACCOUNTS_SERVICE,
QDBusConnection::SystemBus,
ACCOUNTS_SERVICE_BIN,
- QStringList() ));
+ QStringList()));
accountsService->start(dbusTestRunner.systemConnection());
initializeAccountsInterface();
@@ -275,6 +274,7 @@ void IndicatorSoundTestBase::TearDown()
{
unsetenv("XDG_DATA_DIRS");
unsetenv("PULSE_SERVER");
+ unsetenv("DBUS_SYSTEM_BUS_ADDRESS");
}
void gvariant_deleter(GVariant* varptr)
@@ -338,20 +338,31 @@ unity::gmenuharness::MenuItemMatcher IndicatorSoundTestBase::silentModeSwitch(bo
bool IndicatorSoundTestBase::waitMenuChange()
{
+ if (signal_spy_menu_changed_)
+ {
+ return signal_spy_menu_changed_->wait();
+ }
+ return false;
+}
+
+bool IndicatorSoundTestBase::initializeMenuChangedSignal()
+{
if (!menu_interface_)
{
menu_interface_.reset(new MenusInterface("com.canonical.indicator.sound",
- "/com/canonical/indicator/sound/desktop",
- QDBusConnection::sessionBus(), 0));
+ "/com/canonical/indicator/sound",
+ dbusTestRunner.sessionConnection(), 0));
}
if (menu_interface_)
{
qDebug() << "Waiting for signal";
- QSignalSpy spy(menu_interface_.get(), &MenusInterface::Changed);
- qDebug() << "Signal count " << spy.count();
- return spy.wait();
+ signal_spy_menu_changed_.reset(new QSignalSpy(menu_interface_.get(), &MenusInterface::Changed));
}
- return false;
+ if (!menu_interface_ || !signal_spy_menu_changed_)
+ {
+ return false;
+ }
+ return true;
}
bool IndicatorSoundTestBase::waitVolumeChangedInIndicator()
@@ -368,27 +379,28 @@ void IndicatorSoundTestBase::initializeAccountsInterface()
auto username = qgetenv("USER");
if (username != "")
{
- std::unique_ptr<AccountsInterface> setInterface(new AccountsInterface("org.freedesktop.Accounts",
+ std::unique_ptr<AccountsInterface> accountsInterface(new AccountsInterface("org.freedesktop.Accounts",
"/org/freedesktop/Accounts",
- QDBusConnection::systemBus(), 0));
+ dbusTestRunner.systemConnection(), 0));
- QDBusReply<QDBusObjectPath> userResp = setInterface->call(QLatin1String("FindUserByName"),
+ QDBusReply<QDBusObjectPath> userResp = accountsInterface->call(QLatin1String("FindUserByName"),
QLatin1String(username));
if (!userResp.isValid())
{
qWarning() << "SetVolume::initializeAccountsInterface(): D-Bus error: " << userResp.error().message();
}
+
auto userPath = userResp.value().path();
if (userPath != "")
{
std::unique_ptr<AccountsSoundInterface> soundInterface(new AccountsSoundInterface("org.freedesktop.Accounts",
userPath,
- QDBusConnection::systemBus(), 0));
+ dbusTestRunner.systemConnection(), 0));
accounts_interface_.reset(new DBusPropertiesInterface("org.freedesktop.Accounts",
userPath,
- soundInterface->connection(), 0));
+ dbusTestRunner.systemConnection(), 0));
if (!accounts_interface_->isValid())
{
qWarning() << "SetVolume::initializeAccountsInterface(): D-Bus error: " << accounts_interface_->lastError().message();
diff --git a/tests/integration/indicator-sound-test-base.h b/tests/integration/indicator-sound-test-base.h
index 00ccf1a..0dc0052 100644
--- a/tests/integration/indicator-sound-test-base.h
+++ b/tests/integration/indicator-sound-test-base.h
@@ -75,6 +75,8 @@ protected:
bool waitMenuChange();
+ bool initializeMenuChangedSignal();
+
bool waitVolumeChangedInIndicator();
void initializeAccountsInterface();
@@ -98,4 +100,6 @@ protected:
std::unique_ptr<DBusPropertiesInterface> accounts_interface_;
std::unique_ptr<QSignalSpy> signal_spy_volume_changed_;
+
+ std::unique_ptr<QSignalSpy> signal_spy_menu_changed_;
};
diff --git a/tests/integration/test-indicator.cpp b/tests/integration/test-indicator.cpp
index 82f06a4..22c0041 100644
--- a/tests/integration/test-indicator.cpp
+++ b/tests/integration/test-indicator.cpp
@@ -206,6 +206,51 @@ TEST_F(TestIndicator, PhoneAddMprisPlayer)
.action("indicator.phone-settings")
)
).match());
+
+ // initialize the signal spy
+ EXPECT_TRUE(initializeMenuChangedSignal());
+
+ // start the test player
+ EXPECT_TRUE(startTestMprisPlayer("testplayer1"));
+
+ // wait fot the menu change
+ EXPECT_TRUE(waitMenuChange());
+
+ // finally verify that the player is added
+ EXPECT_MATCHRESULT(mh::MenuMatcher(phoneParameters())
+ .item(mh::MenuItemMatcher()
+ .action("indicator.root")
+ .string_attribute("x-canonical-type", "com.canonical.indicator.root")
+ .string_attribute("x-canonical-scroll-action", "indicator.scroll")
+ .string_attribute("x-canonical-secondary-action", "indicator.mute")
+ .string_attribute("submenu-action", "indicator.indicator-shown")
+ .mode(mh::MenuItemMatcher::Mode::all)
+ .submenu()
+ .item(mh::MenuItemMatcher()
+ .section()
+ .item(silentModeSwitch(false))
+ .item(volumeSlider(INITIAL_VOLUME))
+ )
+ .item(mh::MenuItemMatcher()
+ .section()
+ .item(mh::MenuItemMatcher()
+ .action("indicator.testplayer1.desktop")
+ .label("TestPlayer1")
+ .themed_icon("icon", {"testplayer"})
+ .string_attribute("x-canonical-type", "com.canonical.unity.media-player")
+ )
+ .item(mh::MenuItemMatcher()
+ .string_attribute("x-canonical-previous-action","indicator.previous.testplayer1.desktop")
+ .string_attribute("x-canonical-play-action","indicator.play.testplayer1.desktop")
+ .string_attribute("x-canonical-next-action","indicator.next.testplayer1.desktop")
+ .string_attribute("x-canonical-type","com.canonical.unity.playback-item")
+ )
+ )
+ .item(mh::MenuItemMatcher()
+ .label("Sound Settingsā€¦")
+ .action("indicator.phone-settings")
+ )
+ ).match());
}
TEST_F(TestIndicator, DesktopBasicInitialVolume)
@@ -516,7 +561,7 @@ TEST_F(TestIndicator, DesktopChangeRoleVolume)
EXPECT_TRUE(setSinkVolume(randomVolume));
if (randomVolume != INITIAL_VOLUME)
{
- EXPECT_FALSE(waitVolumeChangedInIndicator());
+ EXPECT_TRUE(waitVolumeChangedInIndicator());
}
// check the indicator