class SubscribersTest in Message Subscribe 8
Same name in this branch
- 8 tests/src/Unit/SubscribersTest.php \Drupal\Tests\message_subscribe\Unit\SubscribersTest
- 8 tests/src/Kernel/SubscribersTest.php \Drupal\Tests\message_subscribe\Kernel\SubscribersTest
Unit tests for the subscribers service.
@group message_subscribe
@coversDefaultClass \Drupal\message_subscribe\Subscribers
Hierarchy
- class \Drupal\Tests\UnitTestCase extends \PHPUnit\Framework\TestCase uses PhpunitCompatibilityTrait
- class \Drupal\Tests\message_subscribe\Unit\SubscribersTest
Expanded class hierarchy of SubscribersTest
File
- tests/
src/ Unit/ SubscribersTest.php, line 30
Namespace
Drupal\Tests\message_subscribe\UnitView source
class SubscribersTest extends UnitTestCase {
/**
* Mock flag service.
*
* @var \Drupal\flag\FlagServiceInterface
*/
protected $flagService;
/**
* Mock config factory.
*
* @var \Drupal\Core\Config\ConfigFactoryInterface
*/
protected $configFactory;
/**
* Mock entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* Mock message notifier.
*
* @var \Drupal\message_notify\MessageNotifier
*/
protected $messageNotifier;
/**
* Mock module handler.
*
* @var \Drupal\Core\Extension\ModuleHandlerInterface
*/
protected $moduleHandler;
/**
* Mock queue factory.
*
* @var \Drupal\Core\Queue\QueueFactory
*/
protected $queue;
/**
* {@inheritdoc}
*/
public function setUp() {
parent::setUp();
require __DIR__ . '/../fixture_foo.module.php';
// Setup default mock services. Individual tests can override as needed.
$this->flagService = $this
->prophesize(FlagServiceInterface::class)
->reveal();
$this->configFactory = $this
->prophesize(ConfigFactoryInterface::class)
->reveal();
$this->entityTypeManager = $this
->prophesize(EntityTypeManagerInterface::class)
->reveal();
$this->messageNotifier = $this
->prophesize(MessageNotifier::class)
->reveal();
$this->moduleHandler = $this
->prophesize(ModuleHandlerInterface::class)
->reveal();
$this->queue = $this
->prophesize(QueueFactory::class)
->reveal();
}
/**
* Helper to generate a new subscriber service with mock services.
*
* @return \Drupal\message_subscribe\SubscribersInterface
* The subscribers service object.
*/
protected function getSubscriberService() {
return new Subscribers($this->flagService, $this->configFactory, $this->entityTypeManager, $this->messageNotifier, $this->moduleHandler, $this->queue);
}
/**
* Test the getFlags method.
*
* @covers ::getFlags
*/
public function testGetFlags() {
// Override config mock to allow access to the prefix variable.
$config = $this
->prophesize(ImmutableConfig::class);
$config
->get('flag_prefix')
->willReturn('blah');
$config
->get('debug_mode')
->willReturn(FALSE);
$config_factory = $this
->prophesize(ConfigFactoryInterface::class);
$config_factory
->get('message_subscribe.settings')
->willReturn($config);
$this->configFactory = $config_factory
->reveal();
// No flags.
$flag_service = $this
->prophesize(FlagServiceInterface::class);
$flag_service
->getAllFlags(NULL, NULL, NULL)
->willReturn([]);
$this->flagService = $flag_service
->reveal();
$subscribers = $this
->getSubscriberService();
$this
->assertEquals([], $subscribers
->getFlags());
// No flags matching prefix.
$flag = $this
->prophesize(FlagInterface::class)
->reveal();
$flag_service = $this
->prophesize(FlagServiceInterface::class);
$flag_service
->getAllFlags(NULL, NULL, NULL)
->willReturn([
'foo' => $flag,
'bar' => $flag,
]);
$this->flagService = $flag_service
->reveal();
$subscribers = $this
->getSubscriberService();
$this
->assertEquals([], $subscribers
->getFlags());
// Matching prefix.
$flag_service = $this
->prophesize(FlagServiceInterface::class);
$flag_service
->getAllFlags(NULL, NULL, NULL)
->willReturn([
'foo' => $flag,
'bar' => $flag,
'blah_foo' => $flag,
]);
$this->flagService = $flag_service
->reveal();
$subscribers = $this
->getSubscriberService();
$this
->assertEquals([
'blah_foo' => $flag,
], $subscribers
->getFlags());
}
/**
* Test the sendMessage method.
*
* @covers ::sendMessage
*/
public function testSendMessage() {
// Mock config.
$config = $this
->prophesize(ImmutableConfig::class);
$config
->get('use_queue')
->willReturn(FALSE);
$config
->get('notify_own_actions')
->willReturn(FALSE);
$config
->get('default_notifiers')
->willReturn(FALSE);
$config
->get('debug_mode')
->willReturn(TRUE);
$config_factory = $this
->prophesize(ConfigFactoryInterface::class);
$config_factory
->get('message_subscribe.settings')
->willReturn($config);
$this->configFactory = $config_factory
->reveal();
// Mock logger.
$logger = $this
->prophesize(LoggerChannelInterface::class);
$logger
->debug(Argument::any(), Argument::any())
->shouldBeCalled();
// Mock module handler.
$module_handler = $this
->prophesize(ModuleHandlerInterface::class);
$module_handler
->getImplementations(Argument::any())
->willReturn([
'foo',
]);
$module_handler
->alter('message_subscribe_get_subscribers', Argument::any(), Argument::any())
->shouldBeCalled();
$module_handler
->alter('message_subscribe_message', Argument::any(), Argument::any())
->shouldBeCalled();
$this->moduleHandler = $module_handler
->reveal();
// Mock query.
$query = $this
->prophesize(QueryInterface::class);
$query
->condition(Argument::any(), Argument::any(), Argument::any())
->willReturn($query
->reveal());
// User 4 is blocked.
$query
->execute()
->willReturn([
1 => 1,
2 => 2,
7 => 7,
]);
// Mock user storage.
$account = $this
->prophesize(UserInterface::class)
->reveal();
$entity_storage = $this
->prophesize(EntityStorageInterface::class);
$entity_storage
->load(Argument::any())
->willReturn($account);
$entity_storage
->getQuery()
->willReturn($query
->reveal());
// Mock entity type manager.
$entity_type_manager = $this
->prophesize(EntityTypeManagerInterface::class);
$entity_type_manager
->getStorage('user')
->willReturn($entity_storage
->reveal());
$this->entityTypeManager = $entity_type_manager
->reveal();
$subscribers = $this
->getSubscriberService();
$subscribers
->setLoggerChannel($logger
->reveal());
$entity = $this
->prophesize(EntityInterface::class);
$entity
->access('view', $account)
->willReturn(TRUE);
$entity
->id()
->willReturn(42);
$entity
->getEntityTypeId()
->willReturn('foo');
$message = $this
->prophesize(Message::class);
$message
->createDuplicate()
->willReturn($message
->reveal());
$message
->id()
->willReturn(22);
$message
->getFieldDefinitions()
->willReturn([]);
$message
->setOwnerId(1)
->shouldBeCalled();
$message
->setOwnerId(2)
->shouldBeCalled();
$message
->setOwnerId(7)
->shouldBeCalled();
// User 4 is blocked.
$message
->setOwnerId(4)
->shouldNotBeCalled();
$subscribers
->sendMessage($entity
->reveal(), $message
->reveal());
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
PhpunitCompatibilityTrait:: |
public | function | Returns a mock object for the specified class using the available method. | |
PhpunitCompatibilityTrait:: |
public | function | Compatibility layer for PHPUnit 6 to support PHPUnit 4 code. | |
SubscribersTest:: |
protected | property | Mock config factory. | |
SubscribersTest:: |
protected | property | Mock entity type manager. | |
SubscribersTest:: |
protected | property | Mock flag service. | |
SubscribersTest:: |
protected | property | Mock message notifier. | |
SubscribersTest:: |
protected | property | Mock module handler. | |
SubscribersTest:: |
protected | property | Mock queue factory. | |
SubscribersTest:: |
protected | function | Helper to generate a new subscriber service with mock services. | |
SubscribersTest:: |
public | function |
Overrides UnitTestCase:: |
|
SubscribersTest:: |
public | function | Test the getFlags method. | |
SubscribersTest:: |
public | function | Test the sendMessage method. | |
UnitTestCase:: |
protected | property | The random generator. | |
UnitTestCase:: |
protected | property | The app root. | 1 |
UnitTestCase:: |
protected | function | Asserts if two arrays are equal by sorting them first. | |
UnitTestCase:: |
protected | function | Mocks a block with a block plugin. | 1 |
UnitTestCase:: |
protected | function | Returns a stub class resolver. | |
UnitTestCase:: |
public | function | Returns a stub config factory that behaves according to the passed array. | |
UnitTestCase:: |
public | function | Returns a stub config storage that returns the supplied configuration. | |
UnitTestCase:: |
protected | function | Sets up a container with a cache tags invalidator. | |
UnitTestCase:: |
protected | function | Gets the random generator for the utility methods. | |
UnitTestCase:: |
public | function | Returns a stub translation manager that just returns the passed string. | |
UnitTestCase:: |
public | function | Generates a unique random string containing letters and numbers. |