* @package lyMediaManagerPlugin * @subpackage functional tests * @copyright Copyright (C) 2010 Massimo Giagnoni. * @license http://www.symfony-project.org/license MIT * @version SVN: $Id$ */ include dirname(__FILE__) . '/../bootstrap/functional.php'; Doctrine_Core::loadData(dirname(__FILE__) . '/../data/fixtures/fixtures_fs.yml'); $root = Doctrine::getTable('lyMediaFolder')->findOneByName('media'); $subf1 = lyMediaFolderTable::getInstance()->findOneByName('testsub1'); $subf2 = lyMediaFolderTable::getInstance()->findOneByName('testsub2'); //Creates some test assets. Cannot be done in fixtures $file = dirname(__FILE__) . '/../data/assets/asset1.png'; $asset = new lyMediaAsset(); $asset->setFolder($subf1); $asset->setFilename($file); $asset->save(); $asset->refresh(); $file = dirname(__FILE__) . '/../data/assets/asseta.png'; $asset2 = new lyMediaAsset(); $asset2->setFolder($subf2); $asset2->setFilename($file); $asset2->save(); $asset2->refresh(); $base = sfConfig::get('sf_web_dir') . DIRECTORY_SEPARATOR . 'media' . DIRECTORY_SEPARATOR; chmod($base . 'testsub1', 0555); $browser = new lyMediaTestFunctional(new sfBrowser()); $browser->setTester('doctrine', 'sfTesterDoctrine'); $browser->info('1 - Unwritable destination folder')->info(' 1.1 - Create folder')->get('/ly_media_asset')->click('li.sf_admin_action_new_folder a')->click('li.sf_admin_action_save input', array('ly_media_folder' => array('parent_id' => $subf1->getId(), 'name' => 'test')))->with('form')->begin()->hasErrors(1)->hasGlobalError('parent_unwritable')->end()->info(' 1.2 - Move folder')->get('/ly_media_folder/' . $subf2->getId() . '/edit')->click('li.sf_admin_action_save input', array('ly_media_folder' => array('parent_id' => $subf1->getId())))->with('form')->begin()->hasErrors(1)->hasGlobalError('parent_unwritable')->end()->info(' 1.3 - Upload asset')->get('/ly_media_asset')->click('li.sf_admin_action_new a')->click('li.sf_admin_action_save input', array('ly_media_asset' => array('folder_id' => $subf1->getId(), 'title' => 'test', 'filename' => dirname(__FILE__) . '/../data/assets/asset1.png')))->with('form')->begin()->hasErrors(1)->hasGlobalError('folder_unwritable')->end()->info(' 1.4 - Rename asset')->get('/ly_media_asset/' . $asset->getId() . '/edit')->click('li.sf_admin_action_save input', array('filename' => 'renamed'))->with('form')->begin()->hasErrors(1)->hasGlobalError('folder_unwritable')->end()->info(' 1.5 - Delete asset')->get('/ly_media_asset')->click('li.sf_admin_action_delete a[href$=ly_media_asset/' . $asset->getId() . ']', array(), array('method' => 'delete', '_with_csrf' => true))->with('response')->isRedirected()->followRedirect()->with('response')->checkElement('div.error:contains("asset1.png")')->info(' 1.6 - Move asset')->get('/ly_media_asset/' . $asset2->getId() . '/edit')->click('li.sf_admin_action_save input', array('ly_media_asset' => array('folder_id' => $subf1->getId())))->with('form')->begin()->hasErrors(1)->hasGlobalError('folder_unwritable')->end(); //Make writable to allow removal chmod($base . 'testsub1', 0755);
<?php /* * This file is part of the lyMediaManagerPlugin package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Functional tests * * @package lyMediaManagerPlugin * @subpackage functional tests * @copyright Copyright (C) 2010 Massimo Giagnoni. * @license http://www.symfony-project.org/license MIT * @version SVN: $Id$ */ include dirname(__FILE__) . '/../bootstrap/functional.php'; Doctrine_Core::loadData(dirname(__FILE__) . '/../data/fixtures/fixtures.yml'); $subf1 = lyMediaFolderTable::getInstance()->findOneByName('testsub1'); $subf2 = lyMediaFolderTable::getInstance()->findOneByName('testsub2'); $browser = new lyMediaTestFunctional(new sfBrowser()); $browser->setTester('doctrine', 'sfTesterDoctrine'); $browser->info('1 - Assets list view')->get('/ly_media_asset')->with('request')->begin()->isParameter('module', 'lyMediaAsset')->isParameter('action', 'index')->end()->with('response')->begin()->isStatusCode(200)->checkElement('td.sf_admin_list_td_td_image img[src$="asset1.png"]')->checkElement('td.sf_admin_list_td_td_image img[src$="asset2.png"]')->checkElement('td.sf_admin_list_td_td_image img[src$="asset3.png"]')->end()->info('2 - New folder')->click('li.sf_admin_action_new_folder a')->with('request')->begin()->isParameter('module', 'lyMediaFolder')->isParameter('action', 'new')->end()->with('response')->begin()->isStatusCode(200)->checkForm('lyMediaFolderForm')->end()->info(' 2.1 - Submit empty values')->click('li.sf_admin_action_save input')->with('request')->begin()->isParameter('module', 'lyMediaFolder')->isParameter('action', 'create')->end()->with('form')->begin()->hasErrors(1)->isError('name', 'required')->end()->info(' 2.2 - Submit invalid values')->click('li.sf_admin_action_save input', array('ly_media_folder' => array('name' => 'te/st')))->with('form')->begin()->hasErrors(1)->isError('name', 'invalid')->end()->info(' 2.3 - Submit invalid values (folder exists)')->click('li.sf_admin_action_save input', array('ly_media_folder' => array('name' => 'testsub1')))->with('form')->begin()->hasErrors(1)->hasGlobalError('folder_exists')->end()->info(' 2.4 - Submit valid values')->saveNew('lyMediaFolder', array('ly_media_folder' => array('name' => 'testsub3')))->info(' 2.5 - Check created folder')->with('doctrine')->begin()->check('lyMediaFolder', array('name' => 'testsub3', 'relative_path' => 'media/testsub3/', 'level' => 1))->end()->info('3 - Edit folder name and parent')->saveEdit('lyMediaFolder', array('ly_media_folder' => array('name' => 'testsub1-1', 'parent_id' => $subf1->getId())))->info(' 3.1 - Check edited folder')->with('doctrine')->begin()->check('lyMediaFolder', array('name' => 'testsub1-1', 'relative_path' => 'media/testsub1/testsub1-1/', 'level' => 2))->end()->info(' 3.2 - Go back')->click('li.sf_admin_action_list a')->with('request')->begin()->isParameter('module', 'lyMediaAsset')->isParameter('action', 'index')->end()->with('response')->isStatusCode(200)->info('4 - New asset')->click('li.sf_admin_action_new a')->with('request')->begin()->isParameter('module', 'lyMediaAsset')->isParameter('action', 'new')->end()->with('response')->begin()->isStatusCode(200)->checkForm('lyMediaAssetForm')->end()->info(' 4.1 - Submit empty values')->click('li.sf_admin_action_save input')->with('request')->begin()->isParameter('module', 'lyMediaAsset')->isParameter('action', 'create')->end()->with('form')->begin()->hasErrors(1)->isError('filename', 'required')->end()->info(' 4.2 - Submit valid values')->saveNew('lyMediaAsset', array('ly_media_asset' => array('folder_id' => $subf1->getId(), 'title' => 'test', 'filename' => dirname(__FILE__) . '/../data/assets/asset1.png')))->info(' 4.3 - Check new asset')->with('doctrine')->begin()->check('lyMediaAsset', array('filename' => 'asset1.png', 'title' => 'test', 'type' => 'image/png', 'folder_id' => $subf1->getId()))->end()->info(' 4.4 - Check new asset files'); $asset = lyMediaAssetTable::getInstance()->findOneByTitle('test'); $folder = $asset->getFolderPath(); $file = $asset->getFilename(); $browser->isFile($folder, $file)->info('5 - Rename asset')->saveEdit('lyMediaAsset', array('ly_media_asset' => array('filename' => 'asset1_renamed.png')))->info(' 5.1 - Check renamed asset')->with('doctrine')->begin()->check('lyMediaAsset', array('filename' => 'asset1_renamed.png', 'title' => 'test', 'type' => 'image/png', 'folder_id' => $subf1->getId()))->end()->info(' 5.2 - Check renamed asset files')->info(' 5.2.1 - Old filename must not exist')->isntFile($folder, $file)->info(' 5.2.2 - New filename must exist')->isFile($folder, 'asset1_renamed.png')->info('6 - Move asset')->saveEdit('lyMediaAsset', array('ly_media_asset' => array('folder_id' => $subf2->getId())))->info(' 6.1 - Check moved asset')->with('doctrine')->begin()->check('lyMediaAsset', array('filename' => 'asset1_renamed.png', 'title' => 'test', 'type' => 'image/png', 'folder_id' => $subf2->getId()))->end()->info(' 6.2 - Check moved asset files')->info(' 6.2.1 - File in source folder must not exist')->isntFile($folder, 'asset1_renamed.png')->info(' 6.2.2 - File in destination folder must exist')->isFile($subf2->getRelativePath(), 'asset1_renamed.png')->info('7 - Icons view')->get('/ly_media_asset/icons')->with('request')->begin()->isParameter('module', 'lyMediaAsset')->isParameter('action', 'icons')->end()->with('response')->begin()->isStatusCode(200)->checkElement('#lymedia_folder_path', '/media/')->checkElement('div.lymedia_up', false)->checkElement('div.lymedia_folder', 2)->checkElement('div.lymedia_folder_frame a img[title="testsub1"]')->checkElement('div.lymedia_folder_frame a img[title="testsub2"]')->checkElement('div.lymedia_folder_stats span.folders', '/2 folders/')->checkElement('div.lymedia_folder_stats span.files', '/51 files/')->end()->info('8 - Sorting')->info(' 8.1 - Check default sort (name asc)')->with('response')->begin()->checkElement('.lymedia_asset .lymedia_caption', '/asset1.png/', array('position' => 0))->checkElement('.lymedia_asset .lymedia_caption', '/asset2.png/', array('position' => 1))->checkElement('.lymedia_asset .lymedia_caption', '/asset3.png/', array('position' => 2))->end()->info(' 8.2 - Change sort direction')->click('a[href$="dir=desc"]')->with('request')->begin()->isParameter('module', 'lyMediaAsset')->isParameter('action', 'icons')->isParameter('dir', 'desc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.lymedia_asset .lymedia_caption', '/zzasset.png/', array('position' => 0))->end()->info(' 8.3 - Change sort field')->click('a[href$="sort=date"]')->with('request')->begin()->isParameter('module', 'lyMediaAsset')->isParameter('action', 'icons')->isParameter('sort', 'date')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.lymedia_asset .lymedia_caption', '/asset5.png/', array('position' => 0))->end()->info(' 8.4 - Change sort direction')->click('a[href$="dir=asc"]')->with('request')->begin()->isParameter('module', 'lyMediaAsset')->isParameter('action', 'icons')->isParameter('dir', 'asc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.lymedia_asset .lymedia_caption', '/asset3.png/', array('position' => 0))->checkElement('.lymedia_asset .lymedia_caption', '/asset1.png/', array('position' => 1))->checkElement('.lymedia_asset .lymedia_caption', '/zzasset.png/', array('position' => 2))->checkElement('.lymedia_asset .lymedia_caption', '/asset2.png/', array('position' => 3))->end()->info('9 - Paging')->with('response')->begin()->checkElement('div.lymedia_asset', 20)->checkElement('.pagination a.page', 2)->checkElement('.pagination a.page', '!/1/')->checkElement('.pagination a.page', '/2/', array('position' => 0))->checkElement('.pagination a.page', '/3/', array('position' => 1))->end()->info(' 9.1 - Next page')->click('.pagination a.page', array(), array('position' => 1))->with('request')->begin()->isParameter('module', 'lyMediaAsset')->isParameter('action', 'icons')->isParameter('page', '2')->end()->with('response')->begin()->isStatusCode(200)->checkElement('div.lymedia_asset', 20)->checkElement('.pagination a.page', '/1/', array('position' => 0))->checkElement('.pagination a.page', '!/2/')->checkElement('.pagination a.page', '/3/', array('position' => 1))->end()->info(' 9.1.1 - Next page')->click('.pagination a.page', array(), array('position' => 2))->with('request')->begin()->isParameter('module', 'lyMediaAsset')->isParameter('action', 'icons')->isParameter('page', '3')->end()->with('response')->begin()->isStatusCode(200)->checkElement('div.lymedia_asset', 11)->checkElement('.pagination a.page', '/1/', array('position' => 0))->checkElement('.pagination a.page', '/2/', array('position' => 1))->checkElement('.pagination a.page', '!/3/')->end()->info('10 - Navigate first subfolder')->click('a[href$="ly_media_asset/icons/' . $subf1->getId() . '"]')->with('request')->begin()->isParameter('module', 'lyMediaAsset')->isParameter('action', 'icons')->isParameter('folder_id', $subf1->getId())->end();