og_sm-8.x-1.0/og_sm_config/tests/src/Kernel/ConfigTest.php

og_sm_config/tests/src/Kernel/ConfigTest.php
<?php

namespace Drupal\Tests\og_sm_config\Kernel;

use Drupal\og_sm\OgSm;
use Drupal\Tests\og_sm\Kernel\OgSmKernelTestBase;

/**
 * Tests Site Configuration API.
 *
 * @group og_sm
 */
class ConfigTest extends OgSmKernelTestBase {

  /**
   * {@inheritdoc}
   */
  public static $modules = [
    'og_sm_config',
    'og_sm_config_test',
  ];

  /**
   * The configuration override object.
   *
   * @var \Drupal\og_sm_config\Config\SiteConfigFactoryOverrideInterface
   */
  protected $configFactoryOverride;

  /**
   * Site node 1.
   *
   * @var \Drupal\node\NodeInterface
   */
  protected $site1;

  /**
   * Site node 2.
   *
   * @var \Drupal\node\NodeInterface
   */
  protected $site2;

  /**
   * {@inheritdoc}
   */
  public function setUp() {
    parent::setUp();

    $this->configFactoryOverride = $this->container->get('og_sm.config_factory_override');

    $type = $this->createGroupNodeType(OgSmKernelTestBase::TYPE_IS_GROUP);
    OgSm::setSiteType($type, TRUE);
    $type->save();
    $this->site1 = $this->createGroup($type->id());
    $this->site2 = $this->createGroup($type->id());
  }

  /**
   * Test DB operations.
   */
  public function testDbCrud() {
    $site1_config = $this->configFactoryOverride->getOverride($this->site1, 'og_sm_config_test.settings');
    $site2_config = $this->configFactoryOverride->getOverride($this->site2, 'og_sm_config_test.settings');

    // By default no variables.
    $this->assertEquals([], $site1_config->get());

    // Store some variables.
    $var11 = TRUE;
    $var12 = NULL;
    $var13 = 123;
    $var14 = '123';
    $var15 = [];
    $var16 = [123, 'test123', 'key' => 'value'];
    $var21 = FALSE;

    $site2_config->set('test_1', $var21)->save();
    $site1_config->set('test_3', $var13)->save();
    $site1_config->set('test_1', $var11)->save();
    $site1_config->set('test_5', $var15)->save();
    $site1_config->set('test_2', $var12)->save();
    $site1_config->set('test_6', $var16)->save();
    $site1_config->set('test_4', $var14)->save();

    // Update variable.
    $var14 = '321';
    $site1_config->set('test_4', $var14)->save();

    // Get all variables (expected ordered by name).
    $expected = [
      'test_1' => $var11,
      'test_2' => $var12,
      'test_3' => $var13,
      'test_4' => $var14,
      'test_5' => $var15,
      'test_6' => $var16,
    ];
    $this->assertEquals($expected, $site1_config->get());

    // Delete a variable.
    $site1_config->clear('test_4');
    unset($expected['test_4']);
    $this->assertEquals($expected, $site1_config->get());

    // Delete all variables.
    $site1_config->delete();
    $this->assertEquals([], $site1_config->get());
  }

  /**
   * Test the variable functions.
   */
  public function testOperations() {
    $site1_config = $this->configFactoryOverride->getOverride($this->site1, 'og_sm_config_test.settings');
    $site2_config = $this->configFactoryOverride->getOverride($this->site2, 'og_sm_config_test.settings');

    // Store some values in the DB.
    $var11 = TRUE;
    $var13 = 2;
    $var15 = [1 => 'test1', 'two' => 'test two'];
    $var21 = FALSE;
    $site1_config->set('test_1', $var11)->save();
    $site1_config->set('test_3', $var13)->save();
    $site1_config->set('test_5', $var15)->save();
    $site2_config->set('test_1', $var21)->save();

    // Get all the variables for a Site.
    $expected = ['test_1' => $var11, 'test_3' => $var13, 'test_5' => $var15];
    $variables = $site1_config->get();
    $this->assertEquals($expected, $variables);

    // Get non existing variable.
    $this->assertNull($site1_config->get('non_existing'));

    // Get single existing variable.
    $this->assertEquals($var13, $site1_config->get('test_3'));

    // Set a variable.
    $var2 = 'test var 2';
    $site1_config->set('test_2', $var2);
    $expected = [
      'test_1' => $var11,
      'test_2' => $var2,
      'test_3' => $var13,
      'test_5' => $var15,
    ];
    $this->assertEquals($expected, $site1_config->get());

    // Delete a variable.
    $site1_config->clear('test_3');
    unset($expected['test_3']);
    $this->assertEquals($expected, $site1_config->get());

    // Delete all variables.
    $site1_config->delete();
    $this->assertEquals([], $site1_config->get());
  }

  /**
   * Check if the variables are deleted when the site is deleted.
   */
  public function testVariablesDeleteOnSiteDelete() {
    $this->installSchema('node', ['node_access']);
    $site1_config = $this->configFactoryOverride->getOverride($this->site1, 'og_sm_config_test.settings');
    $site1_config->set('test_1', TRUE)->save();
    $site1_config->set('test_2', 'foo')->save();
    $expected = ['test_1' => TRUE, 'test_2' => 'foo'];
    $this->assertEquals($expected, $site1_config->get());

    $this->site1->delete();
    $site1_config = $this->configFactoryOverride->getOverride($this->site1, 'og_sm_config_test.settings');
    $this->assertEquals([], $site1_config->get());
  }

  /**
   * Test copying variables from one Site to another.
   */
  public function testVariableCopyFromTo() {
    $site1_config = $this->configFactoryOverride->getOverride($this->site1, 'og_sm_config_test.settings');
    $site2_config = $this->configFactoryOverride->getOverride($this->site2, 'og_sm_config_test.settings');

    $site1_config->set('prefix_1_variable_1', 'value 1-1')->save();
    $site1_config->set('prefix_1_variable_2', 'value 1-2')->save();
    $site1_config->set('prefix_2_variable_1', 'value 2-1')->save();
    $expected = [
      'prefix_1_variable_1' => 'value 1-1',
      'prefix_1_variable_2' => 'value 1-2',
      'prefix_2_variable_1' => 'value 2-1',
    ];
    $this->assertEquals($expected, $site1_config->get(), 'Site 1 has 3 variables.');

    // Site to has no variables yet.
    $this->assertEquals([], $site2_config->get(), 'Site 2 has no variables.');

    // Copy Variables by their names.
    $names = ['prefix_1_variable_1', 'prefix_2_variable_1'];
    $site2_config->merge($site1_config->getMultiple($names))->save();
    $expected = [
      'prefix_1_variable_1' => 'value 1-1',
      'prefix_2_variable_1' => 'value 2-1',
    ];
    $this->assertEquals($expected, $site2_config->get(), 'Site 2 contains 2 copied variables by name.');

    // Copy variables by a pattern.
    $site2_config->delete();
    $this->assertEquals([], $site2_config->get(), 'Site 2 has no variables.');
    $site2_config->merge($site1_config->getMultipleByPattern('#_1_variable_#'))->save();
    $expected = [
      'prefix_1_variable_1' => 'value 1-1',
      'prefix_1_variable_2' => 'value 1-2',
    ];
    $this->assertEquals($expected, $site2_config->get(), 'Site 2 contains 2 copied variables by pattern.');

    // Copy variables by a prefix.
    $site2_config->delete();
    $this->assertEquals([], $site2_config->get(), 'Site 2 has no variables.');
    $site2_config->merge($site1_config->getMultipleByPrefix('prefix_2'))->save();
    $expected = ['prefix_2_variable_1' => 'value 2-1'];
    $this->assertEquals($expected, $site2_config->get(), 'Site 2 contains 1 copied variables by prefix.');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc