Exemplo n.º 1
0
<?php

/*
 * This file is part of the symfony package.
 * (c) 2004-2006 Fabien Potencier <*****@*****.**>
 * 
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
$app = 'i18n';
if (!(include dirname(__FILE__) . '/../bootstrap/functional.php')) {
    return;
}
class myTestBrowser extends sfTestBrowser
{
    public function isUserCulture($culture)
    {
        $this->test->is($this->getContext()->getUser()->getCulture(), $culture, sprintf('user culture is "%s"', $culture));
        return $this;
    }
}
$b = new myTestBrowser();
$b->initialize();
// default culture (en)
$b->get('/')->isStatusCode(200)->isRequestParameter('module', 'i18n')->isRequestParameter('action', 'index')->isUserCulture('en')->checkResponseElement('#action', '/an english sentence/i')->checkResponseElement('#template', '/an english sentence/i');
$b->get('/fr/i18n/index')->isStatusCode(200)->isRequestParameter('module', 'i18n')->isRequestParameter('action', 'index')->isUserCulture('fr')->checkResponseElement('#action', '/une phrase en français/i')->checkResponseElement('#template', '/une phrase en français/i')->checkResponseElement('#action_local', '/une phrase locale en français/i')->checkResponseElement('#template_local', '/une phrase locale en français/i')->checkResponseElement('#action_other', '/une autre phrase en français/i')->checkResponseElement('#template_other', '/une autre phrase en français/i')->checkResponseElement('#action_other_local', '/une autre phrase locale en français/i')->checkResponseElement('#template_other_local', '/une autre phrase locale en français/i');
// messages for a module plugin
$b->get('/fr/sfI18NPlugin/index')->isStatusCode(200)->isRequestParameter('module', 'sfI18NPlugin')->isRequestParameter('action', 'index')->isUserCulture('fr')->checkResponseElement('#action', '/une phrase en français/i')->checkResponseElement('#template', '/une phrase en français/i')->checkResponseElement('#action_local', '/une phrase locale en français/i')->checkResponseElement('#template_local', '/une phrase locale en français/i');
Exemplo n.º 2
0
        $response = $b->getResponse();
        $content1 = $response->getContent();
        $contentType1 = $response->getContentType();
        $headers1 = $response->getHttpHeaders();
        $b->get('/cache/action')->with('request')->begin()->isParameter('module', 'cache')->isParameter('action', 'action')->end()->with('response')->isStatusCode(200)->with('view_cache')->isCached(true);
        $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), false, 'action is not executed when in cache');
        $response = $b->getResponse();
        $content2 = $response->getContent();
        $contentType2 = $response->getContentType();
        $headers2 = $response->getHttpHeaders();
        $b->test()->is($content1, $content2, 'response content is the same');
        $b->test()->is($contentType1, $contentType2, 'response content type is the same');
        $b->test()->is($headers1, $headers2, 'response http headers are the same');
    }
}
$b = new myTestBrowser();
// non HTML cache
$image = file_get_contents(__DIR__ . '/fixtures/apps/cache/modules/cache/data/ok48.png');
sfConfig::set('sf_web_debug', true);
$b->get('/cache/imageWithLayoutCacheWithLayout')->with('view_cache')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheWithLayout')->with('view_cache')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->with('view_cache')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->with('view_cache')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->with('view_cache')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->with('view_cache')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->with('view_cache')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->with('view_cache')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on');
sfConfig::set('sf_web_debug', false);
// check stylesheets, javascripts inclusions
sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir'));
$b->get('/cache/multiBis')->with('request')->begin()->isParameter('module', 'cache')->isParameter('action', 'multiBis')->end()->with('response')->begin()->isStatusCode(200)->checkElement('link[href*="/main_css"]')->checkElement('script[src*="/main_js"]')->checkElement('link[href*="/partial_css"]')->checkElement('script[src*="/partial_js"]')->checkElement('link[href*="/another_partial_css"]')->checkElement('script[src*="/another_partial_js"]')->checkElement('link[href*="/component_css"]')->checkElement('script[src*="/component_js"]')->checkElement('#partial_slot_content', 'Partial')->checkElement('#another_partial_slot_content', 'Another Partial')->checkElement('#component_slot_content', 'Component')->end()->get('/cache/multiBis')->with('response')->begin()->checkElement('link[href*="/main_css"]')->checkElement('script[src*="/main_js"]')->checkElement('link[href*="/partial_css"]')->checkElement('script[src*="/partial_js"]')->checkElement('link[href*="/another_partial_css"]')->checkElement('script[src*="/another_partial_js"]')->checkElement('link[href*="/component_css"]')->checkElement('script[src*="/component_js"]')->checkElement('#partial_slot_content', 'Partial')->checkElement('#another_partial_slot_content', 'Another Partial')->checkElement('#component_slot_content', 'Component')->end();
$b->get('/cache/partial')->with('request')->begin()->isParameter('module', 'cache')->isParameter('action', 'partial')->end()->with('response')->begin()->isStatusCode(200)->checkElement('link[href*="/main_css"]', false)->checkElement('script[src*="/main_js"]', false)->checkElement('link[href*="/partial_css"]')->checkElement('script[src*="/partial_js"]')->checkElement('link[href*="/another_partial_css"]')->checkElement('script[src*="/another_partial_js"]')->checkElement('link[href*="/component_css"]', false)->checkElement('script[src*="/component_js"]', false)->checkElement('#partial_slot_content', 'Partial')->checkElement('#another_partial_slot_content', 'Another Partial')->checkElement('#component_slot_content', '')->end()->get('/cache/anotherPartial')->with('request')->begin()->isParameter('module', 'cache')->isParameter('action', 'anotherPartial')->end()->with('response')->begin()->isStatusCode(200)->checkElement('link[href*="/main_css"]', false)->checkElement('script[src*="/main_js"]', false)->checkElement('link[href*="/partial_css"]', false)->checkElement('script[src*="/partial_js"]', false)->checkElement('link[href*="/another_partial_css"]')->checkElement('script[src*="/another_partial_js"]')->checkElement('link[href*="/component_css"]', false)->checkElement('script[src*="/component_js"]', false)->checkElement('#partial_slot_content', '')->checkElement('#another_partial_slot_content', 'Another Partial')->checkElement('#component_slot_content', '')->end()->get('/cache/component')->with('request')->begin()->isParameter('module', 'cache')->isParameter('action', 'component')->end()->with('response')->begin()->isStatusCode(200)->checkElement('link[href*="/main_css"]', false)->checkElement('script[src*="/main_js"]', false)->checkElement('link[href*="/partial_css"]', false)->checkElement('script[src*="/partial_js"]', false)->checkElement('link[href*="/another_partial_css"]', false)->checkElement('script[src*="/another_partial_js"]', false)->checkElement('link[href*="/component_css"]')->checkElement('script[src*="/component_js"]')->checkElement('#partial_slot_content', '')->checkElement('#another_partial_slot_content', '')->checkElement('#component_slot_content', 'Component')->end();
$b->get('/')->with('view_cache')->isUriCached('cache/list', false)->get('/cache/list')->with('view_cache')->isUriCached('cache/list', true)->with('view_cache')->isUriCached('cache/list?page=10', false)->get('/cache/list?page=10')->with('response')->checkElement('#page', '10')->with('view_cache')->isUriCached('cache/list?page=10', true)->with('view_cache')->isUriCached('cache/list?page=20', false)->get('/cache/list?page=20')->with('response')->checkElement('#page', '20')->with('view_cache')->isUriCached('cache/list?page=20', true);
// check for 304 response
sfConfig::set('LAST_MODIFIED', strtotime('2010-01-01'));
$b->get('/cache/lastModifiedResponse')->with('response')->isStatusCode(200);
$b->setHttpHeader('If-Modified-Since', sfWebResponse::getDate(sfConfig::get('LAST_MODIFIED')))->get('/cache/lastModifiedResponse')->with('response')->isStatusCode(304);
// test with sfFileCache class (default)
Exemplo n.º 3
0
        $response = $b->getResponse();
        $content1 = $response->getContent();
        $contentType1 = $response->getContentType();
        $headers1 = $response->getHttpHeaders();
        $b->get('/cache/action')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'action')->isCached(true);
        $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), false, 'action is not executed when in cache');
        $response = $b->getResponse();
        $content2 = $response->getContent();
        $contentType2 = $response->getContentType();
        $headers2 = $response->getHttpHeaders();
        $b->test()->is($content1, $content2, 'response content is the same');
        $b->test()->is($contentType1, $contentType2, 'response content type is the same');
        $b->test()->is($headers1, $headers2, 'response http headers are the same');
    }
}
$b = new myTestBrowser();
// non HTML cache
$image = file_get_contents(dirname(__FILE__) . '/fixtures/apps/cache/modules/cache/data/ok48.png');
sfConfig::set('sf_web_debug', true);
$b->get('/cache/imageWithLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on');
sfConfig::set('sf_web_debug', false);
// check stylesheets, javascripts inclusions
sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir'));
$b->get('/cache/multiBis')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'multiBis')->checkResponseElement('link[href*="/main_css"]')->checkResponseElement('script[src*="/main_js"]')->checkResponseElement('link[href*="/partial_css"]')->checkResponseElement('script[src*="/partial_js"]')->checkResponseElement('link[href*="/another_partial_css"]')->checkResponseElement('script[src*="/another_partial_js"]')->checkResponseElement('link[href*="/component_css"]')->checkResponseElement('script[src*="/component_js"]')->checkResponseElement('#partial_slot_content', 'Partial')->checkResponseElement('#another_partial_slot_content', 'Another Partial')->checkResponseElement('#component_slot_content', 'Component')->get('/cache/multiBis')->checkResponseElement('link[href*="/main_css"]')->checkResponseElement('script[src*="/main_js"]')->checkResponseElement('link[href*="/partial_css"]')->checkResponseElement('script[src*="/partial_js"]')->checkResponseElement('link[href*="/another_partial_css"]')->checkResponseElement('script[src*="/another_partial_js"]')->checkResponseElement('link[href*="/component_css"]')->checkResponseElement('script[src*="/component_js"]')->checkResponseElement('#partial_slot_content', 'Partial')->checkResponseElement('#another_partial_slot_content', 'Another Partial')->checkResponseElement('#component_slot_content', 'Component');
$b->get('/cache/partial')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'partial')->checkResponseElement('link[href*="/main_css"]', false)->checkResponseElement('script[src*="/main_js"]', false)->checkResponseElement('link[href*="/partial_css"]')->checkResponseElement('script[src*="/partial_js"]')->checkResponseElement('link[href*="/another_partial_css"]')->checkResponseElement('script[src*="/another_partial_js"]')->checkResponseElement('link[href*="/component_css"]', false)->checkResponseElement('script[src*="/component_js"]', false)->checkResponseElement('#partial_slot_content', 'Partial')->checkResponseElement('#another_partial_slot_content', 'Another Partial')->checkResponseElement('#component_slot_content', '')->get('/cache/anotherPartial')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'anotherPartial')->checkResponseElement('link[href*="/main_css"]', false)->checkResponseElement('script[src*="/main_js"]', false)->checkResponseElement('link[href*="/partial_css"]', false)->checkResponseElement('script[src*="/partial_js"]', false)->checkResponseElement('link[href*="/another_partial_css"]')->checkResponseElement('script[src*="/another_partial_js"]')->checkResponseElement('link[href*="/component_css"]', false)->checkResponseElement('script[src*="/component_js"]', false)->checkResponseElement('#partial_slot_content', '')->checkResponseElement('#another_partial_slot_content', 'Another Partial')->checkResponseElement('#component_slot_content', '')->get('/cache/component')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'component')->checkResponseElement('link[href*="/main_css"]', false)->checkResponseElement('script[src*="/main_js"]', false)->checkResponseElement('link[href*="/partial_css"]', false)->checkResponseElement('script[src*="/partial_js"]', false)->checkResponseElement('link[href*="/another_partial_css"]', false)->checkResponseElement('script[src*="/another_partial_js"]', false)->checkResponseElement('link[href*="/component_css"]')->checkResponseElement('script[src*="/component_js"]')->checkResponseElement('#partial_slot_content', '')->checkResponseElement('#another_partial_slot_content', '')->checkResponseElement('#component_slot_content', 'Component');
// test with sfFileCache class (default)
$b->launch();
// test with sfSQLiteCache class
if (extension_loaded('SQLite')) {
    sfConfig::set('sf_factory_view_cache', 'sfSQLiteCache');
    sfConfig::set('sf_factory_view_cache_parameters', array('database' => sfConfig::get('sf_template_cache_dir') . DIRECTORY_SEPARATOR . 'cache.db'));
Exemplo n.º 4
0
        checkElement('#action_local', '/une phrase locale en français/i')->
        checkElement('#template_local', '/une phrase locale en français/i')->

        // messages in another global catalogue
        checkElement('#action_other', '/une autre phrase en français/i')->
        checkElement('#template_other', '/une autre phrase en français/i')->

        // messages in another module catalogue
        checkElement('#action_other_local', '/une autre phrase locale en français/i')->
        checkElement('#template_other_local', '/une autre phrase locale en français/i')->
      end()
    ;
  }
}

$b = new myTestBrowser();

// default culture (en)
$b->
  get('/')->
  with('request')->begin()->
    isParameter('module', 'i18n')->
    isParameter('action', 'index')->
  end()->
  with('response')->begin()->
    isStatusCode(200)->
    checkElement('#action', '/an english sentence/i')->
    checkElement('#template', '/an english sentence/i')->
  end()->
  with('user')->isCulture('en')
;
Exemplo n.º 5
0
        $b->get('/cache/action')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'action')->isCached(true);
        $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), true, 'action is executed when not in cache');
        sfConfig::set('ACTION_EXECUTED', false);
        $response = $b->getResponse();
        $content1 = $response->getContent();
        $contentType1 = $response->getContentType();
        $headers1 = $response->getHttpHeaders();
        $b->get('/cache/action')->isStatusCode(200)->isRequestParameter('module', 'cache')->isRequestParameter('action', 'action')->isCached(true);
        $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), false, 'action is not executed when in cache');
        $response = $b->getResponse();
        $content2 = $response->getContent();
        $contentType2 = $response->getContentType();
        $headers2 = $response->getHttpHeaders();
        $b->test()->is($content1, $content2, 'response content is the same');
        $b->test()->is($contentType1, $contentType2, 'response content type is the same');
        $b->test()->is($headers1, $headers2, 'response http headers are the same');
    }
}
$b = new myTestBrowser();
$b->initialize();
// non HTML cache
$image = file_get_contents($sf_symfony_data_dir . '/web/sf/sf_default/images/icons/ok48.png');
sfConfig::set('sf_web_debug', true);
$b->get('/cache/imageWithLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageWithLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheWithLayout')->isCached(true, true)->checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on')->get('/cache/imageNoLayoutCacheNoLayout')->isCached(true)->checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on');
sfConfig::set('sf_web_debug', false);
// test with sfFileCache class (default)
$b->launch();
// test with sfSQLiteCache class
sfConfig::set('sf_factory_view_cache', 'sfSQLiteCache');
sfConfig::set('sf_factory_view_cache_parameters', array('database' => sfConfig::get('sf_template_cache_dir') . DIRECTORY_SEPARATOR . 'cache.db'));
$b->launch();
Exemplo n.º 6
0
    ;

    $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), false, 'action is not executed when in cache');

    $response = $b->getResponse();
    $content2 = $response->getContent();
    $contentType2 = $response->getContentType();
    $headers2 = $response->getHttpHeaders();

    $b->test()->is($content1, $content2, 'response content is the same');
    $b->test()->is($contentType1, $contentType2, 'response content type is the same');
    $b->test()->is($headers1, $headers2, 'response http headers are the same');
  }
}

$b = new myTestBrowser();

// non HTML cache
$image = file_get_contents(dirname(__FILE__).'/fixtures/apps/cache/modules/cache/data/ok48.png');
sfConfig::set('sf_web_debug', true);
$b->
  get('/cache/imageWithLayoutCacheWithLayout')->
  with('view_cache')->isCached(true, true)->
  checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->
  get('/cache/imageWithLayoutCacheWithLayout')->
  with('view_cache')->isCached(true, true)->
  checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')->
  get('/cache/imageWithLayoutCacheNoLayout')->
  with('view_cache')->isCached(true)->
  checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')->
  get('/cache/imageWithLayoutCacheNoLayout')->
Exemplo n.º 7
0
<?php

/*
 * This file is part of the symfony package.
 * (c) 2004-2006 Fabien Potencier <*****@*****.**>
 * 
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
$app = 'i18n';
if (!(include dirname(__FILE__) . '/../bootstrap/functional.php')) {
    return;
}
class myTestBrowser extends sfTestBrowser
{
    public function checkResponseForCulture($culture = 'fr')
    {
        return $this->with('response')->begin()->checkElement('#action', '/une phrase en français/i')->checkElement('#template', '/une phrase en français/i')->checkElement('#action_local', '/une phrase locale en français/i')->checkElement('#template_local', '/une phrase locale en français/i')->checkElement('#action_other', '/une autre phrase en français/i')->checkElement('#template_other', '/une autre phrase en français/i')->checkElement('#action_other_local', '/une autre phrase locale en français/i')->checkElement('#template_other_local', '/une autre phrase locale en français/i')->end();
    }
}
$b = new myTestBrowser();
// default culture (en)
$b->get('/')->with('request')->begin()->isParameter('module', 'i18n')->isParameter('action', 'index')->end()->with('response')->begin()->isStatusCode(200)->checkElement('#action', '/an english sentence/i')->checkElement('#template', '/an english sentence/i')->end()->with('user')->isCulture('en');
$b->get('/fr/i18n/index')->with('request')->begin()->isParameter('module', 'i18n')->isParameter('action', 'index')->end()->with('response')->isStatusCode(200)->with('user')->isCulture('fr')->checkResponseForCulture('fr');
// change user culture in the action
$b->get('/en/i18n/indexForFr')->with('request')->begin()->isParameter('module', 'i18n')->isParameter('action', 'indexForFr')->end()->with('response')->isStatusCode(200)->with('user')->isCulture('fr')->checkResponseForCulture('fr');
// messages for a module plugin
$b->get('/fr/sfI18NPlugin/index')->with('request')->begin()->isParameter('module', 'sfI18NPlugin')->isParameter('action', 'index')->end()->with('user')->isCulture('fr')->with('response')->begin()->isStatusCode(200)->checkElement('#action', '/une phrase en français - from plugin/i')->checkElement('#template', '/une phrase en français - from plugin/i')->checkElement('#action_local', '/une phrase locale en français - from plugin/i')->checkElement('#template_local', '/une phrase locale en français - from plugin/i')->checkElement('#action_other', '/une autre phrase en français - from plugin but translation overridden in the module/i')->checkElement('#template_other', '/une autre phrase en français - from plugin but translation overridden in the module/i')->checkElement('#action_yetAnother', '/encore une autre phrase en français - from plugin but translation overridden in the application/i')->checkElement('#template_yetAnother', '/encore une autre phrase en français - from plugin but translation overridden in the application/i')->checkElement('#action_testForPluginI18N', '/une phrase en français depuis un plugin - global/i')->checkElement('#template_testForPluginI18N', '/une phrase en français depuis un plugin - global/i')->end();
Exemplo n.º 8
0
<?php

/*
 * This file is part of the symfony package.
 * (c) Fabien Potencier <*****@*****.**>
 * 
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
$app = 'frontend';
$fixtures = 'fixtures/fixtures.yml';
if (!(include dirname(__FILE__) . '/../bootstrap/functional.php')) {
    return;
}
class myTestBrowser extends sfTestBrowser
{
    public function getContext($forceReload = false)
    {
        parent::getContext($forceReload);
        sfPropel::initialize($this->context->getEventDispatcher());
        return $this->context;
    }
}
$b = new myTestBrowser();
// en
$b->get('/i18n/default')->isStatusCode(200)->isRequestParameter('module', 'i18n')->isRequestParameter('action', 'default')->checkResponseElement('#movies .default:first', '')->checkResponseElement('#movies .it:first', 'La Vita è bella')->checkResponseElement('#movies .fr:first', 'La Vie est belle');
// fr
$b->get('/i18n/index')->isStatusCode(200)->isRequestParameter('module', 'i18n')->isRequestParameter('action', 'index')->checkResponseElement('#movies .default:first', 'La Vie est belle')->checkResponseElement('#movies .it:first', 'La Vita è bella')->checkResponseElement('#movies .fr:first', 'La Vie est belle');
// still fr
$b->get('/i18n/default')->isStatusCode(200)->isRequestParameter('module', 'i18n')->isRequestParameter('action', 'default')->checkResponseElement('#movies .default:first', 'La Vie est belle')->checkResponseElement('#movies .it:first', 'La Vita è bella')->checkResponseElement('#movies .fr:first', 'La Vie est belle');