Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2533993
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
10 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/tests/Browser/Contacts/Contacts.php b/tests/Browser/Contacts/Contacts.php
index 6eac02c40..abb4ac082 100644
--- a/tests/Browser/Contacts/Contacts.php
+++ b/tests/Browser/Contacts/Contacts.php
@@ -1,83 +1,81 @@
<?php
namespace Tests\Browser\Contacts;
use Tests\Browser\Components\App;
class Contacts extends \Tests\Browser\TestCase
{
protected function setUp()
{
parent::setUp();
\bootstrap::init_db();
}
/**
* Contacts UI Basics
*/
public function testContactsUI()
{
$this->browse(function ($browser) {
$browser->go('addressbook');
$browser->with(new App(), function ($browser) {
// check task
$browser->assertEnv('task', 'addressbook');
// these objects should be there always
$browser->assertObjects(['qsearchbox', 'folderlist', 'contactslist', 'countdisplay']);
});
if (!$browser->isDesktop()) {
$browser->assertMissing('#directorylist');
$browser->click('a.back-sidebar-button');
}
- $browser->assertSeeIn('#layout-sidebar .header', 'Groups');
-
// Groups/Addressbooks list
$browser->assertVisible('#directorylist');
$browser->assertSeeIn('#directorylist li:first-child', 'Personal Addresses');
$browser->assertMissing('#directorylist .treetoggle.expanded');
// Contacts list
if (!$browser->isDesktop()) {
$browser->assertMissing('#contacts-table');
$browser->click('#directorylist li:first-child');
$browser->waitFor('#contacts-table');
}
else {
$browser->assertVisible('#contacts-table');
}
// Contacts list menu
if ($browser->isPhone()) {
$browser->assertToolbarMenu(['select'], []);
}
else if ($browser->isTablet()) {
$browser->click('.toolbar-list-button')
->waitFor('#toolbar-list-menu')
->assertVisible('#toolbar-list-menu a.select:not(.disabled)')
->click();
}
else {
$browser->assertVisible('#toolbar-list-menu a.select:not(.disabled)');
}
// Toolbar menu
$browser->assertToolbarMenu(
['create', 'search', 'import', 'export'], // active items
['print', 'delete', 'more'], // inactive items
);
// Contact frame
if (!$browser->isPhone()) {
$browser->assertVisible('#contact-frame');
}
// Task menu
$browser->assertTaskMenu('contacts');
});
}
}
diff --git a/tests/Browser/Contacts/Groups.php b/tests/Browser/Contacts/Groups.php
new file mode 100644
index 000000000..9529de1b7
--- /dev/null
+++ b/tests/Browser/Contacts/Groups.php
@@ -0,0 +1,183 @@
+<?php
+
+namespace Tests\Browser\Contacts;
+
+use Tests\Browser\Components\Popupmenu;
+
+class Groups extends \Tests\Browser\TestCase
+{
+ /**
+ * Contact groups UI basics
+ */
+ public function testGroups()
+ {
+ \bootstrap::init_db();
+
+ $this->browse(function ($browser) {
+ $browser->go('addressbook');
+
+ if (!$browser->isDesktop()) {
+ $browser->assertMissing('#directorylist');
+ $browser->click('a.back-sidebar-button');
+ }
+
+ // Groups/Addressbooks list
+ $browser->assertVisible('#directorylist');
+ $browser->assertSeeIn('#directorylist li:first-child', 'Personal Addresses');
+
+ $browser->assertSeeIn('#layout-sidebar .header', 'Groups');
+
+ $browser->click('#layout-sidebar .header .sidebar-menu');
+
+ $browser->with(new Popupmenu('groupoptions-menu'), function ($browser) {
+ // Note: These are button class names, not action names
+ $active = ['create'];
+ $disabled = ['group.rename', 'group.delete', 'search', 'search.delete'];
+
+ $browser->assertMenuState($active, $disabled);
+ $browser->closeMenu();
+ });
+ });
+ }
+
+ /**
+ * Contact group creation
+ */
+ public function testGroupCreate()
+ {
+ $this->browse(function ($browser) {
+ $browser->go('addressbook');
+
+ if (!$browser->isDesktop()) {
+ $browser->click('a.back-sidebar-button');
+ }
+
+ $browser->click('#layout-sidebar .header .sidebar-menu');
+
+ $browser->with(new Popupmenu('groupoptions-menu'), function ($browser) {
+ $browser->clickMenuItem('create');
+ });
+
+ $browser->waitFor('.ui-dialog');
+ $browser->with('.ui-dialog', function ($browser) {
+ $browser
+ ->assertSeeIn('.ui-dialog-titlebar', 'Create new group')
+ ->assertFocused('input.form-control')
+ ->type('input.form-control', 'New Group')
+ ->click('button.mainaction');
+ });
+
+ $browser->waitUntilMissing('.ui-dialog');
+
+ $browser->with('#directorylist', function ($browser) {
+ $browser->waitFor('li:first-child ul.groups');
+ $browser->assertVisible('.treetoggle.expanded');
+
+ $this->assertCount(1, $browser->elements('ul.groups > li.contactgroup'));
+ $browser->assertSeeIn('ul.groups > li.contactgroup', 'New Group');
+
+ // Test expand toggle
+ $browser->click('.treetoggle.expanded')
+ ->assertMissing('ul.groups')
+ ->click('.treetoggle.collapsed')
+ ->assertSeeIn('ul.groups > li.contactgroup', 'New Group');
+ });
+ });
+ }
+
+ /**
+ * Contact group rename
+ *
+ * @depends testGroupCreate
+ */
+ public function testGroupRename()
+ {
+ $this->browse(function ($browser) {
+ $browser->go('addressbook');
+
+ if (!$browser->isDesktop()) {
+ $browser->click('a.back-sidebar-button');
+ }
+
+ $browser->click('#directorylist ul.groups > li:first-child');
+
+ if (!$browser->isDesktop()) {
+ $browser->click('a.back-sidebar-button');
+ }
+
+ $browser->click('#layout-sidebar .header .sidebar-menu');
+
+ $browser->with(new Popupmenu('groupoptions-menu'), function ($browser) {
+ $browser->clickMenuItem('group.rename');
+ });
+
+ $browser->waitFor('.ui-dialog');
+ $browser->with('.ui-dialog', function ($browser) {
+ $browser->assertSeeIn('.ui-dialog-titlebar', 'Rename group')
+ ->assertFocused('input.form-control')
+ ->assertValue('input.form-control', 'New Group')
+ ->type('input.form-control', 'Renamed')
+ ->click('button.mainaction');
+ });
+
+ $browser->waitUntilMissing('.ui-dialog');
+
+ $browser->with('#directorylist', function ($browser) {
+ $browser->waitFor('li:first-child ul.groups');
+ $browser->assertVisible('.treetoggle.expanded');
+
+ $this->assertCount(1, $browser->elements('ul.groups > li.contactgroup'));
+ $browser->assertSeeIn('ul.groups > li.contactgroup', 'Renamed');
+
+ // Test if expand toggle is still working
+ $browser->click('.treetoggle.expanded')
+ ->assertMissing('ul.groups')
+ ->click('.treetoggle.collapsed')
+ ->assertSeeIn('ul.groups > li.contactgroup', 'Renamed');
+ });
+ });
+ }
+
+ /**
+ * Contact group deletion
+ *
+ * @depends testGroupRename
+ */
+ public function testGroupDelete()
+ {
+ $this->browse(function ($browser) {
+ $browser->go('addressbook');
+
+ if (!$browser->isDesktop()) {
+ $browser->click('a.back-sidebar-button');
+ }
+
+ $browser->click('#directorylist ul.groups > li:first-child');
+
+ if (!$browser->isDesktop()) {
+ $browser->click('a.back-sidebar-button');
+ }
+
+ $browser->click('#layout-sidebar .header .sidebar-menu');
+
+ $browser->with(new Popupmenu('groupoptions-menu'), function ($browser) {
+ $browser->clickMenuItem('group.delete');
+ });
+
+ $browser->waitFor('.ui-dialog');
+ $browser->with('.ui-dialog', function ($browser) {
+ $browser->assertSeeIn('.ui-dialog-titlebar', 'Are you sure...')
+ ->assertSeeIn('.ui-dialog-content', 'Do you really want to delete selected group?')
+ ->assertFocused('button.mainaction.delete')
+ ->click('button.mainaction.delete');
+ });
+
+ $browser->waitUntilMissing('.ui-dialog');
+
+ $browser->with('#directorylist', function ($browser) {
+ $browser->assertMissing('.treetoggle.expanded')
+ ->assertMissing('ul.groups');
+ });
+ });
+ }
+}
diff --git a/tests/Browser/phpunit.xml b/tests/Browser/phpunit.xml
index b3ec82607..a131be0b9 100644
--- a/tests/Browser/phpunit.xml
+++ b/tests/Browser/phpunit.xml
@@ -1,31 +1,32 @@
<phpunit backupGlobals="false"
bootstrap="bootstrap.php"
colors="true">
<testsuites>
<testsuite name="Logon">
<file>Logon/Login.php</file>
<file>Logon/Logout.php</file>
</testsuite>
<testsuite name="Contacts">
<file>Contacts/Contacts.php</file>
+ <file>Contacts/Groups.php</file>
<file>Contacts/Import.php</file>
<file>Contacts/Export.php</file>
</testsuite>
<testsuite name="Settings">
<file>Settings/Settings.php</file>
<file>Settings/Preferences.php</file>
<file>Settings/Preferences/General.php</file>
<file>Settings/Folders.php</file>
<file>Settings/Identities.php</file>
<file>Settings/Responses.php</file>
<file>Settings/About.php</file>
</testsuite>
<testsuite name="Mail">
<file>Mail/Mail.php</file>
<file>Mail/Compose.php</file>
<file>Mail/Getunread.php</file>
<file>Mail/List.php</file>
<file>Mail/Open.php</file>
</testsuite>
</testsuites>
</phpunit>
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Fri, Feb 6, 5:01 AM (8 h, 22 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
428105
Default Alt Text
(10 KB)
Attached To
Mode
R3 roundcubemail
Attached
Detach File
Event Timeline
Log In to Comment