push(new RSSFeedTest_ItemA()); $list->push(new RSSFeedTest_ItemB()); $list->push(new RSSFeedTest_ItemC()); $rssFeed = new RSSFeed($list, "http://www.example.com", "Test RSS Feed", "Test RSS Feed Description"); $content = $rssFeed->outputToBrowser(); //Debug::message($content); $this->assertContains('http://www.example.org/item-a/', $content); $this->assertContains('http://www.example.com/item-b.html', $content); $this->assertContains('http://www.example.com/item-c.html', $content); $this->assertContains('ItemA', $content); $this->assertContains('ItemB', $content); $this->assertContains('ItemC', $content); $this->assertContains('ItemA Content', $content); $this->assertContains('ItemB Content', $content); $this->assertContains('ItemC Content', $content); // Feed #2 - put Content() into and AltContent() into <description> $rssFeed = new RSSFeed($list, "http://www.example.com", "Test RSS Feed", "Test RSS Feed Description", "Content", "AltContent"); $content = $rssFeed->outputToBrowser(); $this->assertContains('<title>ItemA Content', $content); $this->assertContains('ItemB Content', $content); $this->assertContains('ItemC Content', $content); $this->assertContains('ItemA AltContent', $content); $this->assertContains('ItemB AltContent', $content); $this->assertContains('ItemC AltContent', $content); } public function testRenderWithTemplate() { $rssFeed = new RSSFeed(new ArrayList(), "", "", ""); $rssFeed->setTemplate('RSSFeedTest'); $content = $rssFeed->outputToBrowser(); $this->assertContains('Test Custom Template', $content); $rssFeed->setTemplate('RSSFeed'); $content = $rssFeed->outputToBrowser(); $this->assertNotContains('Test Custom Template', $content); } public function setUp() { parent::setUp(); Config::inst()->update('Director', 'alternate_base_url', '/'); if(!self::$original_host) self::$original_host = $_SERVER['HTTP_HOST']; $_SERVER['HTTP_HOST'] = 'www.example.org'; } public function tearDown() { parent::tearDown(); Config::inst()->update('Director', 'alternate_base_url', null); $_SERVER['HTTP_HOST'] = self::$original_host; } } class RSSFeedTest_ItemA extends ViewableData { // RSS-feed items must have $casting/$db information. private static $casting = array( 'Title' => 'Varchar', 'Content' => 'Text', 'AltContent' => 'Text', ); public function getTitle() { return "ItemA"; } public function getContent() { return "ItemA Content"; } public function getAltContent() { return "ItemA AltContent"; } public function Link($action = null) { return Controller::join_links("item-a/", $action); } } class RSSFeedTest_ItemB extends ViewableData { // ItemB tests without $casting public function Title() { return "ItemB"; } public function AbsoluteLink() { return "http://www.example.com/item-b.html"; } public function Content() { return "ItemB Content"; } public function AltContent() { return "ItemB AltContent"; } } class RSSFeedTest_ItemC extends ViewableData { // ItemC tests fields - Title has casting, Content doesn't. private static $casting = array( 'Title' => 'Varchar', 'AltContent' => 'Text', ); public $Title = "ItemC"; public $Content = "ItemC Content"; public $AltContent = "ItemC AltContent"; public function Link() { return "item-c.html"; } public function AbsoluteLink() { return "http://www.example.com/item-c.html"; } }