diff --git a/tests/TarantoolStoreTest.php b/tests/TarantoolStoreTest.php index 13ccc41..081cf0b 100644 --- a/tests/TarantoolStoreTest.php +++ b/tests/TarantoolStoreTest.php @@ -11,6 +11,7 @@ use Tarantool\Client\Client; use Tarantool\Client\Exception\RequestFailed; use Tarantool\Client\Schema\Criteria; +use Tarantool\Client\Schema\Operations; use Tarantool\SymfonyLock\Cleaner; use Tarantool\SymfonyLock\SchemaManager; use Tarantool\SymfonyLock\TarantoolStore; @@ -275,4 +276,29 @@ public function testDefaultSchemaCreationIsDisabled() $store = new TarantoolStore($client); $store->save(new Key(uniqid(__METHOD__, true))); } + + public function testExpiredKeyOverwrite() + { + $resource = uniqid(__METHOD__, true); + $key1 = new Key($resource); + $key2 = new Key($resource); + + $store = $this->getStore(); + + $store->save($key1); + $this->assertTrue($store->exists($key1)); + $this->assertFalse($store->exists($key2)); + + $rows = $this->client->getSpace('lock')->select(Criteria::key([])); + $this->assertCount(1, $rows); + $this->client->getSpace('lock')->update([$rows[0][0]], Operations::set(2, microtime(true))); + + $this->assertFalse($store->exists($key1)); + $this->assertFalse($store->exists($key2)); + + $store->save($key2); + + $this->assertFalse($store->exists($key1)); + $this->assertTrue($store->exists($key2)); + } }