View source
<?php
if (class_exists('TUnit')) {
class FeedsExJsonPathLinesUnitTests extends FeedsExUnitTestBase {
protected $source;
protected $parser;
protected $fetcherResult;
public static function getInfo() {
return array(
'name' => 'JSONPath JSON lines parser unit tests',
'description' => 'Unit tests for FeedsExJsonPathLines.',
'group' => 'Feeds EX',
);
}
public function setUp() {
parent::setUp();
require_once $this->moduleDir . '/src/FeedsExJsonPath.inc';
require_once $this->moduleDir . '/src/FeedsExJsonPathLines.inc';
$this->source = $this
->getMockFeedsSource();
$this->parser = FeedsPlugin::instance('FeedsExJsonPathLines', strtolower($this
->randomName()));
$this->parser
->setMessenger(new FeedsExTestMessenger());
$this->parser
->addConfig(array(
'sources' => array(
'title' => array(
'name' => 'Title',
'value' => 'name',
),
),
));
$this->fetcherResult = new FeedsFileFetcherResult($this->moduleDir . '/tests/resources/test.jsonl');
}
public function testSimpleParsing() {
$result = $this->parser
->parse($this->source, $this->fetcherResult);
$this
->assertParserResultItemCount($result, 4);
foreach (array(
'Gilbert',
'Alexa',
'May',
'Deloise',
) as $delta => $name) {
$this
->assertEqual($name, $result->items[$delta]['title']);
}
}
public function testBatching() {
$this
->variableSet('feeds_process_limit', 1);
foreach (array(
'Gilbert',
'Alexa',
'May',
'Deloise',
) as $name) {
$result = $this->parser
->parse($this->source, $this->fetcherResult);
$this
->assertParserResultItemCount($result, 1);
$this
->assertEqual($result->items[0]['title'], $name);
}
$result = $this->parser
->parse($this->source, $this->fetcherResult);
$this
->assertParserResultItemCount($result, 0);
}
public function testEmptyFeed() {
$this->parser
->parse($this->source, new FeedsFileFetcherResult($this->moduleDir . '/tests/resources/empty.txt'));
$this
->assertEmptyFeedMessage($this->parser
->getMessenger()
->getMessages());
}
}
}