Test sync of resource and room metadata
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
This commit is contained in:
parent
ca060a2a83
commit
31d6138f46
|
@ -26,6 +26,7 @@ use OCA\DAV\BackgroundJob\UpdateCalendarResourcesRoomsBackgroundJob;
|
|||
|
||||
use OCA\DAV\CalDAV\CalDavBackend;
|
||||
use OCP\Calendar\BackendTemporarilyUnavailableException;
|
||||
use OCP\Calendar\IMetadataProvider;
|
||||
use OCP\Calendar\Resource\IBackend;
|
||||
use OCP\Calendar\Resource\IManager as IResourceManager;
|
||||
use OCP\Calendar\Resource\IResource;
|
||||
|
@ -61,34 +62,38 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase {
|
|||
protected function tearDown() {
|
||||
$query = self::$realDatabase->getQueryBuilder();
|
||||
$query->delete('calendar_resources')->execute();
|
||||
$query->delete('calendar_resources_md')->execute();
|
||||
$query->delete('calendar_rooms')->execute();
|
||||
$query->delete('calendar_rooms_md')->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Data in Cache:
|
||||
* resources:
|
||||
* [backend1, res1, Beamer1, {}]
|
||||
* [backend1, res2, TV1, {}]
|
||||
* [backend2, res3, Beamer2, {}]
|
||||
* [backend2, res4, TV2, {}]
|
||||
* [backend3, res5, Beamer3, {}]
|
||||
* [backend3, res6, Pointer, {foo, bar}]
|
||||
* [backend1, res1, Beamer1, {}] - []
|
||||
* [backend1, res2, TV1, {}] - []
|
||||
* [backend2, res3, Beamer2, {}] - ['meta1' => 'value1', 'meta2' => 'value2']
|
||||
* [backend2, res4, TV2, {}] - ['meta1' => 'value1', 'meta3' => 'value3-old']
|
||||
* [backend3, res5, Beamer3, {}] - []
|
||||
* [backend3, res6, Pointer, {foo, bar}] - ['meta99' => 'value99']
|
||||
*
|
||||
* Data in Backend:
|
||||
* backend1 gone
|
||||
* backend2 throws BackendTemporarilyUnavailableException
|
||||
* [backend3, res6, Pointer123, {foo, biz}]
|
||||
* [backend3, res7, Resource4, {biz}]
|
||||
* [backend4, res8, Beamer, {}]
|
||||
* [backend4, res9, Beamer2, {}]
|
||||
* [backend3, res6, Pointer123, {foo, biz}] - ['meta99' => 'value99-new', 'meta123' => 'meta456']
|
||||
* [backend3, res7, Resource4, {biz}] - ['meta1' => 'value1']
|
||||
* [backend4, res8, Beamer, {}] - ['meta2' => 'value2']
|
||||
* [backend4, res9, Beamer2, {}] - []
|
||||
*
|
||||
* Expected after run:
|
||||
* [backend2, res3, Beamer2, {}]
|
||||
* [backend2, res4, TV2, {}]
|
||||
* [backend3, res6, Pointer123, {foo, biz}]
|
||||
* [backend3, res7, Resource4, {biz}]
|
||||
* [backend4, res8, Beamer, {}]
|
||||
* [backend4, res9, Beamer2, {}]
|
||||
* [backend1, res1, Beamer1, {}] - []
|
||||
* [backend1, res2, TV1, {}] - []
|
||||
* [backend2, res3, Beamer2, {}] - ['meta1' => 'value1', 'meta2' => 'value2']
|
||||
* [backend2, res4, TV2, {}] - ['meta1' => 'value1', 'meta3' => 'value3-old']
|
||||
* [backend3, res6, Pointer123, {foo, biz}] - ['meta99' => 'value99-new', 'meta123' => 'meta456']
|
||||
* [backend3, res7, Resource4, {biz}] - ['meta1' => 'value1']
|
||||
* [backend4, res8, Beamer, {}] - ['meta2' => 'value2']
|
||||
* [backend4, res9, Beamer2, {}] - []
|
||||
*/
|
||||
|
||||
public function testRun() {
|
||||
|
@ -98,9 +103,9 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase {
|
|||
$backend3 = $this->createMock(IBackend::class);
|
||||
$backend4 = $this->createMock(IBackend::class);
|
||||
|
||||
$res6 = $this->createMock(IResource::class);
|
||||
$res7 = $this->createMock(IResource::class);
|
||||
$res8 = $this->createMock(IResource::class);
|
||||
$res6 = $this->createMock([IResource::class, IMetadataProvider::class]);
|
||||
$res7 = $this->createMock([IResource::class, IMetadataProvider::class]);
|
||||
$res8 = $this->createMock([IResource::class, IMetadataProvider::class]);
|
||||
$res9 = $this->createMock(IResource::class);
|
||||
|
||||
$backend2->method('getBackendIdentifier')
|
||||
|
@ -136,17 +141,51 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase {
|
|||
$res6->method('getEMail')->will($this->returnValue('res6@foo.bar'));
|
||||
$res6->method('getBackend')->will($this->returnValue($backend3));
|
||||
|
||||
$res6->method('getAllAvailableMetadataKeys')->will($this->returnValue(['meta99', 'meta123']));
|
||||
$res6->method('getMetadataForKey')->will($this->returnCallback(function($key) {
|
||||
switch($key) {
|
||||
case 'meta99':
|
||||
return 'value99-new';
|
||||
|
||||
case 'meta123':
|
||||
return 'meta456';
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}));
|
||||
|
||||
$res7->method('getId')->will($this->returnValue('res7'));
|
||||
$res7->method('getDisplayName')->will($this->returnValue('Resource4'));
|
||||
$res7->method('getGroupRestrictions')->will($this->returnValue(['biz']));
|
||||
$res7->method('getEMail')->will($this->returnValue('res7@foo.bar'));
|
||||
$res7->method('getBackend')->will($this->returnValue($backend3));
|
||||
$res7->method('getAllAvailableMetadataKeys')->will($this->returnValue(['meta1']));
|
||||
$res7->method('getMetadataForKey')->will($this->returnCallback(function($key) {
|
||||
switch($key) {
|
||||
case 'meta1':
|
||||
return 'value1';
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}));
|
||||
|
||||
$res8->method('getId')->will($this->returnValue('res8'));
|
||||
$res8->method('getDisplayName')->will($this->returnValue('Beamer'));
|
||||
$res8->method('getGroupRestrictions')->will($this->returnValue([]));
|
||||
$res8->method('getEMail')->will($this->returnValue('res8@foo.bar'));
|
||||
$res8->method('getBackend')->will($this->returnValue($backend4));
|
||||
$res8->method('getAllAvailableMetadataKeys')->will($this->returnValue(['meta2']));
|
||||
$res8->method('getMetadataForKey')->will($this->returnCallback(function($key) {
|
||||
switch($key) {
|
||||
case 'meta2':
|
||||
return 'value2';
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}));
|
||||
|
||||
$res9->method('getId')->will($this->returnValue('res9'));
|
||||
$res9->method('getDisplayName')->will($this->returnValue('Beamer2'));
|
||||
|
@ -173,13 +212,29 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase {
|
|||
$query->select('*')->from('calendar_resources');
|
||||
|
||||
$rows = [];
|
||||
$ids = [];
|
||||
$stmt = $query->execute();
|
||||
while($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
|
||||
$ids[$row['backend_id'] . '::' . $row['resource_id']] = $row['id'];
|
||||
unset($row['id']);
|
||||
$rows[] = $row;
|
||||
}
|
||||
|
||||
$this->assertEquals([
|
||||
[
|
||||
'backend_id' => 'backend1',
|
||||
'resource_id' => 'res1',
|
||||
'displayname' => 'Beamer1',
|
||||
'email' => 'res1@foo.bar',
|
||||
'group_restrictions' => '[]',
|
||||
],
|
||||
[
|
||||
'backend_id' => 'backend1',
|
||||
'resource_id' => 'res2',
|
||||
'displayname' => 'TV1',
|
||||
'email' => 'res2@foo.bar',
|
||||
'group_restrictions' => '[]',
|
||||
],
|
||||
[
|
||||
'backend_id' => 'backend2',
|
||||
'resource_id' => 'res3',
|
||||
|
@ -223,6 +278,59 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase {
|
|||
'group_restrictions' => '[]',
|
||||
],
|
||||
], $rows);
|
||||
|
||||
$query2 = self::$realDatabase->getQueryBuilder();
|
||||
$query2->select('*')->from('calendar_resources_md');
|
||||
|
||||
$rows2 = [];
|
||||
$stmt = $query2->execute();
|
||||
while($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
|
||||
unset($row['id']);
|
||||
$rows2[] = $row;
|
||||
}
|
||||
|
||||
$this->assertEquals([
|
||||
[
|
||||
'resource_id' => $ids['backend2::res3'],
|
||||
'key' => 'meta1',
|
||||
'value' => 'value1',
|
||||
],
|
||||
[
|
||||
'resource_id' => $ids['backend2::res3'],
|
||||
'key' => 'meta2',
|
||||
'value' => 'value2',
|
||||
],
|
||||
[
|
||||
'resource_id' => $ids['backend2::res4'],
|
||||
'key' => 'meta1',
|
||||
'value' => 'value1',
|
||||
],
|
||||
[
|
||||
'resource_id' => $ids['backend2::res4'],
|
||||
'key' => 'meta3',
|
||||
'value' => 'value3-old',
|
||||
],
|
||||
[
|
||||
'resource_id' => $ids['backend3::res6'],
|
||||
'key' => 'meta99',
|
||||
'value' => 'value99-new',
|
||||
],
|
||||
[
|
||||
'resource_id' => $ids['backend3::res7'],
|
||||
'key' => 'meta1',
|
||||
'value' => 'value1',
|
||||
],
|
||||
[
|
||||
'resource_id' => $ids['backend3::res6'],
|
||||
'key' => 'meta123',
|
||||
'value' => 'meta456',
|
||||
],
|
||||
[
|
||||
'resource_id' => $ids['backend4::res8'],
|
||||
'key' => 'meta2',
|
||||
'value' => 'value2',
|
||||
]
|
||||
], $rows2);
|
||||
}
|
||||
|
||||
protected function createTestResourcesInCache() {
|
||||
|
@ -236,6 +344,7 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase {
|
|||
'group_restrictions' => $query->createNamedParameter('[]'),
|
||||
])
|
||||
->execute();
|
||||
|
||||
$query->insert('calendar_resources')
|
||||
->values([
|
||||
'backend_id' => $query->createNamedParameter('backend1'),
|
||||
|
@ -245,6 +354,7 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase {
|
|||
'group_restrictions' => $query->createNamedParameter('[]'),
|
||||
])
|
||||
->execute();
|
||||
|
||||
$query->insert('calendar_resources')
|
||||
->values([
|
||||
'backend_id' => $query->createNamedParameter('backend2'),
|
||||
|
@ -254,6 +364,8 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase {
|
|||
'group_restrictions' => $query->createNamedParameter('[]'),
|
||||
])
|
||||
->execute();
|
||||
$id3 = $query->getLastInsertId();
|
||||
|
||||
$query->insert('calendar_resources')
|
||||
->values([
|
||||
'backend_id' => $query->createNamedParameter('backend2'),
|
||||
|
@ -263,6 +375,8 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase {
|
|||
'group_restrictions' => $query->createNamedParameter('[]'),
|
||||
])
|
||||
->execute();
|
||||
$id4 = $query->getLastInsertId();
|
||||
|
||||
$query->insert('calendar_resources')
|
||||
->values([
|
||||
'backend_id' => $query->createNamedParameter('backend3'),
|
||||
|
@ -272,6 +386,7 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase {
|
|||
'group_restrictions' => $query->createNamedParameter('[]'),
|
||||
])
|
||||
->execute();
|
||||
|
||||
$query->insert('calendar_resources')
|
||||
->values([
|
||||
'backend_id' => $query->createNamedParameter('backend3'),
|
||||
|
@ -281,5 +396,42 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase {
|
|||
'group_restrictions' => $query->createNamedParameter('["foo", "bar"]'),
|
||||
])
|
||||
->execute();
|
||||
$id6 = $query->getLastInsertId();
|
||||
|
||||
$query->insert('calendar_resources_md')
|
||||
->values([
|
||||
'resource_id' => $query->createNamedParameter($id3),
|
||||
'key' => $query->createNamedParameter('meta1'),
|
||||
'value' => $query->createNamedParameter('value1')
|
||||
])
|
||||
->execute();
|
||||
$query->insert('calendar_resources_md')
|
||||
->values([
|
||||
'resource_id' => $query->createNamedParameter($id3),
|
||||
'key' => $query->createNamedParameter('meta2'),
|
||||
'value' => $query->createNamedParameter('value2')
|
||||
])
|
||||
->execute();
|
||||
$query->insert('calendar_resources_md')
|
||||
->values([
|
||||
'resource_id' => $query->createNamedParameter($id4),
|
||||
'key' => $query->createNamedParameter('meta1'),
|
||||
'value' => $query->createNamedParameter('value1')
|
||||
])
|
||||
->execute();
|
||||
$query->insert('calendar_resources_md')
|
||||
->values([
|
||||
'resource_id' => $query->createNamedParameter($id4),
|
||||
'key' => $query->createNamedParameter('meta3'),
|
||||
'value' => $query->createNamedParameter('value3-old')
|
||||
])
|
||||
->execute();
|
||||
$query->insert('calendar_resources_md')
|
||||
->values([
|
||||
'resource_id' => $query->createNamedParameter($id6),
|
||||
'key' => $query->createNamedParameter('meta99'),
|
||||
'value' => $query->createNamedParameter('value99')
|
||||
])
|
||||
->execute();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue