You are here

public function AkamaiTagPurgerTest::testPurgeCreationEvent in Akamai 8.3

Tests purge creation event dispatch.

File

tests/src/Unit/Plugin/Purge/Purger/AkamaiTagPurgerTest.php, line 23

Class

AkamaiTagPurgerTest
@coversDefaultClass \Drupal\akamai\Plugin\Purge\Purger\AkamaiTagPurger

Namespace

Drupal\Tests\akamai\Unit\Plugin\Purge\Purger

Code

public function testPurgeCreationEvent() {
  $purger = $this
    ->getMockBuilder('Drupal\\akamai\\Plugin\\Purge\\Purger\\AkamaiTagPurger')
    ->disableOriginalConstructor()
    ->setMethods(NULL)
    ->getMock();
  $formatter = new CacheTagFormatter();
  $container = new ContainerBuilder();
  $container
    ->set('akamai.helper.cachetagformatter', $formatter);
  \Drupal::setContainer($container);
  $client = $this
    ->getMockBuilder('Drupal\\akamai\\Plugin\\Client\\AkamaiClientV3')
    ->disableOriginalConstructor()
    ->setMethods([
    'setType',
    'purgeTags',
  ])
    ->getMock();
  $reflection = new \ReflectionClass($purger);
  $reflection_property = $reflection
    ->getProperty('client');
  $reflection_property
    ->setAccessible(TRUE);
  $reflection_property
    ->setValue($purger, $client);

  // Setup the mock event subscriber.
  $subscriber = new MockSubscriber();
  $event_dispatcher = new EventDispatcher();
  $event_dispatcher
    ->addListener(AkamaiPurgeEvents::PURGE_CREATION, [
    $subscriber,
    'onPurgeCreation',
  ]);
  $reflection_property = $reflection
    ->getProperty('eventDispatcher');
  $reflection_property
    ->setAccessible(TRUE);
  $reflection_property
    ->setValue($purger, $event_dispatcher);

  // Create stub for response class.
  $invalidation_1 = $this
    ->getMockBuilder('Drupal\\purge\\Plugin\\Purge\\Invalidation\\TagInvalidation')
    ->disableOriginalConstructor()
    ->getMock();
  $invalidation_1
    ->method('getExpression')
    ->willReturn('foo');

  // Create duplicate stub for response class.
  $invalidation_2 = $this
    ->getMockBuilder('Drupal\\purge\\Plugin\\Purge\\Invalidation\\TagInvalidation')
    ->disableOriginalConstructor()
    ->getMock();
  $invalidation_2
    ->method('getExpression')
    ->willReturn('foo');

  // Create third stub for response class.
  $invalidation_3 = $this
    ->getMockBuilder('Drupal\\purge\\Plugin\\Purge\\Invalidation\\TagInvalidation')
    ->disableOriginalConstructor()
    ->getMock();
  $invalidation_3
    ->method('getExpression')
    ->willReturn('bar');

  // Create string numeric stubs for response class.
  $invalidation_4 = $this
    ->getMockBuilder('Drupal\\purge\\Plugin\\Purge\\Invalidation\\TagInvalidation')
    ->disableOriginalConstructor()
    ->getMock();
  $invalidation_4
    ->method('getExpression')
    ->willReturn('123');
  $invalidation_5 = $this
    ->getMockBuilder('Drupal\\purge\\Plugin\\Purge\\Invalidation\\TagInvalidation')
    ->disableOriginalConstructor()
    ->getMock();
  $invalidation_5
    ->method('getExpression')
    ->willReturn('234');

  // Create integer stubs for response class.
  $invalidation_6 = $this
    ->getMockBuilder('Drupal\\purge\\Plugin\\Purge\\Invalidation\\TagInvalidation')
    ->disableOriginalConstructor()
    ->getMock();
  $invalidation_6
    ->method('getExpression')
    ->willReturn(123);
  $invalidation_7 = $this
    ->getMockBuilder('Drupal\\purge\\Plugin\\Purge\\Invalidation\\TagInvalidation')
    ->disableOriginalConstructor()
    ->getMock();
  $invalidation_7
    ->method('getExpression')
    ->willReturn(456);

  // Create float stub for response class.
  $invalidation_8 = $this
    ->getMockBuilder('Drupal\\purge\\Plugin\\Purge\\Invalidation\\TagInvalidation')
    ->disableOriginalConstructor()
    ->getMock();
  $invalidation_8
    ->method('getExpression')
    ->willReturn(1.01);

  // Create boolean stub for response class.
  $invalidation_9 = $this
    ->getMockBuilder('Drupal\\purge\\Plugin\\Purge\\Invalidation\\TagInvalidation')
    ->disableOriginalConstructor()
    ->getMock();
  $invalidation_9
    ->method('getExpression')
    ->willReturn(TRUE);
  $purger
    ->invalidate([
    $invalidation_1,
    $invalidation_2,
    $invalidation_3,
    $invalidation_4,
    $invalidation_5,
    $invalidation_6,
    $invalidation_7,
    $invalidation_8,
    $invalidation_9,
  ]);
  $this
    ->assertSame([
    'foo',
    'bar',
    '123',
    '234',
    '456',
    '1.01',
    '1',
    'on_purge_creation',
  ], $subscriber->event->data);
}