From b9fda28235ce52dc3e79307d35604bfb5bf01336 Mon Sep 17 00:00:00 2001 From: "sagargurung1001@gmail.com" Date: Wed, 28 Dec 2022 14:47:53 +0545 Subject: [PATCH] Review address for separate functon --- tests/TestHelpers/GraphHelper.php | 22 +++++++++++++++++++ .../features/bootstrap/GraphContext.php | 18 ++++++--------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/tests/TestHelpers/GraphHelper.php b/tests/TestHelpers/GraphHelper.php index c80e5f8508..2fbf2c74aa 100644 --- a/tests/TestHelpers/GraphHelper.php +++ b/tests/TestHelpers/GraphHelper.php @@ -54,6 +54,28 @@ class GraphHelper { return (bool)preg_match($regex, $spaceId); } + /** + * Key name can consist of @@@ + * This function separate such key and return its actual value from actual drive response which can be used for assertion + * + * @param string $keyName + * @param array $actualDriveInformation + * + * @return string + */ + public static function separateAndGetValueForKey(string $keyName, array $actualDriveInformation): string { + // break the segment with @@@ to find the actual value from the actual drive infromation + $separatedKey = explode("@@@", $keyName); + // this stores the actual value of each key from drive information response used for assertion + $actualKeyValue = $actualDriveInformation; + + foreach ($separatedKey as $key) { + $actualKeyValue = $actualKeyValue[$key]; + } + + return $actualKeyValue; + } + /** * @param string $baseUrl * @param string $path diff --git a/tests/acceptance/features/bootstrap/GraphContext.php b/tests/acceptance/features/bootstrap/GraphContext.php index 80353269ea..92b857452f 100644 --- a/tests/acceptance/features/bootstrap/GraphContext.php +++ b/tests/acceptance/features/bootstrap/GraphContext.php @@ -1378,15 +1378,7 @@ class GraphContext implements Context { */ public function checkUserDriveInformation(array $expectedDriveInformation, array $actualDriveInformation):void { foreach (array_keys($expectedDriveInformation) as $keyName) { - // break the segment with @@@ to find the actual value from the drive infromation from response - $separatedKey = explode("@@@", $keyName); - // this stores the actual value of each key from drive information response used for assertion - $actualKeyValue = $actualDriveInformation; - - foreach ($separatedKey as $key) { - $actualKeyValue = $actualKeyValue[$key]; - } - + $actualKeyValue = GraphHelper::separateAndGetValueForKey($keyName, $actualDriveInformation); switch ($expectedDriveInformation[$keyName]) { case '%user_id%': Assert::assertTrue(GraphHelper::isUUIDv4($actualKeyValue), __METHOD__ . ' Expected user_id to have UUIDv4 pattern but found: ' . $actualKeyValue); @@ -1424,7 +1416,11 @@ class GraphContext implements Context { public function theResponseShouldContainTheFollowingDriveInformation(TableNode $table): void { $expectedDriveInformation = $table->getRowsHash(); // array of user drive information (Personal Drive Information Only) - $actualDriveInformation = $this->featureContext->getJsonDecodedResponse($this->featureContext->getResponse())['drive']; - $this->checkUserDriveInformation($expectedDriveInformation, $actualDriveInformation); + $actualDriveInformation = $this->featureContext->getJsonDecodedResponse($this->featureContext->getResponse()); + if (\is_array($actualDriveInformation) && \array_key_exists('drive', $actualDriveInformation)) { + $this->checkUserDriveInformation($expectedDriveInformation, $actualDriveInformation['drive']); + } else { + throw new Error('Response is not an array or the array does not consist key "drive"'); + } } }