You are here

class FeedTypeTest in Feeds 8.3

@coversDefaultClass \Drupal\feeds\Entity\FeedType @group feeds

Hierarchy

Expanded class hierarchy of FeedTypeTest

File

tests/src/Unit/Entity/FeedTypeTest.php, line 14

Namespace

Drupal\Tests\feeds\Unit\Entity
View source
class FeedTypeTest extends FeedsUnitTestCase {

  /**
   * The feed type under test.
   *
   * @var \Drupal\feeds\Entity\FeedType
   */
  protected $feedType;

  /**
   * Gets a feed type for testing.
   *
   * @param string $feed_type_id
   *   The feed type ID.
   * @param array $stubs
   *   (optional) The methods to mock.
   *
   * @return \Drupal\feeds\FeedTypeInterface
   *   The mocked feed type.
   */
  protected function getFeedTypeMock($feed_type_id, array $stubs = []) {

    // Plugin manager.
    $pluginManager = $this
      ->getMockBuilder(FeedsPluginManager::class)
      ->disableOriginalConstructor()
      ->getMock();
    $pluginManager
      ->expects($this
      ->any())
      ->method('getDefinitions')
      ->will($this
      ->returnValue([]));
    $default_stubs = [
      'getParser',
      'getSourcePluginManager',
      'alter',
    ];
    $feed_type = $this
      ->getMockBuilder(FeedType::class)
      ->setConstructorArgs([
      [
        'id' => $feed_type_id,
        'label' => 'My Feed',
        'custom_sources' => [
          'source1' => [
            'label' => 'Source 1',
            'value' => 'Source 1',
          ],
        ],
      ],
      'feeds_feed_type',
    ])
      ->setMethods(array_merge($default_stubs, $stubs))
      ->getMock();

    // Parser.
    $parser = $this
      ->getMockBuilder(ParserInterface::class)
      ->getMock();
    $parser
      ->expects($this
      ->any())
      ->method('getMappingSources')
      ->will($this
      ->returnValue([]));
    $feed_type
      ->expects($this
      ->any())
      ->method('getParser')
      ->will($this
      ->returnValue($parser));

    // Source plugin manager.
    $feed_type
      ->expects($this
      ->any())
      ->method('getSourcePluginManager')
      ->will($this
      ->returnValue($pluginManager));
    return $feed_type;
  }

  /**
   * {@inheritdoc}
   */
  public function setUp() {
    parent::setUp();
    $this->feedType = $this
      ->getFeedTypeMock($this
      ->randomMachineName());
  }

  /**
   * @covers ::getMappedSources
   */
  public function testGetMappedSources() {
    $feed_type = $this
      ->getFeedTypeMock($this
      ->randomMachineName(), [
      'getMappings',
    ]);
    $feed_type
      ->expects($this
      ->once())
      ->method('getMappings')
      ->will($this
      ->returnValue([
      [
        'target' => 'feeds_item',
        'map' => [
          'guid' => 'guid',
        ],
        'unique' => [
          'guid' => TRUE,
        ],
      ],
      [
        'target' => 'title',
        'map' => [
          'value' => 'title',
        ],
      ],
      [
        'target' => 'body',
        'map' => [
          'value' => 'description',
        ],
        'settings' => [
          [
            'format' => 'plain_text',
          ],
        ],
      ],
    ]));
    $expected = [
      'guid' => 'guid',
      'title' => 'title',
      'description' => 'description',
    ];
    $this
      ->assertSame($expected, $feed_type
      ->getMappedSources());
  }

  /**
   * @covers ::addCustomSource
   */
  public function testAddCustomSource() {

    // Add a custom source.
    $this
      ->assertSame($this->feedType, $this->feedType
      ->addCustomSource('source2', [
      'label' => 'Source 2',
      'value' => 'Source 2',
    ]));

    // Assert that the source exists as one of the mapping sources.
    $expected = [
      'source1' => [
        'label' => 'Source 1',
        'value' => 'Source 1',
      ],
      'source2' => [
        'label' => 'Source 2',
        'value' => 'Source 2',
      ],
    ];
    $this
      ->assertSame($expected, $this->feedType
      ->getMappingSources());
  }

  /**
   * @covers ::getCustomSource
   */
  public function testGetCustomSource() {

    // Get an existing source.
    $expected = [
      'label' => 'Source 1',
      'value' => 'Source 1',
    ];
    $this
      ->assertSame($expected, $this->feedType
      ->getCustomSource('source1'));

    // Get a non-existing source.
    $this
      ->assertSame(NULL, $this->feedType
      ->getCustomSource('non_existing'));
  }

  /**
   * @covers ::customSourceExists
   */
  public function testCustomSourceExists() {
    $this
      ->assertSame(TRUE, $this->feedType
      ->customSourceExists('source1'));
    $this
      ->assertSame(FALSE, $this->feedType
      ->customSourceExists('non_existing'));
  }

  /**
   * @covers ::removeCustomSource
   */
  public function testRemoveCustomSource() {

    // Remove source 1.
    $this
      ->assertSame($this->feedType, $this->feedType
      ->removeCustomSource('source1'));
    $this
      ->assertSame([], $this->feedType
      ->getMappingSources());
  }

}

Members

Namesort descending Modifiers Type Description Overrides
FeedsMockingTrait::getMockAccount protected function Mocks an account object.
FeedsMockingTrait::getMockedAccountSwitcher protected function Returns a mocked AccountSwitcher object.
FeedsMockingTrait::getMockFeed protected function Returns a mocked feed entity.
FeedsMockingTrait::getMockFeedType protected function Returns a mocked feed type entity.
FeedsMockingTrait::getMockFieldDefinition protected function Mocks a field definition. 1
FeedsMockingTrait::getMockFileSystem protected function Mocks the file system.
FeedsReflectionTrait::callProtectedMethod protected function Calls a protected method on the given object.
FeedsReflectionTrait::getMethod protected function Gets a ReflectionMethod for a class method.
FeedsReflectionTrait::getProtectedClosure protected function Returns a dynamically created closure for the object's method.
FeedsReflectionTrait::setProtectedProperty protected function Sets a protected property.
FeedsUnitTestCase::absolutePath protected function Returns the absolute directory path of the Feeds module.
FeedsUnitTestCase::defineConstants protected function Defines stub constants.
FeedsUnitTestCase::getMockStreamWrapperManager protected function Returns a mock stream wrapper manager.
FeedsUnitTestCase::resourcesPath protected function Returns the absolute directory path of the resources folder.
FeedTypeTest::$feedType protected property The feed type under test.
FeedTypeTest::getFeedTypeMock protected function Gets a feed type for testing.
FeedTypeTest::setUp public function Overrides FeedsUnitTestCase::setUp
FeedTypeTest::testAddCustomSource public function @covers ::addCustomSource
FeedTypeTest::testCustomSourceExists public function @covers ::customSourceExists
FeedTypeTest::testGetCustomSource public function @covers ::getCustomSource
FeedTypeTest::testGetMappedSources public function @covers ::getMappedSources
FeedTypeTest::testRemoveCustomSource public function @covers ::removeCustomSource
PhpunitCompatibilityTrait::getMock Deprecated public function Returns a mock object for the specified class using the available method.
PhpunitCompatibilityTrait::setExpectedException Deprecated public function Compatibility layer for PHPUnit 6 to support PHPUnit 4 code.
UnitTestCase::$randomGenerator protected property The random generator.
UnitTestCase::$root protected property The app root. 1
UnitTestCase::assertArrayEquals protected function Asserts if two arrays are equal by sorting them first.
UnitTestCase::getBlockMockWithMachineName Deprecated protected function Mocks a block with a block plugin. 1
UnitTestCase::getClassResolverStub protected function Returns a stub class resolver.
UnitTestCase::getConfigFactoryStub public function Returns a stub config factory that behaves according to the passed array.
UnitTestCase::getConfigStorageStub public function Returns a stub config storage that returns the supplied configuration.
UnitTestCase::getContainerWithCacheTagsInvalidator protected function Sets up a container with a cache tags invalidator.
UnitTestCase::getRandomGenerator protected function Gets the random generator for the utility methods.
UnitTestCase::getStringTranslationStub public function Returns a stub translation manager that just returns the passed string.
UnitTestCase::randomMachineName public function Generates a unique random string containing letters and numbers.