You are here

public function FeaturesManagerTest::testGetPackages in Features 8.3

Same name and namespace in other branches
  1. 8.4 tests/src/Unit/FeaturesManagerTest.php \Drupal\Tests\features\Unit\FeaturesManagerTest::testGetPackages()

@covers ::filterPackages

File

tests/src/Unit/FeaturesManagerTest.php, line 261

Class

FeaturesManagerTest
@coversDefaultClass Drupal\features\FeaturesManager @group features

Namespace

Drupal\Tests\features\Unit

Code

public function testGetPackages() {
  $packages = [
    'package' => new Package('package', [
      'bundle' => '',
      'status' => FeaturesManagerInterface::STATUS_NO_EXPORT,
    ]),
    'package2' => new Package('package2', [
      'bundle' => '',
      'status' => FeaturesManagerInterface::STATUS_UNINSTALLED,
    ]),
    'package3' => new Package('package3', [
      'bundle' => 'my_bundle',
      'status' => FeaturesManagerInterface::STATUS_NO_EXPORT,
    ]),
    'package4' => new Package('package4', [
      'bundle' => 'my_bundle',
      'status' => FeaturesManagerInterface::STATUS_UNINSTALLED,
    ]),
  ];

  // Filter for the default bundle.
  $filtered_packages = $this->featuresManager
    ->filterPackages($packages, FeaturesBundleInterface::DEFAULT_BUNDLE);
  $this
    ->assertEquals([
    'package',
    'package2',
  ], array_keys($filtered_packages));

  // Filter for a custom bundle.
  $filtered_packages = $this->featuresManager
    ->filterPackages($packages, 'my_bundle');
  $this
    ->assertEquals([
    'package3',
    'package4',
  ], array_keys($filtered_packages));

  // Filter for a non-matching bundle.
  $filtered_packages = $this->featuresManager
    ->filterPackages($packages, 'some_bundle');
  $this
    ->assertEquals([], array_keys($filtered_packages));

  // Filter for the default bundle removing only exported.
  $filtered_packages = $this->featuresManager
    ->filterPackages($packages, FeaturesBundleInterface::DEFAULT_BUNDLE, TRUE);
  $this
    ->assertEquals([
    'package',
  ], array_keys($filtered_packages));

  // Filter for a custom bundle removing only exported.
  $filtered_packages = $this->featuresManager
    ->filterPackages($packages, 'my_bundle', TRUE);
  $this
    ->assertEquals([
    'package3',
  ], array_keys($filtered_packages));

  // Filter for a non-matching bundle removing only exported.
  $filtered_packages = $this->featuresManager
    ->filterPackages($packages, 'some_bundle', TRUE);
  $this
    ->assertEquals([], array_keys($filtered_packages));
}