Tests: Add browser tests for Markasjunk plugin
parent
db5ab6d3f6
commit
f94b871aa6
@ -0,0 +1,134 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Browser\Plugins\Markasjunk;
|
||||
|
||||
use Tests\Browser\Components\Popupmenu;
|
||||
|
||||
class MailTest extends \Tests\Browser\TestCase
|
||||
{
|
||||
public static function setUpBeforeClass()
|
||||
{
|
||||
\bootstrap::init_db();
|
||||
\bootstrap::init_imap();
|
||||
\bootstrap::purge_mailbox('INBOX');
|
||||
\bootstrap::purge_mailbox('Junk');
|
||||
|
||||
// import single email message
|
||||
\bootstrap::import_message(TESTS_DIR . 'data/mail/list_00.eml', 'INBOX');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test plugin functionality in Mail UI
|
||||
*/
|
||||
public function testMailUI()
|
||||
{
|
||||
$this->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
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue