From ebe34fac55c8d365dda42b2602b66f7efe4f4d22 Mon Sep 17 00:00:00 2001 From: Yaroslav Krutikov Date: Thu, 25 Jul 2024 16:07:04 +0200 Subject: [PATCH] SUPESC-851 Fixed out of range issue for id_oms_state_machine_lock. (#10975) SUPESC-851 Fixed out of range issue for id_oms_state_machine_lock. --- .../Propel/Schema/spy_oms.schema.xml | 2 +- .../Oms/Business/Lock/TriggerLockerTest.php | 21 +++++++++++++++ .../Zed/Oms/_support/OmsBusinessTester.php | 26 +++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/src/Spryker/Zed/Oms/Persistence/Propel/Schema/spy_oms.schema.xml b/src/Spryker/Zed/Oms/Persistence/Propel/Schema/spy_oms.schema.xml index 44481d55..efc521a4 100644 --- a/src/Spryker/Zed/Oms/Persistence/Propel/Schema/spy_oms.schema.xml +++ b/src/Spryker/Zed/Oms/Persistence/Propel/Schema/spy_oms.schema.xml @@ -49,7 +49,7 @@ - + diff --git a/tests/SprykerTest/Zed/Oms/Business/Lock/TriggerLockerTest.php b/tests/SprykerTest/Zed/Oms/Business/Lock/TriggerLockerTest.php index 769d154f..432fb254 100644 --- a/tests/SprykerTest/Zed/Oms/Business/Lock/TriggerLockerTest.php +++ b/tests/SprykerTest/Zed/Oms/Business/Lock/TriggerLockerTest.php @@ -11,6 +11,7 @@ use DateInterval; use DateTime; use Orm\Zed\Oms\Persistence\SpyOmsStateMachineLock; +use Orm\Zed\Oms\Persistence\SpyOmsStateMachineLockQuery; use Spryker\Zed\Oms\Business\Exception\LockException; /** @@ -26,6 +27,11 @@ */ class TriggerLockerTest extends Unit { + /** + * @var int + */ + protected const INTEGER_OVERFLOW_VALUE = 2147483648; + /** * @var \SprykerTest\Zed\Oms\OmsBusinessTester */ @@ -118,4 +124,19 @@ public function testClearLocksWillRemoveAllLockEntries(): void $triggerLocker->clearLocks(); $this->tester->assertLockedEntityCount(0); } + + /** + * @return void + */ + public function testBigintLockIdIsSupported(): void + { + // Act + $this->tester->insertOmsStateMachineLockByIdUsingRawQuery(static::INTEGER_OVERFLOW_VALUE); + + $omsStateMachineLockQuery = new SpyOmsStateMachineLockQuery(); + $lockEntity = $omsStateMachineLockQuery->findOneByIdOmsStateMachineLock(static::INTEGER_OVERFLOW_VALUE); + + //Assert + $this->assertNotNull($lockEntity); + } } diff --git a/tests/SprykerTest/Zed/Oms/_support/OmsBusinessTester.php b/tests/SprykerTest/Zed/Oms/_support/OmsBusinessTester.php index caaca2bd..a3fc1161 100644 --- a/tests/SprykerTest/Zed/Oms/_support/OmsBusinessTester.php +++ b/tests/SprykerTest/Zed/Oms/_support/OmsBusinessTester.php @@ -20,12 +20,14 @@ use Generated\Shared\Transfer\OrderTransfer; use Generated\Shared\Transfer\QuoteTransfer; use Generated\Shared\Transfer\StoreTransfer; +use Orm\Zed\Oms\Persistence\Map\SpyOmsStateMachineLockTableMap; use Orm\Zed\Oms\Persistence\SpyOmsStateMachineLockQuery; use Orm\Zed\Sales\Persistence\SpySalesOrder; use Orm\Zed\Sales\Persistence\SpySalesOrderItem; use Orm\Zed\Sales\Persistence\SpySalesOrderQuery; use PHPUnit\Framework\ExpectationFailedException; use Propel\Runtime\Collection\ObjectCollection; +use Propel\Runtime\Propel; use ReflectionClass; use Spryker\Zed\MessageBroker\Communication\Plugin\MessageBroker\ValidationMiddlewarePlugin; use Spryker\Zed\MessageBroker\MessageBrokerDependencyProvider; @@ -80,6 +82,11 @@ class OmsBusinessTester extends Actor */ public const FAKE_SKU = 'FAKE_SKU'; + /** + * @var string + */ + protected const LOCKED_ENTITY_IDENTIFIER = '1'; + /** * @return void */ @@ -479,6 +486,25 @@ public function getOrderByIdSalesOrder(int $idSalesOrder): OrderTransfer ); } + /** + * @param int $identifier + * + * @return void + */ + public function insertOmsStateMachineLockByIdUsingRawQuery(int $identifier): void + { + $query = sprintf( + "INSERT INTO %s (id_oms_state_machine_lock, identifier, expires) VALUES (%d, '%s', '%s')", + SpyOmsStateMachineLockTableMap::TABLE_NAME, + $identifier, + static::LOCKED_ENTITY_IDENTIFIER, + '2025-01-01 00:00:00', + ); + + $connection = Propel::getConnection(); + $connection->query($query); + } + /** * @return \Spryker\Zed\Oms\Business\Reader\ProcessCacheReaderInterface */