You are here

public function AppendOpTest::testProcess in Drupal 8

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Composer/Plugin/Scaffold/Integration/AppendOpTest.php \Drupal\Tests\Composer\Plugin\Scaffold\Integration\AppendOpTest::testProcess()

@covers ::process

File

core/tests/Drupal/Tests/Composer/Plugin/Scaffold/Integration/AppendOpTest.php, line 22

Class

AppendOpTest
@coversDefaultClass \Drupal\Composer\Plugin\Scaffold\Operations\AppendOp

Namespace

Drupal\Tests\Composer\Plugin\Scaffold\Integration

Code

public function testProcess() {
  $fixtures = new Fixtures();
  $destination = $fixtures
    ->destinationPath('[web-root]/robots.txt');
  $options = ScaffoldOptions::create([]);

  // Assert that there is no target file before we run our test.
  $this
    ->assertFileNotExists($destination
    ->fullPath());

  // Create a file.
  file_put_contents($destination
    ->fullPath(), "# This is a test\n");
  $prepend = $fixtures
    ->sourcePath('drupal-drupal-test-append', 'prepend-to-robots.txt');
  $append = $fixtures
    ->sourcePath('drupal-drupal-test-append', 'append-to-robots.txt');
  $sut = new AppendOp($prepend, $append, TRUE);
  $sut
    ->scaffoldAtNewLocation($destination);
  $expected = <<<EOT
# robots.txt fixture scaffolded from "file-mappings" in drupal-drupal-test-append composer.json fixture.
# This content is prepended to the top of the existing robots.txt fixture.
# ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

# This is a test

# ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# This content is appended to the bottom of the existing robots.txt fixture.
# robots.txt fixture scaffolded from "file-mappings" in drupal-drupal-test-append composer.json fixture.
EOT;
  $pre_calculated_contents = $sut
    ->contents();
  $this
    ->assertEquals(trim($expected), trim($pre_calculated_contents));

  // Test the system under test.
  $sut
    ->process($destination, $fixtures
    ->io(), $options);

  // Assert that the target file was created.
  $this
    ->assertFileExists($destination
    ->fullPath());

  // Assert the target contained the contents from the correct scaffold files.
  $contents = trim(file_get_contents($destination
    ->fullPath()));
  $this
    ->assertEquals(trim($expected), $contents);

  // Confirm that expected output was written to our io fixture.
  $output = $fixtures
    ->getOutput();
  $this
    ->assertStringContainsString('Prepend to [web-root]/robots.txt from assets/prepend-to-robots.txt', $output);
  $this
    ->assertStringContainsString('Append to [web-root]/robots.txt from assets/append-to-robots.txt', $output);
}