You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
roundcubemail/tests/Browser/Contacts/ImportTest.php

117 lines
4.0 KiB
PHTML

<?php
namespace Tests\Browser\Contacts;
use Tests\Browser\Components\App;
use Tests\Browser\Components\Dialog;
class ImportTest extends \Tests\Browser\TestCase
{
public static function setUpBeforeClass()
{
\bootstrap::init_db();
}
/**
* Test basic elements of contacts import UI
*/
public function testImportUI()
{
$this->browse(function ($browser) {
$browser->go('addressbook');
$browser->clickToolbarMenuItem('import');
$browser->with(new Dialog(), function ($browser) {
$browser->assertDialogTitle('Import contacts')
->assertButton('mainaction.import', 'Import')
->assertButton('cancel', 'Cancel');
});
$browser->withinFrame('.ui-dialog iframe', function ($browser) {
// check task and action
$browser->with(new App(), function ($browser) {
$browser->assertEnv('task', 'addressbook');
$browser->assertEnv('action', 'import');
// these objects should be there always
$browser->assertObjects(['importform']);
});
$browser->assertSee('You can upload');
$browser->assertVisible('#rcmImportForm');
$browser->assertVisible('#rcmImportForm select');
$browser->assertVisible('#rcmImportForm .custom-switch');
// FIXME: selecting the file input directly does not work
$browser->assertVisible('#rcmImportForm .custom-file');
$browser->assertSelected('#rcmImportForm select', 0);
});
// Close the dialog
$browser->with(new Dialog(), function ($browser) {
$browser->clickButton('cancel');
});
});
}
/**
* Import contacts from a vCard file
*
* @depends testImportUI
*/
public function testImportProcess()
{
$this->browse(function ($browser) {
// Open the dialog again
$browser->clickToolbarMenuItem('import');
$browser->with(new Dialog(), function ($browser) {
$browser->assertDialogTitle('Import contacts')
->clickButton('import');
});
// Submit the form with no file attached
$browser->with(new Dialog(2), function ($browser) {
$browser->assertDialogTitle('Attention')
->assertDialogContent('Please select a file')
->assertButton('save.mainaction', 'OK')
->pressESC();
});
$browser->with(new Dialog(), function ($browser) {
$browser->withinDialogFrame(function ($browser) {
$browser->attach('.custom-file input', TESTS_DIR . 'data/contacts.vcf');
})
->clickButton('import')
->withinDialogFrame(function ($browser) {
$browser->waitForText('Successfully imported 2 contacts:');
})
->closeDialog();
});
// Expected existing contacts + imported
$browser->waitFor('#contacts-table tr')
->assertElementsCount('#contacts-table tbody tr', 4)
->assertSeeIn('#rcmcountdisplay', '1 4 of 4');
});
}
/**
* Test imported contact
*
* @depends testImportProcess
*/
public function testImportResult()
{
$this->browse(function ($browser) {
// Open the dialog again
$browser->click('#contacts-table tr:last-child');
$browser->withinFrame('#contact-frame', function ($browser) {
$browser->waitFor('a.email'); // wait for iframe to load
$browser->assertSeeIn('.names', 'Sylvester Stalone');
$browser->assertSeeIn('a.email', 's.stalone@rambo.tv');
});
});
}
}