From 2f08ec0926dc3793d1dea8c002b14595008a2a87 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Thu, 15 Sep 2022 18:43:53 +0000 Subject: [PATCH] Convert Document $collectionId in 0.15 response Document $collection was renamed to $collectionId to match the naming convention of referring to other resource IDs. This ensures backwards compatibility. --- src/Appwrite/Utopia/Response/Filters/V15.php | 28 +++++++++++++------ .../unit/Utopia/Response/Filters/V15Test.php | 25 +++++++++++++++++ 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/src/Appwrite/Utopia/Response/Filters/V15.php b/src/Appwrite/Utopia/Response/Filters/V15.php index a859c6c52..a74f0f32a 100644 --- a/src/Appwrite/Utopia/Response/Filters/V15.php +++ b/src/Appwrite/Utopia/Response/Filters/V15.php @@ -91,20 +91,17 @@ class V15 extends Filter $parsedResponse[$listKey] = array_map(fn ($content) => $this->parseCreatedAtUpdatedAt($content), $parsedResponse[$listKey]); break; case Response::MODEL_DOCUMENT: + $parsedResponse = $this->parseDocument($parsedResponse); + break; case Response::MODEL_FILE: $parsedResponse = $this->parsePermissionsCreatedAtUpdatedAt($parsedResponse); break; case Response::MODEL_DOCUMENT_LIST: + $listKey = 'documents'; + $parsedResponse[$listKey] = array_map(fn ($content) => $this->parseDocument($content), $parsedResponse[$listKey]); + break; case Response::MODEL_FILE_LIST: - $listKey = ''; - switch ($model) { - case Response::MODEL_DOCUMENT_LIST: - $listKey = 'documents'; - break; - case Response::MODEL_FILE_LIST: - $listKey = 'files'; - break; - } + $listKey = 'files'; $parsedResponse[$listKey] = array_map(fn ($content) => $this->parsePermissionsCreatedAtUpdatedAt($content), $parsedResponse[$listKey]); break; case Response::MODEL_EXECUTION: @@ -318,6 +315,19 @@ class V15 extends Filter return $content; } + protected function parseDocument(array $content) + { + if (isset($content['$collectionId'])) { + $content['$collection'] = $content['$collectionId']; + unset($content['$collectionId']); + } + + unset($content['$databaseId']); + + $content = $this->parsePermissionsCreatedAtUpdatedAt($content); + return $content; + } + private function parseExecution($content) { unset($content['stdout']); diff --git a/tests/unit/Utopia/Response/Filters/V15Test.php b/tests/unit/Utopia/Response/Filters/V15Test.php index 76b8b20b5..ce7870483 100644 --- a/tests/unit/Utopia/Response/Filters/V15Test.php +++ b/tests/unit/Utopia/Response/Filters/V15Test.php @@ -502,9 +502,34 @@ class V15Test extends TestCase $this->assertEquals($expected, $result); } + public function documentProvider(): array + { + return [ + 'basic document' => [ + [ + '$id' => '5e5ea5c16897e', + '$collectionId' => '5e5ea5c15117e', + '$databaseId' => '5e5ea5c15117e', + '$createdAt' => '2020-06-24T06:47:30.000Z', + '$updatedAt' => '2020-06-24T06:47:30.000Z', + '$permissions' => [Permission::read(Role::any())] + ], + [ + '$id' => '5e5ea5c16897e', + '$collection' => '5e5ea5c15117e', + '$createdAt' => 1592981250, + '$updatedAt' => 1592981250, + '$read' => ['role:all'], + '$write' => [], + ], + ], + ]; + } + /** * @dataProvider createdAtUpdatedAtProvider * @dataProvider permissionsProvider + * @dataProvider documentProvider */ public function testDocument(array $content, array $expected): void {