You are here

class AcsfSiteTest in Acquia Cloud Site Factory Connector 8

Same name and namespace in other branches
  1. 8.2 tests/AcsfSiteTest.php \AcsfSiteTest

AcsfSiteTest.

Hierarchy

Expanded class hierarchy of AcsfSiteTest

File

tests/AcsfSiteTest.php, line 16
Provides PHPUnit tests for Acsf Site.

View source
class AcsfSiteTest extends TestCase {

  /**
   * The site ID issued by the factory.
   *
   * Note this value is stored inside $info in AcsfSite, which defines __get().
   * So we cannot rename it.
   *
   * @var int
   */

  // phpcs:disable
  public $site_id = 12345678;

  // phpcs:enable

  /**
   * Setup.
   */
  public function setUp() {

    // Simulate the sites.json configuration.
    $GLOBALS['gardens_site_settings']['conf']['acsf_site_id'] = $this->site_id;
    $drupalMock = Mockery::mock('overload:Drupal');
    $drupalMock
      ->shouldReceive('service')
      ->with('acsf.variable_storage')
      ->once()
      ->andReturn(new AcsfVariableStorageMock());
  }

  /**
   * Provides test data.
   */
  public function getTestData() {
    $data = [
      'true' => TRUE,
      'false' => FALSE,
      'string' => 'unit_test_string_value',
      'int' => mt_rand(0, 64),
      'float' => mt_rand() / mt_getrandmax(),
      'array' => [
        'foo',
        'bar',
        'baz',
        'qux',
      ],
    ];
    $data['object'] = (object) $data;
    return $data;
  }

  /**
   * Tests that we can use the factory method to get a cached site.
   */
  public function testFactoryLoadCache() {
    $site = AcsfSite::load();
    $this
      ->assertInstanceOf('\\Drupal\\acsf\\AcsfSite', $site);
    $cache = AcsfSite::load();
    $this
      ->assertSame($site, $cache);
    $this
      ->assertEquals($site->site_id, $cache->site_id);
  }

  /**
   * Tests the __get() method.
   *
   * Test the public interface by using the __set() directly and then checking
   * if the value is set for the class property.
   */
  public function testAcsfSiteGet() {
    $site = new AcsfSite($this->site_id);
    $data = $this
      ->getTestData();
    foreach ($data as $type => $value) {
      $site
        ->__set($type, $value);
      $this
        ->assertSame($site->{$type}, $value);
    }
  }

  /**
   * Tests the __set() method.
   *
   * Test the public interface by setting a class property, then checking if
   * the value is available using the __get() method.
   */
  public function testAcsfSiteSet() {
    $site = new AcsfSite($this->site_id);
    $data = $this
      ->getTestData();
    foreach ($data as $type => $value) {
      $site->{$type} = $value;
      $this
        ->assertSame($site
        ->__get($type), $value);
    }
  }

  /**
   * Tests the __unset() method.
   *
   * Test the public interface by first setting a class property, and assuring
   * that it is available using the __get() method. Then uset that same class
   * property and assure that it is NOT available using the __get() method.
   */
  public function testAcsfSiteUnset() {
    $site = new AcsfSite($this->site_id);
    $data = $this
      ->getTestData();
    foreach ($data as $type => $value) {
      $site->{$type} = $value;
      $this
        ->assertSame($site
        ->__get($type), $value);
      unset($site->{$type});
      $get_value = $site
        ->__get($type);
      $this
        ->assertNull($get_value);
    }
  }

  /**
   * Tests the __isset() method.
   *
   * Test the public interface by first setting a value using the __set()
   * method and assuring that it is available in the __get() method. Then test
   * that the class property is set using isset().
   */
  public function testAcsfSiteIsset() {
    $site = new AcsfSite($this->site_id);
    $data = $this
      ->getTestData();
    foreach ($data as $type => $value) {
      $site
        ->__set($type, $value);
      $this
        ->assertSame($site
        ->__get($type), $value);
      $this
        ->assertTrue(isset($site->{$type}));
    }
  }

  /**
   * Tests the save() method.
   */
  public function testSavedData() {
    $string = 'test value';
    $site = new AcsfSite($this->site_id);
    $site->custom = $string;
    $site
      ->save();
    unset($site);
    $clone = new AcsfSite($this->site_id);
    $this
      ->assertEquals($clone->custom, $string);
  }

  /**
   * Cleanup Mockery on each test. (PHPUnit 5 does not support listeners.)
   */
  public function tearDown() {
    Mockery::close();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
AcsfSiteTest::$site_id public property
AcsfSiteTest::getTestData public function Provides test data.
AcsfSiteTest::setUp public function Setup.
AcsfSiteTest::tearDown public function Cleanup Mockery on each test. (PHPUnit 5 does not support listeners.)
AcsfSiteTest::testAcsfSiteGet public function Tests the __get() method.
AcsfSiteTest::testAcsfSiteIsset public function Tests the __isset() method.
AcsfSiteTest::testAcsfSiteSet public function Tests the __set() method.
AcsfSiteTest::testAcsfSiteUnset public function Tests the __unset() method.
AcsfSiteTest::testFactoryLoadCache public function Tests that we can use the factory method to get a cached site.
AcsfSiteTest::testSavedData public function Tests the save() method.