123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?php
- /**
- * Test for feed helper
- *
- * @group kohana
- * @group kohana.core
- * @group kohana.core.feed
- *
- * @package Kohana
- * @category Tests
- * @author Kohana Team
- * @author Jeremy Bush <contractfrombelow@gmail.com>
- * @copyright (c) Kohana Team
- * @license https://koseven.ga/LICENSE.md
- */
- class Kohana_FeedTest extends Unittest_TestCase
- {
- /**
- * Sets up the environment
- */
- // @codingStandardsIgnoreStart
- public function setUp(): void
- // @codingStandardsIgnoreEnd
- {
- parent::setUp();
- Kohana::$config->load('url')->set('trusted_hosts', ['localhost']);
- }
- /**
- * Provides test data for test_parse()
- *
- * @return array
- */
- public function provider_parse()
- {
- return [
- // $source, $expected
- [realpath(__DIR__.'/../test_data/feeds/activity.atom'), ['Proposals (Political/Workflow) #4839 (New)', 'Proposals (Political/Workflow) #4782']],
- [realpath(__DIR__.'/../test_data/feeds/example.rss20'), ['Example entry']],
- ];
- }
- /**
- * Tests that Feed::parse gets the correct number of elements
- *
- * @test
- * @dataProvider provider_parse
- * @covers feed::parse
- * @param string $source URL to test
- * @param integer $expected Count of items
- */
- public function test_parse($source, $expected_titles)
- {
- $titles = [];
- foreach (Feed::parse($source) as $item)
- {
- $titles[] = $item['title'];
- }
- $this->assertSame($expected_titles, $titles);
- }
- /**
- * Provides test data for test_create()
- *
- * @return array
- */
- public function provider_create()
- {
- $info = ['pubDate' => 123, 'image' => ['link' => 'http://kohanaframework.org/image.png', 'url' => 'http://kohanaframework.org/', 'title' => 'title']];
- return [
- // $source, $expected
- [$info, ['foo' => ['foo' => 'bar', 'pubDate' => 123, 'link' => 'foo']], ['_SERVER' => ['HTTP_HOST' => 'localhost']+$_SERVER],
- [
- 'tag' => 'channel',
- 'descendant' => [
- 'tag' => 'item',
- 'child' => [
- 'tag' => 'foo',
- 'content' => 'bar'
- ]
- ]
- ],
- [
- $this->matcher_composer($info, 'image', 'link'),
- $this->matcher_composer($info, 'image', 'url'),
- $this->matcher_composer($info, 'image', 'title')
- ]
- ],
- ];
- }
- /**
- * Helper for handy matcher composing
- *
- * @param array $data
- * @param string $tag
- * @param string $child
- * @return array
- */
- private function matcher_composer($data, $tag, $child)
- {
- return [
- 'tag' => 'channel',
- 'descendant' => [
- 'tag' => $tag,
- 'child' => [
- 'tag' => $child,
- 'content' => $data[$tag][$child]
- ]
- ]
- ];
- }
- /**
- * @test
- *
- * @dataProvider provider_create
- *
- * @covers feed::create
- *
- * @param string $info info to pass
- * @param integer $items items to add
- * @param integer $matcher output
- */
- public function test_create($info, $items, $enviroment, $matcher_item, $matchers_image)
- {
- $this->setEnvironment($enviroment);
- $this->assertTag($matcher_item, Feed::create($info, $items), '', FALSE);
- foreach ($matchers_image as $matcher_image)
- {
- $this->assertTag($matcher_image, Feed::create($info, $items), '', FALSE);
- }
- }
- }
|