You are here

class XmlParserTraitTest in Feeds 8.3

@coversDefaultClass \Drupal\feeds\Component\XmlParserTrait @group feeds

Hierarchy

Expanded class hierarchy of XmlParserTraitTest

File

tests/src/Unit/Component/XmlParserTraitTest.php, line 11

Namespace

Drupal\Tests\feeds\Unit\Component
View source
class XmlParserTraitTest extends FeedsUnitTestCase {

  /**
   * Basic XML parsing test.
   */
  public function test() {
    $trait = $this
      ->getMockForTrait('Drupal\\feeds\\Component\\XmlParserTrait');
    $doc = $this
      ->callProtectedMethod($trait, 'getDomDocument', [
      ' <thing></thing> ',
    ]);
    $this
      ->assertSame('DOMDocument', get_class($doc));
    $errors = $this
      ->callProtectedMethod($trait, 'getXmlErrors');
    $this
      ->assertSame([], $errors);
  }

  /**
   * Tests parsing a document with invalid XML.
   */
  public function testErrors() {
    $trait = $this
      ->getMockForTrait('Drupal\\feeds\\Component\\XmlParserTrait');
    $doc = $this
      ->callProtectedMethod($trait, 'getDomDocument', [
      'asdfasdf',
    ]);
    $this
      ->assertSame('DOMDocument', get_class($doc));
    $errors = $this
      ->callProtectedMethod($trait, 'getXmlErrors');
    $this
      ->assertSame("Start tag expected, '<' not found", $errors[3][0]['message']);
  }

  /**
   * Strip some namespaces out of XML.
   *
   * @dataProvider namespaceProvider
   */
  public function testRemoveDefaultNamespaces($in, $out) {
    $trait = $this
      ->getMockForTrait('Drupal\\feeds\\Component\\XmlParserTrait');
    $result = $this
      ->callProtectedMethod($trait, 'removeDefaultNamespaces', [
      $in,
    ]);
    $this
      ->assertSame($out, $result);
  }

  /**
   * Data provider for testRemoveDefaultNamespaces().
   *
   * Checks that the input and output are equal.
   */
  public function namespaceProvider() {
    return [
      [
        '<feed xmlns="http://www.w3.org/2005/Atom">bleep blorp</feed>',
        '<feed>bleep blorp</feed>',
      ],
      [
        '<подача xmlns="http://www.w3.org/2005/Atom">bleep blorp</подача>',
        '<подача>bleep blorp</подача>',
      ],
      [
        '<по.дача xmlns="http://www.w3.org/2005/Atom">bleep blorp</по.дача>',
        '<по.дача>bleep blorp</по.дача>',
      ],
      [
        '<element other attrs xmlns="http://www.w3.org/2005/Atom">bleep blorp</element>',
        '<element other attrs>bleep blorp</element>',
      ],
      [
        '<cat xmlns="http://www.w3.org/2005/Atom" other attrs>bleep blorp</cat>',
        '<cat other attrs>bleep blorp</cat>',
      ],
      [
        '<飼料 thing="stuff" xmlns="http://www.w3.org/2005/Atom">bleep blorp</飼料>',
        '<飼料 thing="stuff">bleep blorp</飼料>',
      ],
      [
        '<飼-料 thing="stuff" xmlns="http://www.w3.org/2005/Atom">bleep blorp</飼-料>',
        '<飼-料 thing="stuff">bleep blorp</飼-料>',
      ],
      [
        '<self xmlns="http://www.w3.org/2005/Atom" />',
        '<self />',
      ],
      [
        '<self attr xmlns="http://www.w3.org/2005/Atom"/>',
        '<self attr/>',
      ],
      [
        '<a xmlns="http://www.w3.org/2005/Atom"/>',
        '<a/>',
      ],
      [
        '<a xmlns="http://www.w3.org/2005/Atom"></a>',
        '<a></a>',
      ],
      [
        '<a href="http://google.com" xmlns="http://www.w3.org/2005/Atom"></a>',
        '<a href="http://google.com"></a>',
      ],
      // Test invalid XML element names.
      [
        '<1name href="http://google.com" xmlns="http://www.w3.org/2005/Atom"></1name>',
        '<1name href="http://google.com" xmlns="http://www.w3.org/2005/Atom"></1name>',
      ],
      // Test other namespaces.
      [
        '<name href="http://google.com" xmlns:h="http://www.w3.org/2005/Atom"></name>',
        '<name href="http://google.com" xmlns:h="http://www.w3.org/2005/Atom"></name>',
      ],
      // Test multiple default namespaces.
      [
        '<name xmlns="http://www.w3.org/2005/Atom"></name><name xmlns="http://www.w3.org/2005/Atom"></name>',
        '<name></name><name></name>',
      ],
    ];
  }

}

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.
FeedsUnitTestCase::setUp public function Overrides UnitTestCase::setUp 27
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.
XmlParserTraitTest::namespaceProvider public function Data provider for testRemoveDefaultNamespaces().
XmlParserTraitTest::test public function Basic XML parsing test.
XmlParserTraitTest::testErrors public function Tests parsing a document with invalid XML.
XmlParserTraitTest::testRemoveDefaultNamespaces public function Strip some namespaces out of XML.