From f94b871aa6b1b260d2910311a4a69bf2e812db68 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Thu, 13 Feb 2020 21:21:01 +0100 Subject: [PATCH] Tests: Add browser tests for Markasjunk plugin --- .ci/config-test.inc.php | 2 +- plugins/markasjunk/tests/Browser/MailTest.php | 134 ++++++++++++++++++ 2 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 plugins/markasjunk/tests/Browser/MailTest.php diff --git a/.ci/config-test.inc.php b/.ci/config-test.inc.php index 7d0002891..d7bb8039b 100644 --- a/.ci/config-test.inc.php +++ b/.ci/config-test.inc.php @@ -20,6 +20,6 @@ $config['support_url'] = 'http://support.url'; // Plugins with tests -$config['plugins'] = ['archive', 'zipdownload']; +$config['plugins'] = ['archive', 'markasjunk', 'zipdownload']; $config['archive_mbox'] = 'Archive'; diff --git a/plugins/markasjunk/tests/Browser/MailTest.php b/plugins/markasjunk/tests/Browser/MailTest.php new file mode 100644 index 000000000..b06af7c40 --- /dev/null +++ b/plugins/markasjunk/tests/Browser/MailTest.php @@ -0,0 +1,134 @@ +browse(function ($browser) { + $browser->go('mail'); + + // Toolbar menu (Spam button inactive) + $browser->assertToolbarMenu([], ['junk']); + + $browser->whenAvailable('#messagelist tbody', function ($browser) { + $browser->ctrlClick('tr:last-child'); + }); + + $browser->clickToolbarMenuItem('junk') + ->waitForMessage('confirmation', 'Successfully reported as junk') + ->closeMessage('confirmation') + ->assertElementsCount('#messagelist tbody tr', 0) // empty list + ->waitForMessage('confirmation', 'Message(s) moved successfully.') + ->closeMessage('confirmation'); + + if (!$browser->isDesktop()) { + $browser->click('.back-sidebar-button'); + } + + // Folders list + $browser->whenAvailable('#mailboxlist', function ($browser) { + $browser->assertSeeIn('li.mailbox.junk .unreadcount', '1') + ->assertMissing('li.mailbox.inbox .unreadcount') + ->click('li.mailbox.junk') + ->waitUntilNotBusy(); + }); + + // Toolbar menu (Non-Junk button inactive) + $browser->assertToolbarMenu([], ['notjunk']); + + // Messages list contains the moved message + $browser->whenAvailable('#messagelist tbody', function ($browser) { + $browser->assertElementsCount('tr', 1) + ->ctrlClick('tr:last-child'); + }); + + $browser->clickToolbarMenuItem('notjunk') + ->waitForMessage('confirmation', 'Successfully reported as not junk') + ->closeMessage('confirmation') + ->assertElementsCount('#messagelist tbody tr', 0) // empty list + ->waitForMessage('confirmation', 'Message(s) moved successfully.') + ->closeMessage('confirmation'); + + if (!$browser->isDesktop()) { + $browser->click('.back-sidebar-button'); + } + + // Folders list, the message is back in INBOX + $browser->whenAvailable('#mailboxlist', function ($browser) { + $browser->assertMissing('li.mailbox.junk .unreadcount') + ->assertSeeIn('li.mailbox.inbox .unreadcount', '1') + ->click('li.mailbox.inbox') + ->waitUntilNotBusy(); + }); + + // Messages list contains the moved message + $browser->whenAvailable('#messagelist tbody', function ($browser) { + $browser->assertElementsCount('tr', 1); + }); + }); + } + + /** + * Test plugin functionality on email preview page + * + * @depends testMailUI + */ + public function testMailView() + { + $this->browse(function ($browser) { + $browser->go('mail'); + + $browser->whenAvailable('#messagelist tbody', function ($browser) { + $browser->mouseover('tr:last-child')->doubleClick(); + }); + + $browser->waitFor('#message-content'); + + // Toolbar menu (Junk button active), click it + $browser->clickToolbarMenuItem('junk') + ->waitFor('#messagelist') + ->waitUntilNotBusy() + ->assertElementsCount('#messagelist tbody tr', 0); // empty list + + if (!$browser->isDesktop()) { + $browser->click('.back-sidebar-button'); + } + + // Folders list + $browser->whenAvailable('#mailboxlist', function ($browser) { + $browser->click('li.mailbox.junk') + ->waitUntilNotBusy(); + }); + + $browser->whenAvailable('#messagelist tbody', function ($browser) { + $browser->mouseover('tr:last-child')->doubleClick(); + }); + + $browser->waitFor('#message-content'); + + // Toolbar menu (Junk button active), click it + $browser->clickToolbarMenuItem('notjunk') + ->waitFor('#messagelist') + ->waitUntilNotBusy() + ->assertElementsCount('#messagelist tbody tr', 0); // empty list + }); + } +}