mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-09-01 20:43:49 +00:00
Add versioning to stored objects
This update introduces a versioning system to the stored objects in the ChillDocStoreBundle. The 'StoredObject' entity now includes several new methods, and maintains a collection of 'StoredObjectVersion' instances. Each time a 'StoredObject' is modified, a new version instance is created and added to the collection, ensuring a history of changes. Migration file for the addition of new database column included. Corresponding tests are also updated.
This commit is contained in:
@@ -25,18 +25,22 @@ class StoredObjectTest extends KernelTestCase
|
||||
{
|
||||
$storedObject = new StoredObject();
|
||||
$storedObject
|
||||
->setFilename('test_0')
|
||||
->setIv([2, 4, 6, 8])
|
||||
->setKeyInfos(['key' => ['data0' => 'data0']])
|
||||
->setType('text/html');
|
||||
->registerVersion(
|
||||
[2, 4, 6, 8],
|
||||
['key' => ['data0' => 'data0']],
|
||||
'text/html',
|
||||
'test_0',
|
||||
);
|
||||
|
||||
$storedObject->saveHistory();
|
||||
|
||||
$storedObject
|
||||
->setFilename('test_1')
|
||||
->setIv([8, 10, 12])
|
||||
->setKeyInfos(['key' => ['data1' => 'data1']])
|
||||
->setType('text/text');
|
||||
->registerVersion(
|
||||
[8, 10, 12],
|
||||
['key' => ['data1' => 'data1']],
|
||||
'text/text',
|
||||
'test_1',
|
||||
);
|
||||
|
||||
$storedObject->saveHistory();
|
||||
|
||||
@@ -50,4 +54,33 @@ class StoredObjectTest extends KernelTestCase
|
||||
self::assertEquals(['key' => ['data1' => 'data1']], $storedObject->getDatas()['history'][1]['key_infos']);
|
||||
self::assertEquals('text/text', $storedObject->getDatas()['history'][1]['type']);
|
||||
}
|
||||
|
||||
public function testRegisterVersion(): void
|
||||
{
|
||||
$object = new StoredObject();
|
||||
$firstVersion = $object->registerVersion(
|
||||
[5, 6, 7, 8],
|
||||
['key' => ['some key']],
|
||||
'text/html',
|
||||
);
|
||||
$version = $object->registerVersion(
|
||||
[1, 2, 3, 4],
|
||||
$k = ['key' => ['data0' => 'data0']],
|
||||
'text/text',
|
||||
'abcde',
|
||||
);
|
||||
|
||||
self::assertCount(2, $object->getVersions());
|
||||
self::assertEquals('abcde', $object->getFilename());
|
||||
self::assertEquals([1, 2, 3, 4], $object->getIv());
|
||||
self::assertEqualsCanonicalizing($k, $object->getKeyInfos());
|
||||
self::assertEquals('text/text', $object->getType());
|
||||
|
||||
self::assertEquals('abcde', $version->getFilename());
|
||||
self::assertEquals([1, 2, 3, 4], $version->getIv());
|
||||
self::assertEqualsCanonicalizing($k, $version->getKeyInfos());
|
||||
self::assertEquals('text/text', $version->getType());
|
||||
|
||||
self::assertNotSame($firstVersion, $version);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user