LockTest.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\MessageQueue\Test\Unit\Model\ResourceModel;
  7. use Magento\Framework\App\ResourceConnection;
  8. use Magento\Framework\DB\Adapter\AdapterInterface;
  9. use Magento\Framework\Stdlib\DateTime\DateTime;
  10. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  11. use Magento\MessageQueue\Model\LockFactory;
  12. use Magento\MessageQueue\Model\ResourceModel\Lock as LockResourceModel;
  13. /**
  14. * Unit tests for lock resource model
  15. */
  16. class LockTest extends \PHPUnit\Framework\TestCase
  17. {
  18. /** @var ObjectManager */
  19. private $objectManager;
  20. /**
  21. * @var LockResourceModel
  22. */
  23. private $lockResourceModel;
  24. /**
  25. * @var DateTime|\PHPUnit_Framework_MockObject_MockObject
  26. */
  27. private $dateTimeMock;
  28. /**
  29. * @var LockFactory|\PHPUnit_Framework_MockObject_MockObject
  30. */
  31. private $lockFactoryMock;
  32. /**
  33. * @var ResourceConnection|\PHPUnit_Framework_MockObject_MockObject
  34. */
  35. private $resourceConnectionMock;
  36. /**
  37. * {@inheritdoc}
  38. */
  39. protected function setUp()
  40. {
  41. $this->objectManager = new ObjectManager($this);
  42. $this->dateTimeMock = $this->getMockBuilder(DateTime::class)->disableOriginalConstructor()->getMock();
  43. $this->lockFactoryMock = $this->getMockBuilder(LockFactory::class)->disableOriginalConstructor()->getMock();
  44. $this->resourceConnectionMock = $this->getMockBuilder(ResourceConnection::class)
  45. ->disableOriginalConstructor()
  46. ->getMock();
  47. $this->lockResourceModel = $this->objectManager->getObject(
  48. LockResourceModel::class,
  49. [
  50. 'resources' => $this->resourceConnectionMock,
  51. 'dateTime' => $this->dateTimeMock,
  52. 'lockFactory' => $this->lockFactoryMock,
  53. ]
  54. );
  55. parent::setUp();
  56. }
  57. public function testReleaseOutdatedLocks()
  58. {
  59. /** @var \Magento\Framework\DB\Adapter\AdapterInterface|\PHPUnit_Framework_MockObject_MockObject $adapterMock */
  60. $adapterMock = $this->getMockBuilder(AdapterInterface::class)->disableOriginalConstructor()->getMock();
  61. $this->resourceConnectionMock->expects($this->once())->method('getConnection')->willReturn($adapterMock);
  62. $tableName = 'queue_lock_mock';
  63. $this->resourceConnectionMock->expects($this->once())->method('getTableName')->willReturn($tableName);
  64. $this->dateTimeMock->expects($this->once())->method('gmtTimestamp')->willReturn(1000000000);
  65. /** Date for timestamp 1000000000 + 86400 */
  66. $date = new \DateTime('2001-09-09T18:46:40-0700');
  67. $adapterMock->expects($this->once())->method('delete')->with($tableName, ['created_at <= ?' => $date]);
  68. $this->lockResourceModel->releaseOutdatedLocks();
  69. }
  70. }