BundleIntegrationTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace Test\Michel\PQueueBundle;
  3. use Michel\PQueue\PQueueConsumer;
  4. use Michel\PQueue\Transport\FilesystemTransport;
  5. use Michel\PQueue\Transport\TransportInterface;
  6. use Michel\PQueueBundle\HandlerResolver\SymfonyHandlerResolver;
  7. use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
  8. use Test\Michel\PQueue\Extra\TestMessage;
  9. use Test\Michel\PQueueBundle\Fixtures\MessageHandler\TestMessageHandler;
  10. use Test\Michel\PQueueBundle\Fixtures\TestKernel;
  11. class BundleIntegrationTest extends KernelTestCase
  12. {
  13. protected static function getKernelClass(): string
  14. {
  15. return TestKernel::class;
  16. }
  17. protected function setUp(): void
  18. {
  19. self::bootKernel();
  20. }
  21. public function testPQueueIsWired(): void
  22. {
  23. $container = self::getContainer();
  24. $transport = $container->get(TransportInterface::class);
  25. $this->assertInstanceOf(FilesystemTransport::class, $transport);
  26. $pqueueConsumer = $container->get(PQueueConsumer::class);
  27. $this->assertInstanceOf(PQueueConsumer::class, $pqueueConsumer);
  28. }
  29. public function testConfigIsWired()
  30. {
  31. $container = self::getContainer();
  32. $this->assertSame(FilesystemTransport::class, $container->getParameter('pqueue.transport.class'));
  33. $this->assertArrayHasKey('directory',$container->getParameter('pqueue.transport.options'));
  34. $this->assertIsArray($container->getParameter('pqueue.handlers.sources'));
  35. $this->assertNotEmpty($container->getParameter('pqueue.handlers.sources'));
  36. $this->assertNotEmpty($container->getParameter('pqueue.handlers.cache_dir'));
  37. $map = $container->getParameter('pqueue.handlers.map');
  38. $this->assertNotEmpty($map);
  39. $this->assertSame(TestMessageHandler::class,$map[TestMessage::class]);
  40. }
  41. public function testHandlerResolverCanSeeHandler(): void
  42. {
  43. $container = self::getContainer();
  44. $resolver = $container->get(SymfonyHandlerResolver::class);
  45. $this->assertTrue(
  46. $resolver->hasHandler(TestMessageHandler::class),
  47. 'SymfonyHandlerResolver should detect TestMessageHandler'
  48. );
  49. }
  50. public function testHandlerResolverReturnsCorrectHandler(): void
  51. {
  52. $container = self::getContainer();
  53. $resolver = $container->get(SymfonyHandlerResolver::class);
  54. $handler = $resolver->getHandler(TestMessageHandler::class);
  55. $this->assertInstanceOf(TestMessageHandler::class, $handler);
  56. }
  57. public function testHandlersAreRegisteredAsServices(): void
  58. {
  59. $container = self::getContainer();
  60. $this->assertTrue(
  61. $container->has(TestMessageHandler::class),
  62. 'TestMessageHandler should be registered as a service'
  63. );
  64. $handler = $container->get(TestMessageHandler::class);
  65. $this->assertInstanceOf(TestMessageHandler::class, $handler);
  66. $resolver = $container->get(\Michel\PQueueBundle\HandlerResolver\SymfonyHandlerResolver::class);
  67. $this->assertTrue(
  68. $resolver->hasHandler(TestMessageHandler::class),
  69. 'HandlerResolver must detect TestMessageHandler'
  70. );
  71. $resolved = $resolver->getHandler(TestMessageHandler::class);
  72. $this->assertInstanceOf(TestMessageHandler::class, $resolved);
  73. }
  74. }