WidgetControllerTest.php #1

  • //
  • guest/
  • perforce_software/
  • chronicle/
  • main/
  • sites/
  • all/
  • modules/
  • feed/
  • tests/
  • WidgetControllerTest.php
  • View
  • Commits
  • Open Download .zip Download (4 KB)
<?php
/**
 * Test the Feed module widget controller.
 *
 * @copyright   2012 Perforce Software. All rights reserved.
 * @license     Please see LICENSE.txt in top-level folder of this distribution.
 * @version     <release>/<patch>
 */
class Feed_Test_WidgetControllerTest extends ModuleControllerTest
{
    /**
     * Perform setup
     */
    public function setUp()
    {
        parent::setUp();

        // load the Feed module, and install all default widgets
        P4Cms_Module::fetch('Feed')->enable()->load();
        P4Cms_Widget::installDefaults();

        $this->utility->impersonate('editor');
    }

    /**
     * Test the output of the widget with no configuration. 
     */
    public function testControllerNoConfig()
    {
        $widget = $this->_addWidget();
        $this->dispatch('/feed/widget/index/region/test/widget/' . $widget->getId());
        $body = $this->response->getBody();

        $this->assertModule('feed', 'Expected "site" module: '. $body);
        $this->assertController('widget', 'Expected "module" controller: '. $body);
        $this->assertAction('index', 'Expected "index" action: '. $body);

        $this->assertQueryContentContains(
            'div#content div.container',
            'No feed to display.',
            'Expected unconfigured output.' . $body
        );
    }

    /**
     * The the output of the configured widget
     */
    public function testControllerWithConfig()
    {
        $widget = $this->_addWidget();
        $feedUrl = 'http://www.perforce.com/rss/p4releases.rss';
        $values = array(
            'config'=> array(
                'feedUrl'           => $feedUrl,
                'showFeedUrl'       => '1',
                'showDate'          => '1',
                'showDescription'   => '1',
                'maxItems'          => 2
            )
        );
        $widget->setValues($values)->save();

        $this->dispatch('/feed/widget/index/region/test/widget/' . $widget->getId());
        $body = $this->response->getBody();

        $this->assertModule('feed', 'Expected "site" module: '. $body);
        $this->assertController('widget', 'Expected "module" controller: '. $body);
        $this->assertAction('index', 'Expected "index" action: '. $body);

        $this->assertQueryContentContains(
            'div#content div.container div.feed-url a',
            $feedUrl,
            'Expected feedUrl in output.' . $body
        );
    }

    /**
     * Ensure configuration form look correct
     */
    public function testConfigureForm()
    {
        $widget = $this->_addWidget();
        $id = $widget->getId();

        $this->dispatch('/widget/index/configure/region/test/widget/' . $id);
        $body = $this->response->getBody();
        $this->assertModule('widget', 'Last module run should be widget module; '. $body);
        $this->assertController('index', 'Expected controller; '. $body);
        $this->assertAction('configure', 'Expected action; '. $body);

        // verify form looks correct.
        $this->assertQuery("form#widget-$id-config-form");
        $this->assertQuery("input#widget-$id-config-feedUrl");
        $this->assertQuery("input#widget-$id-config-showFeedUrl");
        $this->assertQuery("input#widget-$id-config-showDate");
        $this->assertQuery("input#widget-$id-config-showDescription");
        $this->assertQuery("select#widget-$id-config-maxItems");
    }

    /**
     * Utility function to add the widget to the test region.
     */
    public function _addWidget()
    {
        $widget = P4Cms_Widget::factory('feed/feed');
        $widget->setValue('region', 'test')->save();

        return $widget;
    }
}
# Change User Description Committed
#1 16170 perforce_software Move Chronicle files to follow new path scheme for branching.
//guest/perforce_software/chronicle/sites/all/modules/feed/tests/WidgetControllerTest.php
#1 8972 Matt Attaway Initial add of the Chronicle source code