Change key-value table

- Make "k" as primary key
- Added "updated_at"
This commit is contained in:
Philipp 2022-12-29 22:36:08 +01:00
parent f944a2a620
commit 7c4c409060
No known key found for this signature in database
GPG key ID: 24A7501396EB5432
5 changed files with 68 additions and 21 deletions

View file

@ -24,6 +24,7 @@ namespace Friendica\Test\src\Core\KeyValueStorage;
use Friendica\Core\Config\ValueObject\Cache;
use Friendica\Core\KeyValueStorage\Capabilities\ICanManageKeyValuePairs;
use Friendica\Core\KeyValueStorage\Type\DBKeyValueStorage;
use Friendica\Database\Database;
use Friendica\Database\Definition\DbaDefinition;
use Friendica\Database\Definition\ViewDefinition;
use Friendica\Test\DatabaseTestTrait;
@ -35,6 +36,9 @@ class DBKeyValueStorageTest extends KeyValueStorageTest
{
use DatabaseTestTrait;
/** @var Database */
protected $database;
protected function setUp(): void
{
parent::setUp();
@ -56,9 +60,37 @@ class DBKeyValueStorageTest extends KeyValueStorageTest
$basePath = new BasePath(dirname(__FILE__, 5), $_SERVER);
$database = new StaticDatabase($cache, new Profiler($cache), (new DbaDefinition($basePath->getPath()))->load(), (new ViewDefinition($basePath->getPath()))->load());
$database->setTestmode(true);
$this->database = new StaticDatabase($cache, new Profiler($cache), (new DbaDefinition($basePath->getPath()))->load(), (new ViewDefinition($basePath->getPath()))->load());
$this->database->setTestmode(true);
return new DBKeyValueStorage($database);
return new DBKeyValueStorage($this->database);
}
/** @dataProvider dataTests */
public function testUpdatedAt($k, $v)
{
$instance = $this->getInstance();
$instance->set($k, $v);
self::assertEquals($v, $instance->get($k));
self::assertEquals($v, $instance[$k]);
$entry = $this->database->selectFirst(DBKeyValueStorage::DB_KEY_VALUE_TABLE, ['updated_at'], ['k' => $k]);
self::assertNotEmpty($entry);
$updateAt = $entry['updated_at'];
$instance->set($k, 'another_value');
self::assertEquals('another_value', $instance->get($k));
self::assertEquals('another_value', $instance[$k]);
$entry = $this->database->selectFirst(DBKeyValueStorage::DB_KEY_VALUE_TABLE, ['updated_at'], ['k' => $k]);
self::assertNotEmpty($entry);
$updateAtAfter = $entry['updated_at'];
self::assertLessThanOrEqual($updateAt, $updateAtAfter);
}
}