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 @@ -34,8 +34,6 @@ class Contacts extends \Tests\Browser\TestCase $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'); 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 @@ +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 @@ -8,6 +8,7 @@ Contacts/Contacts.php + Contacts/Groups.php Contacts/Import.php Contacts/Export.php