diff --git a/.gitignore b/.gitignore index 2c5e26e2..98d8c720 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,4 @@ flagship /src/Api/HIT_LOG /.phpunit.cache demo-test.php -docker-compose.demo.yml \ No newline at end of file +docker-compose.demo.yml diff --git a/.vscode/settings.json b/.vscode/settings.json index 2af03ac8..ce6abab7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,11 @@ { - "php.version": "8.1" -} \ No newline at end of file + "php.version": "8.1", + "phpcs.executablePath": "./vendor/bin/phpcs", + "phpcs.standard": "PSR12", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll": "always" + }, + "php-cs-fixer.executablePath": "./vendor/bin/php-cs-fixer", + "php-cs-fixer.onsave": true, +} diff --git a/composer.json b/composer.json index cbbec3fc..a49799a4 100644 --- a/composer.json +++ b/composer.json @@ -33,6 +33,6 @@ "scripts": { "test": "phpunit", "check-style": "phpcs --standard=PSR12 -n src tests", - "fix-style": "phpcbf --standard=PSR12 src tests" + "fix-style": "phpcbf --standard=phpcs.xml src tests" } } diff --git a/composer.lock b/composer.lock index b8a49bbb..c0719d09 100644 --- a/composer.lock +++ b/composer.lock @@ -1741,16 +1741,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.10.1", + "version": "3.10.2", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877" + "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/8f90f7a53ce271935282967f53d0894f8f1ff877", - "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/86e5f5dd9a840c46810ebe5ff1885581c42a3017", + "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017", "shasum": "" }, "require": { @@ -1817,7 +1817,7 @@ "type": "open_collective" } ], - "time": "2024-05-22T21:24:41+00:00" + "time": "2024-07-21T23:26:44+00:00" }, { "name": "theseer/tokenizer", diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 00000000..f6d98641 --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,62 @@ + + + PHP CodeSniffer configuration for the Flagship SDK project. + + + + + + src + tests + + + vendor + + + + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Api/BatchingCachingStrategyAbstract.php b/src/Api/BatchingCachingStrategyAbstract.php index e7ed794a..47ed18ee 100644 --- a/src/Api/BatchingCachingStrategyAbstract.php +++ b/src/Api/BatchingCachingStrategyAbstract.php @@ -164,10 +164,10 @@ public function hydrateActivatePoolQueue($key, Activate $hit): void public function getActivateHeaders(): array { return [ - FlagshipConstant::HEADER_X_API_KEY => $this->config->getApiKey(), + FlagshipConstant::HEADER_X_API_KEY => $this->config->getApiKey(), FlagshipConstant::HEADER_X_SDK_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON, - FlagshipConstant::HEADER_X_SDK_CLIENT => FlagshipConstant::SDK_LANGUAGE, + FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON, + FlagshipConstant::HEADER_X_SDK_CLIENT => FlagshipConstant::SDK_LANGUAGE, ]; } @@ -298,15 +298,9 @@ protected function onVisitorExposed(Activate $activate): void } } - /** - * @return void - */ - protected function sendActivateHit(): void + protected function sendActivateHitBatch(ActivateBatch $activateBatch) { $headers = $this->getActivateHeaders(); - - $activateBatch = new ActivateBatch($this->config, $this->activatePoolQueue); - $requestBody = $activateBatch->toApiKeys(); $url = FlagshipConstant::BASE_API_URL . '/' . FlagshipConstant::URL_ACTIVATE_MODIFICATION; $now = $this->getNow(); @@ -323,7 +317,8 @@ protected function sendActivateHit(): void FlagshipConstant::HIT_SENT_SUCCESS, [ FlagshipConstant::SEND_ACTIVATE, - $this->getLogFormat(null, $url, $requestBody, $headers, $this->getNow() - $now)] + $this->getLogFormat(null, $url, $requestBody, $headers, $this->getNow() - $now), + ] ); $hitKeysToRemove = []; @@ -342,30 +337,53 @@ protected function sendActivateHit(): void $this->cacheHit($this->activatePoolQueue); $troubleshooting = new Troubleshooting(); $troubleshooting->setLabel(TroubleshootingLabel::SEND_ACTIVATE_HIT_ROUTE_ERROR) - ->setLogLevel(LogLevel::ERROR) - ->setVisitorId($this->flagshipInstanceId) - ->setFlagshipInstanceId($this->flagshipInstanceId) - ->setTraffic(100) - ->setConfig($this->config) ->setHttpRequestBody($requestBody) ->setHttpRequestHeaders($headers) ->setHttpRequestMethod("POST") ->setHttpRequestUrl($url) ->setHttpResponseBody($exception->getMessage()) ->setHttpResponseTime($this->getNow() - $now) - ; + ->setFlagshipInstanceId($this->flagshipInstanceId) + ->setLogLevel(LogLevel::ERROR) + ->setTraffic(100)->setConfig($this->config) + ->setVisitorId($this->flagshipInstanceId); + $this->addTroubleshootingHit($troubleshooting); $this->sendTroubleshootingQueue(); $this->logErrorSprintf( $this->config, FlagshipConstant::TRACKING_MANAGER, FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, - [FlagshipConstant::SEND_ACTIVATE, - $this->getLogFormat($exception->getMessage(), $url, $requestBody, $headers, $this->getNow() - $now)] + [ + FlagshipConstant::SEND_ACTIVATE, + $this->getLogFormat($exception->getMessage(), $url, $requestBody, $headers, $this->getNow() - $now), + ] ); } } + /** + * @return void + */ + protected function sendActivateHit(): void + { + $filteredItems = array_filter($this->activatePoolQueue, function ($item) { + return $this->getNow() - $item->getCreatedAt() < FlagshipConstant::DEFAULT_HIT_CACHE_TIME_MS; + }); + + + if (empty($filteredItems)) { + return; + } + + $batches = array_chunk($filteredItems, FlagshipConstant::MAX_ACTIVATE_HIT_PER_BATCH); + + foreach ($batches as $batch) { + $activateBatch = new ActivateBatch($this->config, $batch); + $this->sendActivateHitBatch($activateBatch); + } + } + /** * @param string $visitorId * @return string [] @@ -440,7 +458,7 @@ public function sendBatch(): void } $header = [ - FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON + FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON, ]; $requestBody = $batchHit->toApiKeys(); @@ -458,7 +476,8 @@ public function sendBatch(): void FlagshipConstant::HIT_SENT_SUCCESS, [ FlagshipConstant::SEND_BATCH, - $this->getLogFormat(null, $url, $requestBody, $header, $this->getNow() - $now)] + $this->getLogFormat(null, $url, $requestBody, $header, $this->getNow() - $now), + ] ); $this->hitsPoolQueue = []; @@ -470,25 +489,25 @@ public function sendBatch(): void $troubleshooting = new Troubleshooting(); $troubleshooting->setLabel(TroubleshootingLabel::SEND_BATCH_HIT_ROUTE_RESPONSE_ERROR) ->setLogLevel(LogLevel::ERROR) - ->setVisitorId($this->flagshipInstanceId) ->setFlagshipInstanceId($this->flagshipInstanceId) - ->setTraffic(100) - ->setConfig($this->config) ->setHttpRequestBody($requestBody) ->setHttpRequestHeaders($header) ->setHttpRequestMethod("POST") ->setHttpRequestUrl($url) ->setHttpResponseBody($exception->getMessage()) ->setHttpResponseTime($this->getNow() - $now) - ; + ->setTraffic(100)->setConfig($this->config) + ->setVisitorId($this->flagshipInstanceId); $this->addTroubleshootingHit($troubleshooting); $this->sendTroubleshootingQueue(); $this->logErrorSprintf( $this->config, FlagshipConstant::TRACKING_MANAGER, FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, - [FlagshipConstant::SEND_BATCH, - $this->getLogFormat($exception->getMessage(), $url, $requestBody, $header, $this->getNow() - $now)] + [ + FlagshipConstant::SEND_BATCH, + $this->getLogFormat($exception->getMessage(), $url, $requestBody, $header, $this->getNow() - $now), + ] ); } } @@ -510,13 +529,13 @@ public function cacheHit(array $hits): void foreach ($hits as $hit) { $hitData = [ HitCacheFields::VERSION => 1, - HitCacheFields::DATA => [ - HitCacheFields::VISITOR_ID => $hit->getVisitorId(), + HitCacheFields::DATA => [ + HitCacheFields::VISITOR_ID => $hit->getVisitorId(), HitCacheFields::ANONYMOUS_ID => $hit->getAnonymousId(), - HitCacheFields::TYPE => $hit->getType(), - HitCacheFields::CONTENT => $hit->toArray(), - HitCacheFields::TIME => $this->getNow() - ] + HitCacheFields::TYPE => $hit->getType(), + HitCacheFields::CONTENT => $hit->toArray(), + HitCacheFields::TIME => $this->getNow(), + ], ]; $data[$hit->getKey()] = $hitData; @@ -535,7 +554,10 @@ public function cacheHit(array $hits): void $this->config, FlagshipConstant::PROCESS_CACHE, FlagshipConstant::HIT_CACHE_ERROR, - ["cacheHit", $exception->getMessage()] + [ + "cacheHit", + $exception->getMessage(), + ] ); } } @@ -564,7 +586,10 @@ public function flushHits(array $hitKeys): void $this->config, FlagshipConstant::PROCESS_CACHE, FlagshipConstant::HIT_CACHE_ERROR, - ["flushHits", $exception->getMessage()] + [ + "flushHits", + $exception->getMessage(), + ] ); } } @@ -586,7 +611,10 @@ public function flushAllHits(): void $this->config, FlagshipConstant::PROCESS_CACHE, FlagshipConstant::HIT_CACHE_ERROR, - ["flushAllHits", $exception->getMessage()] + [ + "flushAllHits", + $exception->getMessage(), + ] ); } } @@ -656,8 +684,10 @@ protected function sendTroubleshooting(Troubleshooting $hit): void $this->config, FlagshipConstant::SEND_TROUBLESHOOTING, FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, - [FlagshipConstant::SEND_TROUBLESHOOTING, - $this->getLogFormat($exception->getMessage(), $url, $requestBody, [], $this->getNow() - $now)] + [ + FlagshipConstant::SEND_TROUBLESHOOTING, + $this->getLogFormat($exception->getMessage(), $url, $requestBody, [], $this->getNow() - $now), + ] ); } } @@ -703,8 +733,10 @@ public function sendUsageHit(UsageHit $hit): void $this->config, FlagshipConstant::SEND_USAGE_HIT, FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, - [FlagshipConstant::SEND_USAGE_HIT, - $this->getLogFormat($exception->getMessage(), $url, $requestBody, [], $this->getNow() - $now)] + [ + FlagshipConstant::SEND_USAGE_HIT, + $this->getLogFormat($exception->getMessage(), $url, $requestBody, [], $this->getNow() - $now), + ] ); } } diff --git a/src/Api/NoBatchingContinuousCachingStrategy.php b/src/Api/NoBatchingContinuousCachingStrategy.php index 6ee3e1c1..2eec3226 100644 --- a/src/Api/NoBatchingContinuousCachingStrategy.php +++ b/src/Api/NoBatchingContinuousCachingStrategy.php @@ -51,8 +51,8 @@ protected function onError(HitAbstract $hit): void protected function sendHit(HitAbstract $hit): void { $header = [ - FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON - ]; + FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON, + ]; $requestBody = $hit->toApiKeys(); $now = $this->getNow(); @@ -68,8 +68,9 @@ protected function sendHit(HitAbstract $hit): void FlagshipConstant::TRACKING_MANAGER, FlagshipConstant::HIT_SENT_SUCCESS, [ - FlagshipConstant::SEND_HIT, - $this->getLogFormat(null, $url, $requestBody, $header, $this->getNow() - $now)] + FlagshipConstant::SEND_HIT, + $this->getLogFormat(null, $url, $requestBody, $header, $this->getNow() - $now), + ] ); } catch (Exception $exception) { $this->onError($hit); @@ -77,23 +78,13 @@ protected function sendHit(HitAbstract $hit): void $this->config, FlagshipConstant::TRACKING_MANAGER, FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, - [FlagshipConstant::SEND_HIT, - $this->getLogFormat($exception->getMessage(), $url, $requestBody, $header, $this->getNow() - $now)] + [ + FlagshipConstant::SEND_HIT, + $this->getLogFormat($exception->getMessage(), $url, $requestBody, $header, $this->getNow() - $now), + ] ); $troubleshooting = new Troubleshooting(); - $troubleshooting->setLabel(TroubleshootingLabel::SEND_HIT_ROUTE_ERROR) - ->setLogLevel(LogLevel::ERROR) - ->setVisitorId($this->flagshipInstanceId) - ->setFlagshipInstanceId($this->flagshipInstanceId) - ->setTraffic(100) - ->setConfig($this->config) - ->setHttpRequestBody($requestBody) - ->setHttpRequestHeaders($header) - ->setHttpRequestMethod("POST") - ->setHttpRequestUrl($url) - ->setHttpResponseBody($exception->getMessage()) - ->setHttpResponseTime($this->getNow() - $now) - ; + $troubleshooting->setLabel(TroubleshootingLabel::SEND_HIT_ROUTE_ERROR)->setLogLevel(LogLevel::ERROR)->setVisitorId($this->flagshipInstanceId)->setFlagshipInstanceId($this->flagshipInstanceId)->setTraffic(100)->setConfig($this->config)->setHttpRequestBody($requestBody)->setHttpRequestHeaders($header)->setHttpRequestMethod("POST")->setHttpRequestUrl($url)->setHttpResponseBody($exception->getMessage())->setHttpResponseTime($this->getNow() - $now); $this->addTroubleshootingHit($troubleshooting); $this->sendTroubleshootingQueue(); } @@ -126,8 +117,9 @@ public function activateFlag(Activate $hit): void FlagshipConstant::TRACKING_MANAGER, FlagshipConstant::HIT_SENT_SUCCESS, [ - FlagshipConstant::SEND_ACTIVATE, - $this->getLogFormat(null, $url, $requestBody, $headers, $this->getNow() - $now)] + FlagshipConstant::SEND_ACTIVATE, + $this->getLogFormat(null, $url, $requestBody, $headers, $this->getNow() - $now), + ] ); } catch (Exception $exception) { $this->onError($hit); @@ -135,24 +127,14 @@ public function activateFlag(Activate $hit): void $this->config, FlagshipConstant::TRACKING_MANAGER, FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, - [FlagshipConstant::SEND_ACTIVATE, - $this->getLogFormat($exception->getMessage(), $url, $requestBody, $headers, $this->getNow() - $now)] + [ + FlagshipConstant::SEND_ACTIVATE, + $this->getLogFormat($exception->getMessage(), $url, $requestBody, $headers, $this->getNow() - $now), + ] ); $troubleshooting = new Troubleshooting(); - $troubleshooting->setLabel(TroubleshootingLabel::SEND_ACTIVATE_HIT_ROUTE_ERROR) - ->setLogLevel(LogLevel::ERROR) - ->setVisitorId($this->flagshipInstanceId) - ->setFlagshipInstanceId($this->flagshipInstanceId) - ->setTraffic(100) - ->setConfig($this->config) - ->setHttpRequestBody($requestBody) - ->setHttpRequestHeaders($headers) - ->setHttpRequestMethod("POST") - ->setHttpRequestUrl($url) - ->setHttpResponseBody($exception->getMessage()) - ->setHttpResponseTime($this->getNow() - $now) - ; + $troubleshooting->setLabel(TroubleshootingLabel::SEND_ACTIVATE_HIT_ROUTE_ERROR)->setLogLevel(LogLevel::ERROR)->setVisitorId($this->flagshipInstanceId)->setFlagshipInstanceId($this->flagshipInstanceId)->setTraffic(100)->setConfig($this->config)->setHttpRequestBody($requestBody)->setHttpRequestHeaders($headers)->setHttpRequestMethod("POST")->setHttpRequestUrl($url)->setHttpResponseBody($exception->getMessage())->setHttpResponseTime($this->getNow() - $now); $this->addTroubleshootingHit($troubleshooting); $this->sendTroubleshootingQueue(); } diff --git a/src/Api/TrackingManagerAbstract.php b/src/Api/TrackingManagerAbstract.php index e15a080a..c8385cc3 100644 --- a/src/Api/TrackingManagerAbstract.php +++ b/src/Api/TrackingManagerAbstract.php @@ -219,7 +219,10 @@ public function lookupHits(): void $this->config, FlagshipConstant::PROCESS_CACHE, FlagshipConstant::HIT_CACHE_ERROR, - ["lookupHits", $exception->getMessage()] + [ + "lookupHits", + $exception->getMessage(), + ] ); } } diff --git a/src/Config/FlagshipConfig.php b/src/Config/FlagshipConfig.php index 11123345..1242b85f 100644 --- a/src/Config/FlagshipConfig.php +++ b/src/Config/FlagshipConfig.php @@ -335,11 +335,11 @@ public function setDisableDeveloperUsageTracking(bool $disableDeveloperUsageTrac public function jsonSerialize(): mixed { return [ - FlagshipField::FIELD_ENVIRONMENT_ID => $this->getEnvId(), - FlagshipField::FIELD_API_KEY => $this->getApiKey(), - FlagshipField::FIELD_TIMEOUT => $this->getTimeout(), - FlagshipField::FIELD_LOG_LEVEL => $this->getLogLevel() - ]; + FlagshipField::FIELD_ENVIRONMENT_ID => $this->getEnvId(), + FlagshipField::FIELD_API_KEY => $this->getApiKey(), + FlagshipField::FIELD_TIMEOUT => $this->getTimeout(), + FlagshipField::FIELD_LOG_LEVEL => $this->getLogLevel(), + ]; } public static function bucketing(string $bucketingUrl): BucketingConfig diff --git a/src/Decision/ApiManager.php b/src/Decision/ApiManager.php index 0d392267..50dc6255 100644 --- a/src/Decision/ApiManager.php +++ b/src/Decision/ApiManager.php @@ -40,22 +40,19 @@ protected function setTroubleshootingData(?array $body): void $startDate = new DateTime($troubleshooting[FlagshipField::START_DATE]); $endDate = new DateTime($troubleshooting[FlagshipField::END_DATE]); $troubleshootingData = new TroubleshootingData(); - $troubleshootingData->setStartDate($startDate) - ->setEndDate($endDate) - ->setTimezone($troubleshooting[FlagshipField::TIMEZONE]) - ->setTraffic($troubleshooting[FlagshipField::TRAFFIC]); + $troubleshootingData->setStartDate($startDate)->setEndDate($endDate)->setTimezone($troubleshooting[FlagshipField::TIMEZONE])->setTraffic($troubleshooting[FlagshipField::TRAFFIC]); $this->troubleshootingData = $troubleshootingData; } public function getCampaigns(VisitorAbstract $visitor): array|null { $postData = [ - "visitorId" => $visitor->getVisitorId(), - "anonymousId" => $visitor->getAnonymousId(), - "trigger_hit" => false, - "context" => count($visitor->getContext()) > 0 ? $visitor->getContext() : null, - "visitor_consent" => $visitor->hasConsented() - ]; + "visitorId" => $visitor->getVisitorId(), + "anonymousId" => $visitor->getAnonymousId(), + "trigger_hit" => false, + "context" => count($visitor->getContext()) > 0 ? $visitor->getContext() : null, + "visitor_consent" => $visitor->hasConsented(), + ]; $headers = $this->buildHeader($this->getConfig()->getApiKey()); $url = $this->buildDecisionApiUrl($this->getConfig()->getEnvId() . '/' . FlagshipConstant::URL_CAMPAIGNS . '?' . @@ -76,26 +73,10 @@ public function getCampaigns(VisitorAbstract $visitor): array|null return $body[FlagshipField::FIELD_CAMPAIGNS] ?? null; } catch (Exception $exception) { $visitor->setFetchStatus(new FetchFlagsStatus(FSFetchStatus::FETCH_REQUIRED, FSFetchReason::FETCH_ERROR)); - $this->logError($this->getConfig(), $exception->getMessage(), [ - FlagshipConstant::TAG => __FUNCTION__ - ]); + $this->logError($this->getConfig(), $exception->getMessage(), [FlagshipConstant::TAG => __FUNCTION__]); $troubleshooting = new Troubleshooting(); - $troubleshooting->setLabel(TroubleshootingLabel::GET_CAMPAIGNS_ROUTE_RESPONSE_ERROR) - ->setHttpRequestBody($postData) - ->setHttpRequestHeaders($headers) - ->setHttpRequestMethod("POST") - ->setHttpRequestUrl($url) - ->setHttpResponseBody($exception->getMessage()) - ->setHttpResponseTime($this->getNow() - $now) - ->setVisitorContext($visitor->getContext()) - ->setLogLevel(LogLevel::ERROR) - ->setVisitorSessionId($visitor->getInstanceId()) - ->setFlagshipInstanceId($visitor->getFlagshipInstanceId()) - ->setTraffic(100) - ->setConfig($this->getConfig()) - ->setVisitorId($visitor->getVisitorId()) - ->setAnonymousId($visitor->getAnonymousId()); + $troubleshooting->setLabel(TroubleshootingLabel::GET_CAMPAIGNS_ROUTE_RESPONSE_ERROR)->setHttpRequestBody($postData)->setHttpRequestHeaders($headers)->setHttpRequestMethod("POST")->setHttpRequestUrl($url)->setHttpResponseBody($exception->getMessage())->setHttpResponseTime($this->getNow() - $now)->setVisitorContext($visitor->getContext())->setLogLevel(LogLevel::ERROR)->setVisitorSessionId($visitor->getInstanceId())->setFlagshipInstanceId($visitor->getFlagshipInstanceId())->setTraffic(100)->setConfig($this->getConfig())->setVisitorId($visitor->getVisitorId())->setAnonymousId($visitor->getAnonymousId()); $visitor->sendTroubleshootingHit($troubleshooting); return null; } diff --git a/src/Decision/BucketingManager.php b/src/Decision/BucketingManager.php index fdb5979c..3f366579 100644 --- a/src/Decision/BucketingManager.php +++ b/src/Decision/BucketingManager.php @@ -94,14 +94,14 @@ protected function sendContext(VisitorAbstract $visitor): void protected function getThirdPartySegment(string $visitorId): array { $url = sprintf(FlagshipConstant::THIRD_PARTY_SEGMENT_URL, $this->getConfig()->getEnvId(), $visitorId); - $now = $this->getNow(); + $now = $this->getNow(); $context = []; try { $response = $this->httpClient->get($url); $content = $response->getBody(); foreach ($content as $item) { $key = $item[self::PARTNER] . "::" . $item[self::SEGMENT]; - $context[$key] = $item[self::VALUE]; + $context[$key] = $item[self::VALUE]; } $this->logDebugSprintf( $this->config, @@ -126,13 +126,16 @@ protected function getThirdPartySegment(string $visitorId): array $this->getConfig(), self::GET_THIRD_PARTY_SEGMENT, FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, - [self::THIRD_PARTY_SEGMENT, $this->getLogFormat( - $exception->getMessage(), - $url, - [], - [], - $this->getNow() - $now - )] + [ + self::THIRD_PARTY_SEGMENT, + $this->getLogFormat( + $exception->getMessage(), + $url, + [], + [], + $this->getNow() - $now + ), + ] ); } return $context; @@ -168,9 +171,7 @@ protected function getBucketingFile(): mixed $this->troubleshootingHit = $troubleshooting; return $response->getBody(); } catch (Exception $exception) { - $this->logError($this->getConfig(), $exception->getMessage(), [ - FlagshipConstant::TAG => __FUNCTION__ - ]); + $this->logError($this->getConfig(), $exception->getMessage(), [FlagshipConstant::TAG => __FUNCTION__]); $troubleshooting = new Troubleshooting(); $troubleshooting->setLabel(TroubleshootingLabel::SDK_BUCKETING_FILE_ERROR) ->setFlagshipInstanceId($this->getFlagshipInstanceId()) @@ -288,14 +289,14 @@ private function getVisitorCampaigns( $visitor ); $visitorCampaigns[] = [ - FlagshipField::FIELD_ID => $campaignId, - FlagshipField::FIELD_NANE => $campaignName, - FlagshipField::FIELD_SLUG => $slug, - FlagshipField::FIELD_VARIATION_GROUP_ID => $variationGroup[FlagshipField::FIELD_ID], - FlagshipField::FIELD_VARIATION_GROUP_NAME => $variationGroup[FlagshipField::FIELD_NANE] ?? null, - FlagshipField::FIELD_VARIATION => $variations, - FlagshipField::FIELD_CAMPAIGN_TYPE => $campaignType - ]; + FlagshipField::FIELD_ID => $campaignId, + FlagshipField::FIELD_NANE => $campaignName, + FlagshipField::FIELD_SLUG => $slug, + FlagshipField::FIELD_VARIATION_GROUP_ID => $variationGroup[FlagshipField::FIELD_ID], + FlagshipField::FIELD_VARIATION_GROUP_NAME => $variationGroup[FlagshipField::FIELD_NANE] ?? null, + FlagshipField::FIELD_VARIATION => $variations, + FlagshipField::FIELD_CAMPAIGN_TYPE => $campaignType, + ]; break; } } @@ -344,18 +345,18 @@ private function getVariation(array $variationGroup, VisitorAbstract $visitor): if (!isset($variation[FlagshipField::FIELD_ALLOCATION])) { continue; } - $assignmentsVariationId = $this->getVisitorAssignmentsHistory($groupVariationId, $visitor); + $assignmentsVariationId = $this->getVisitorAssignmentsHistory($groupVariationId, $visitor); if ($assignmentsVariationId) { $newVariation = $this->findVariationById($variations, $assignmentsVariationId); if (!$newVariation) { continue; } $visitorVariation = [ - FlagshipField::FIELD_ID => $newVariation[FlagshipField::FIELD_ID], - FlagshipField::FIELD_MODIFICATIONS => $newVariation[FlagshipField::FIELD_MODIFICATIONS], - FlagshipField::FIELD_REFERENCE => !empty($newVariation[FlagshipField::FIELD_REFERENCE]), - FlagshipField::FIELD_NANE => $newVariation[FlagshipField::FIELD_NANE] ?? null - ]; + FlagshipField::FIELD_ID => $newVariation[FlagshipField::FIELD_ID], + FlagshipField::FIELD_MODIFICATIONS => $newVariation[FlagshipField::FIELD_MODIFICATIONS], + FlagshipField::FIELD_REFERENCE => !empty($newVariation[FlagshipField::FIELD_REFERENCE]), + FlagshipField::FIELD_NANE => $newVariation[FlagshipField::FIELD_NANE] ?? null, + ]; break; } @@ -366,11 +367,11 @@ private function getVariation(array $variationGroup, VisitorAbstract $visitor): $totalAllocation += $variation[FlagshipField::FIELD_ALLOCATION]; if ($hashAllocation < $totalAllocation) { $visitorVariation = [ - FlagshipField::FIELD_ID => $variation[FlagshipField::FIELD_ID], - FlagshipField::FIELD_MODIFICATIONS => $variation[FlagshipField::FIELD_MODIFICATIONS], - FlagshipField::FIELD_REFERENCE => !empty($variation[FlagshipField::FIELD_REFERENCE]), - FlagshipField::FIELD_NANE => $variation[FlagshipField::FIELD_NANE] ?? null - ]; + FlagshipField::FIELD_ID => $variation[FlagshipField::FIELD_ID], + FlagshipField::FIELD_MODIFICATIONS => $variation[FlagshipField::FIELD_MODIFICATIONS], + FlagshipField::FIELD_REFERENCE => !empty($variation[FlagshipField::FIELD_REFERENCE]), + FlagshipField::FIELD_NANE => $variation[FlagshipField::FIELD_NANE] ?? null, + ]; break; } } diff --git a/src/Enum/EventCategory.php b/src/Enum/EventCategory.php index 0dcac344..177ca33f 100644 --- a/src/Enum/EventCategory.php +++ b/src/Enum/EventCategory.php @@ -16,4 +16,4 @@ enum EventCategory: string * Represents user engagement event category. */ case USER_ENGAGEMENT = "USER_ENGAGEMENT"; -} \ No newline at end of file +} diff --git a/src/Enum/FlagshipConstant.php b/src/Enum/FlagshipConstant.php index ecca04b4..ed99a5f0 100644 --- a/src/Enum/FlagshipConstant.php +++ b/src/Enum/FlagshipConstant.php @@ -16,6 +16,8 @@ class FlagshipConstant public const DEFAULT_HIT_CACHE_TIME_MS = 14400000; + public const MAX_ACTIVATE_HIT_PER_BATCH = 100; + /** * SDK language */ @@ -62,7 +64,7 @@ class FlagshipConstant public const CONTEXT_PARAM_ERROR = "params 'key' must be a non null String, and 'value' must be one of the following types : String, Number, Boolean"; - public const USER_EXPOSED_NO_FLAG_ERROR = "For the visitor '%s', no flags were found with the key '%s'. + public const USER_EXPOSED_NO_FLAG_ERROR = "For the visitor '%s', no flags were found with the key '%s'. As a result, user exposure will not be sent."; public const VISITOR_EXPOSED_VALUE_NOT_CALLED = "For the visitor `%s`, assuming the getValue() method has not previously been invoked for the flag `%s`. Therefore, the exposure is canceled"; @@ -90,7 +92,7 @@ class FlagshipConstant "Method '%s' is deactivated for visitor '%s': visitor did not consent."; public const METHOD_DEACTIVATED_BUCKETING_ERROR = "Method '%s' is deactivated on Bucketing mode."; public const FLAGSHIP_PREDEFINED_CONTEXT_ERROR = "Flagship predefined context %s must be %s"; - public const FLAGSHIP_VISITOR_NOT_AUTHENTIFICATE = "Visitor is not authentificated yet"; + public const FLAGSHIP_VISITOR_NOT_AUTHENTIFICATE = "Visitor is not authentificated yet"; public const IS_NOT_CALLABLE_ERROR = "'%s' is not callable"; //Messages Info public const SDK_STARTED_INFO = "Flagship SDK (version: %s) READY"; diff --git a/src/Enum/FlagshipContext.php b/src/Enum/FlagshipContext.php index 93409729..ff5cf6d1 100644 --- a/src/Enum/FlagshipContext.php +++ b/src/Enum/FlagshipContext.php @@ -121,27 +121,27 @@ class FlagshipContext public const FLAGSHIP_VISITOR = 'fs_users'; private static array $predefinedContext = [ - self::DEVICE_LOCALE => "string", - self::DEVICE_TYPE => "string", - self::DEVICE_MODEL => "string", - self::LOCATION_CITY => "string", - self::LOCATION_REGION => "string", - self::LOCATION_COUNTRY => "string", - self::LOCATION_LAT => "float", - self::LOCATION_LONG => "float", - self::IP => "string", - self::OS_NAME => "string", - self::OS_VERSION_NAME => "string", - self::OS_VERSION_CODE => "float", - self::CARRIER_NAME => "string", - self::INTERNET_CONNECTION => "string", - self::APP_VERSION_NAME => "string", - self::APP_VERSION_CODE => "float", - self::INTERFACE_NAME => "string", - self::FLAGSHIP_CLIENT => "string", - self::FLAGSHIP_VERSION => "string", - self::FLAGSHIP_VISITOR => "string" - ]; + self::DEVICE_LOCALE => "string", + self::DEVICE_TYPE => "string", + self::DEVICE_MODEL => "string", + self::LOCATION_CITY => "string", + self::LOCATION_REGION => "string", + self::LOCATION_COUNTRY => "string", + self::LOCATION_LAT => "float", + self::LOCATION_LONG => "float", + self::IP => "string", + self::OS_NAME => "string", + self::OS_VERSION_NAME => "string", + self::OS_VERSION_CODE => "float", + self::CARRIER_NAME => "string", + self::INTERNET_CONNECTION => "string", + self::APP_VERSION_NAME => "string", + self::APP_VERSION_CODE => "float", + self::INTERFACE_NAME => "string", + self::FLAGSHIP_CLIENT => "string", + self::FLAGSHIP_VERSION => "string", + self::FLAGSHIP_VISITOR => "string", + ]; /** * @param $context string diff --git a/src/Enum/TroubleshootingLabel.php b/src/Enum/TroubleshootingLabel.php index 528a059c..0acd0b75 100644 --- a/src/Enum/TroubleshootingLabel.php +++ b/src/Enum/TroubleshootingLabel.php @@ -23,4 +23,4 @@ enum TroubleshootingLabel: string case SDK_CONFIG = "SDK_CONFIG"; case SEND_HIT_ROUTE_ERROR = "SEND_HIT_ROUTE_ERROR"; case FLAG_VALUE_NOT_CALLED = "FLAG_VALUE_NOT_CALLED"; -} \ No newline at end of file +} diff --git a/src/Flag/FSFlagCollection.php b/src/Flag/FSFlagCollection.php index b07f4d47..eda75305 100644 --- a/src/Flag/FSFlagCollection.php +++ b/src/Flag/FSFlagCollection.php @@ -63,7 +63,10 @@ public function get(string $key): FSFlagInterface $this->visitor->getConfig(), FlagshipConstant::GET_FLAG, FlagshipConstant::GET_FLAG_NOT_FOUND, - [$this->visitor->getVisitorId(), $key] + [ + $this->visitor->getVisitorId(), + $key, + ] ); return new FSFlag($key); } @@ -121,18 +124,18 @@ public function toJSON(): string foreach ($this->flags as $key => $flag) { $metadata = $flag->getMetadata(); $serializedData[] = [ - 'key' => $key, - 'campaignId' => $metadata->getCampaignId(), - 'campaignName' => $metadata->getCampaignName(), - 'variationGroupId' => $metadata->getVariationGroupId(), - 'variationGroupName' => $metadata->getVariationGroupName(), - 'variationId' => $metadata->getVariationId(), - 'variationName' => $metadata->getVariationName(), - 'isReference' => $metadata->isReference(), - 'campaignType' => $metadata->getCampaignType(), - 'slug' => $metadata->getSlug(), - 'hex' => $this->valueToHex(['v' => $flag->getValue(null, false)]) - ]; + 'key' => $key, + 'campaignId' => $metadata->getCampaignId(), + 'campaignName' => $metadata->getCampaignName(), + 'variationGroupId' => $metadata->getVariationGroupId(), + 'variationGroupName' => $metadata->getVariationGroupName(), + 'variationId' => $metadata->getVariationId(), + 'variationName' => $metadata->getVariationName(), + 'isReference' => $metadata->isReference(), + 'campaignType' => $metadata->getCampaignType(), + 'slug' => $metadata->getSlug(), + 'hex' => $this->valueToHex(['v' => $flag->getValue(null, false)]), + ]; } return json_encode($serializedData); } diff --git a/src/Flag/FSFlagMetadata.php b/src/Flag/FSFlagMetadata.php index 9d699fd1..fa982da8 100644 --- a/src/Flag/FSFlagMetadata.php +++ b/src/Flag/FSFlagMetadata.php @@ -175,15 +175,15 @@ public function getSlug(): ?string public function jsonSerialize(): mixed { return [ - "campaignId" => $this->getCampaignId(), - "campaignName" => $this->getCampaignName(), - "variationGroupId" => $this->getVariationGroupId(), - "variationGroupName" => $this->getVariationGroupName(), - "variationId" => $this->getVariationId(), - "variationName" => $this->getVariationName(), - "isReference" => $this->isReference(), - "campaignType" => $this->getCampaignType(), - "slug" => $this->getSlug() - ]; + "campaignId" => $this->getCampaignId(), + "campaignName" => $this->getCampaignName(), + "variationGroupId" => $this->getVariationGroupId(), + "variationGroupName" => $this->getVariationGroupName(), + "variationId" => $this->getVariationId(), + "variationName" => $this->getVariationName(), + "isReference" => $this->isReference(), + "campaignType" => $this->getCampaignType(), + "slug" => $this->getSlug(), + ]; } } diff --git a/src/Flagship.php b/src/Flagship.php index 43138a4e..8502875d 100644 --- a/src/Flagship.php +++ b/src/Flagship.php @@ -127,7 +127,11 @@ public static function start(string $envId, string $apiKey, ?FlagshipConfig $con $murmurHash = $container->get(MurmurHash::class); $decisionManager = $container->get( BucketingManager::class, - [$httpClient, $config, $murmurHash] + [ + $httpClient, + $config, + $murmurHash, + ] ); } else { $decisionManager = $container->get(ApiManager::class, [$httpClient, $config]); @@ -139,7 +143,11 @@ public static function start(string $envId, string $apiKey, ?FlagshipConfig $con $trackingManager = $container->get( TrackingManager::class, - [$config, $httpClient, $flagship->flagshipInstanceId] + [ + $config, + $httpClient, + $flagship->flagshipInstanceId, + ] ); $configManager = $container->get(ConfigManager::class, [$config, $decisionManager, $trackingManager], true); diff --git a/src/Hit/Activate.php b/src/Hit/Activate.php index d9c0a443..47cff6de 100644 --- a/src/Hit/Activate.php +++ b/src/Hit/Activate.php @@ -198,13 +198,13 @@ public function setFlagDefaultValue(float|array|bool|int|string|null $flagDefaul public function toApiKeys(): array { $apiKeys = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $this->getVisitorId(), - FlagshipConstant::VARIATION_ID_API_ITEM => $this->getVariationId(), - FlagshipConstant::VARIATION_GROUP_ID_API_ITEM => $this->getVariationGroupId(), - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $this->config->getEnvId(), - FlagshipConstant::ANONYMOUS_ID => null, - FlagshipConstant::QT_API_ITEM => round(microtime(true) * 1000) - $this->createdAt, - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $this->getVisitorId(), + FlagshipConstant::VARIATION_ID_API_ITEM => $this->getVariationId(), + FlagshipConstant::VARIATION_GROUP_ID_API_ITEM => $this->getVariationGroupId(), + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $this->config->getEnvId(), + FlagshipConstant::ANONYMOUS_ID => null, + FlagshipConstant::QT_API_ITEM => round(microtime(true) * 1000) - $this->createdAt, + ]; if ($this->getVisitorId() && $this->getAnonymousId()) { $apiKeys[FlagshipConstant::VISITOR_ID_API_ITEM] = $this->getVisitorId(); diff --git a/src/Hit/ActivateBatch.php b/src/Hit/ActivateBatch.php index f3d668b3..d60bec1d 100644 --- a/src/Hit/ActivateBatch.php +++ b/src/Hit/ActivateBatch.php @@ -39,8 +39,8 @@ public function toApiKeys(): array $activates[] = $apiKeys; } return [ - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $this->config->getEnvId(), - FlagshipConstant::BATCH => $activates - ]; + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $this->config->getEnvId(), + FlagshipConstant::BATCH => $activates, + ]; } } diff --git a/src/Hit/Diagnostic.php b/src/Hit/Diagnostic.php index 78cd37a7..e83f0b70 100644 --- a/src/Hit/Diagnostic.php +++ b/src/Hit/Diagnostic.php @@ -297,11 +297,7 @@ public function __construct($type) parent::__construct($type); $this->setVersion(FlagshipConstant::TROUBLESHOOTING_VERSION); $date = $this->getCurrentDateTime(); - $this->setTimestamp($date->format('c')) - ->setTimeZone($date->getTimezone()->getName()) - ->setStackType(FlagshipConstant::SDK) - ->setStackName(FlagshipConstant::SDK_LANGUAGE) - ->setStackVersion(FlagshipConstant::SDK_VERSION); + $this->setTimestamp($date->format('c'))->setTimeZone($date->getTimezone()->getName())->setStackType(FlagshipConstant::SDK)->setStackName(FlagshipConstant::SDK_LANGUAGE)->setStackVersion(FlagshipConstant::SDK_VERSION); } /** @@ -1320,16 +1316,16 @@ public function setSdkConfigLogLevel(LogLevel $sdkConfigLogLeve): static public function toApiKeys(): array { $customVariable = [ - 'version' => $this->getVersion(), - 'logLevel' => $this->getLogLevel()->name, - 'envId' => $this->getConfig()->getEnvId(), - "timestamp" => $this->getTimestamp(), - 'timeZone' => $this->getTimeZone(), - 'label' => $this->getLabel()->value, - 'stack.type' => $this->getStackType(), - 'stack.name' => $this->getStackName(), - 'stack.version' => $this->getStackVersion() - ]; + 'version' => $this->getVersion(), + 'logLevel' => $this->getLogLevel()->name, + 'envId' => $this->getConfig()->getEnvId(), + "timestamp" => $this->getTimestamp(), + 'timeZone' => $this->getTimeZone(), + 'label' => $this->getLabel()->value, + 'stack.type' => $this->getStackType(), + 'stack.name' => $this->getStackName(), + 'stack.version' => $this->getStackVersion(), + ]; if ($this->getVisitorId() !== null) { $customVariable["visitor.visitorId"] = $this->getVisitorId(); } @@ -1374,8 +1370,7 @@ public function toApiKeys(): array } if ($this->getSdkConfigTrackingManagerConfigStrategy() !== null) { - $customVariable["sdk.config.trackingManager.strategy"] = - $this->getSdkConfigTrackingManagerConfigStrategy()->name; + $customVariable["sdk.config.trackingManager.strategy"] = $this->getSdkConfigTrackingManagerConfigStrategy()->name; } if ($this->getSdkConfigBucketingUrl() !== null) { @@ -1387,8 +1382,7 @@ public function toApiKeys(): array } if ($this->isSdkConfigUsingOnVisitorExposed() !== null) { - $customVariable["sdk.config.usingOnVisitorExposed"] = - json_encode($this->isSdkConfigUsingOnVisitorExposed()); + $customVariable["sdk.config.usingOnVisitorExposed"] = json_encode($this->isSdkConfigUsingOnVisitorExposed()); } if ($this->isSdkConfigUsingCustomHitCache() !== null) { @@ -1396,8 +1390,7 @@ public function toApiKeys(): array } if ($this->isSdkConfigUsingCustomVisitorCache() !== null) { - $customVariable["sdk.config.usingCustomVisitorCache"] = - json_encode($this->isSdkConfigUsingCustomVisitorCache()); + $customVariable["sdk.config.usingCustomVisitorCache"] = json_encode($this->isSdkConfigUsingCustomVisitorCache()); } if ($this->getHttpRequestUrl() !== null) { @@ -1443,7 +1436,7 @@ public function toApiKeys(): array if (is_array($this->getVisitorContext())) { $context = $this->getVisitorContext(); foreach ($context as $index => $item) { - $customVariable["visitor.context.[$index]"] = is_string($item) ? $item : json_encode($item); + $customVariable["visitor.context.[$index]"] = is_string($item) ? $item : json_encode($item); } } @@ -1464,14 +1457,11 @@ public function toApiKeys(): array $customVariableKey = "visitor.flags.[$key]"; $customVariableKeyMetadata = "visitor.flags.[$key].metadata"; $customVariable["$customVariableKey.key"] = $visitorFlag->getKey(); - $customVariable["$customVariableKey.value"] = is_string($visitorFlag->getValue()) ? - $visitorFlag->getValue() : - json_encode($visitorFlag->getValue()); + $customVariable["$customVariableKey.value"] = is_string($visitorFlag->getValue()) ? $visitorFlag->getValue() : json_encode($visitorFlag->getValue()); $customVariable["$customVariableKeyMetadata.variationId"] = $visitorFlag->getVariationId(); $customVariable["$customVariableKeyMetadata.variationName"] = $visitorFlag->getVariationName(); $customVariable["$customVariableKeyMetadata.variationGroupId"] = $visitorFlag->getVariationGroupId(); - $customVariable["$customVariableKeyMetadata.variationGroupName"] = - $visitorFlag->getVariationGroupName(); + $customVariable["$customVariableKeyMetadata.variationGroupName"] = $visitorFlag->getVariationGroupName(); $customVariable["$customVariableKeyMetadata.campaignId"] = $visitorFlag->getCampaignId(); $customVariable["$customVariableKeyMetadata.campaignName"] = $visitorFlag->getCampaignName(); $customVariable["$customVariableKeyMetadata.campaignType"] = $visitorFlag->getCampaignType(); @@ -1490,12 +1480,10 @@ public function toApiKeys(): array $customVariable["flag.key"] = $this->getFlagKey(); } if ($this->getFlagValue() !== null) { - $customVariable["flag.value"] = is_string($this->getFlagValue()) ? $this->getFlagValue() : - json_encode($this->getFlagValue()); + $customVariable["flag.value"] = is_string($this->getFlagValue()) ? $this->getFlagValue() : json_encode($this->getFlagValue()); } if ($this->getFlagDefault() !== null) { - $customVariable["flag.default"] = is_string($this->getFlagDefault()) ? $this->getFlagDefault() : - json_encode($this->getFlagDefault()); + $customVariable["flag.default"] = is_string($this->getFlagDefault()) ? $this->getFlagDefault() : json_encode($this->getFlagDefault()); } if ($this->isVisitorExposed() !== null) { $customVariable["flag.visitorExposed"] = json_encode($this->isVisitorExposed()); @@ -1529,17 +1517,17 @@ public function toApiKeys(): array } if ($this->getHitContent() !== null) { foreach ($this->getHitContent() as $key => $item) { - $customVariable["hit." . $key] = is_string($item) ? $item : json_encode($item); + $customVariable["hit." . $key] = is_string($item) ? $item : json_encode($item); } } return [ - FlagshipConstant::VISITOR_ID_API_ITEM => $this->visitorId, - FlagshipConstant::DS_API_ITEM => $this->getDs(), - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $this->getConfig()->getEnvId(), - FlagshipConstant::T_API_ITEM => $this->getType()->value, - 'cv' => $customVariable - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $this->visitorId, + FlagshipConstant::DS_API_ITEM => $this->getDs(), + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $this->getConfig()->getEnvId(), + FlagshipConstant::T_API_ITEM => $this->getType()->value, + 'cv' => $customVariable, + ]; } /** diff --git a/src/Hit/Event.php b/src/Hit/Event.php index e1deed0a..55e0617d 100644 --- a/src/Hit/Event.php +++ b/src/Hit/Event.php @@ -14,8 +14,7 @@ class Event extends HitAbstract { public const ERROR_MESSAGE = 'event category and event action are required'; - public const CATEGORY_ERROR = - "The category value must be either EventCategory::ACTION_TRACKING or EventCategory::ACTION_TRACKING"; + public const CATEGORY_ERROR = "The category value must be either EventCategory::ACTION_TRACKING or EventCategory::ACTION_TRACKING"; public const VALUE_FIELD_ERROR = 'value must be an integer and be >= 0'; public static function getClassName(): string @@ -147,9 +146,7 @@ public function setValue(?float $value): static $this->logError( $this->config, self::VALUE_FIELD_ERROR, - [ - FlagshipConstant::TAG => __FUNCTION__ - ] + [FlagshipConstant::TAG => __FUNCTION__] ); return $this; } diff --git a/src/Hit/HitAbstract.php b/src/Hit/HitAbstract.php index ad8d5c7e..f1766a39 100644 --- a/src/Hit/HitAbstract.php +++ b/src/Hit/HitAbstract.php @@ -94,7 +94,7 @@ public function __construct(HitType $type) { $this->setType($type); $this->ds = FlagshipConstant::SDK_APP; - $this->createdAt = $this->getNow(); + $this->createdAt = $this->getNow(); $this->anonymousId = null; $this->isFromCache = false; $this->userIP = null; @@ -335,13 +335,13 @@ protected function setIsFromCache(bool $isFromCache): static public function toApiKeys(): array { $data = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $this->visitorId ?: $this->anonymousId, - FlagshipConstant::DS_API_ITEM => $this->getDs(), - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $this->getConfig()->getEnvId(), - FlagshipConstant::T_API_ITEM => $this->getType()->value, - FlagshipConstant::CUSTOMER_UID => null, - FlagshipConstant::QT_API_ITEM => $this->getNow() - $this->createdAt, - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $this->visitorId ?: $this->anonymousId, + FlagshipConstant::DS_API_ITEM => $this->getDs(), + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $this->getConfig()->getEnvId(), + FlagshipConstant::T_API_ITEM => $this->getType()->value, + FlagshipConstant::CUSTOMER_UID => null, + FlagshipConstant::QT_API_ITEM => $this->getNow() - $this->createdAt, + ]; if ($this->getUserIP() !== null) { $data[FlagshipConstant::USER_IP_API_ITEM] = $this->getUserIP(); diff --git a/src/Hit/HitBatch.php b/src/Hit/HitBatch.php index bc61894a..7bfac945 100644 --- a/src/Hit/HitBatch.php +++ b/src/Hit/HitBatch.php @@ -37,12 +37,12 @@ public function __construct(FlagshipConfig $config, array $hits) public function toApiKeys(): array { $data = [ - FlagshipConstant::DS_API_ITEM => $this->getDs(), - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $this->getConfig()->getEnvId(), - FlagshipConstant::T_API_ITEM => $this->getType()->value, - FlagshipConstant::QT_API_ITEM => $this->getNow() - $this->createdAt, - FlagshipConstant::H_API_ITEM => [] - ]; + FlagshipConstant::DS_API_ITEM => $this->getDs(), + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $this->getConfig()->getEnvId(), + FlagshipConstant::T_API_ITEM => $this->getType()->value, + FlagshipConstant::QT_API_ITEM => $this->getNow() - $this->createdAt, + FlagshipConstant::H_API_ITEM => [], + ]; foreach ($this->getHits() as $hit) { $hitApiKey = $hit->toApiKeys(); diff --git a/src/Model/FlagDTO.php b/src/Model/FlagDTO.php index 34300620..6b833d4d 100644 --- a/src/Model/FlagDTO.php +++ b/src/Model/FlagDTO.php @@ -264,16 +264,16 @@ public function setVariationName(string $variationName): static public function jsonSerialize(): mixed { return [ - FlagshipField::FIELD_KEY => $this->getKey(), - FlagshipField::FIELD_CAMPAIGN_ID => $this->getCampaignId(), - FlagshipField::FIELD_CAMPAIGN_NAME => $this->getCampaignName(), - FlagshipField::FIELD_VARIATION_GROUP_ID => $this->getVariationGroupId(), - FlagshipField::FIELD_VARIATION_GROUP_NAME => $this->getVariationGroupName(), - FlagshipField::FIELD_VARIATION_ID => $this->getVariationId(), - FlagshipField::FIELD_VARIATION_NAME => $this->getVariationName(), - FlagshipField::FIELD_IS_REFERENCE => $this->getIsReference(), - FlagshipField::FIELD_VALUE => $this->getValue(), - FlagshipField::FIELD_SLUG => $this->getSlug() - ]; + FlagshipField::FIELD_KEY => $this->getKey(), + FlagshipField::FIELD_CAMPAIGN_ID => $this->getCampaignId(), + FlagshipField::FIELD_CAMPAIGN_NAME => $this->getCampaignName(), + FlagshipField::FIELD_VARIATION_GROUP_ID => $this->getVariationGroupId(), + FlagshipField::FIELD_VARIATION_GROUP_NAME => $this->getVariationGroupName(), + FlagshipField::FIELD_VARIATION_ID => $this->getVariationId(), + FlagshipField::FIELD_VARIATION_NAME => $this->getVariationName(), + FlagshipField::FIELD_IS_REFERENCE => $this->getIsReference(), + FlagshipField::FIELD_VALUE => $this->getValue(), + FlagshipField::FIELD_SLUG => $this->getSlug(), + ]; } } diff --git a/src/Traits/BuildApiTrait.php b/src/Traits/BuildApiTrait.php index 75c9e997..7b64c679 100644 --- a/src/Traits/BuildApiTrait.php +++ b/src/Traits/BuildApiTrait.php @@ -15,11 +15,11 @@ trait BuildApiTrait protected function buildHeader(string $apiKey): array { return [ - FlagshipConstant::HEADER_X_API_KEY => $apiKey, - FlagshipConstant::HEADER_X_SDK_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON, - FlagshipConstant::HEADER_X_SDK_CLIENT => FlagshipConstant::SDK_LANGUAGE, - ]; + FlagshipConstant::HEADER_X_API_KEY => $apiKey, + FlagshipConstant::HEADER_X_SDK_VERSION => FlagshipConstant::SDK_VERSION, + FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON, + FlagshipConstant::HEADER_X_SDK_CLIENT => FlagshipConstant::SDK_LANGUAGE, + ]; } /** diff --git a/src/Traits/LogTrait.php b/src/Traits/LogTrait.php index f369558b..92080430 100644 --- a/src/Traits/LogTrait.php +++ b/src/Traits/LogTrait.php @@ -180,13 +180,13 @@ protected function getLogFormat( $format[FlagshipConstant::LOG_FORMAT_DURATION] = $duration; } if ($responseHeader !== null) { - $format[FlagshipConstant::LOG_FORMAT_REQUEST_HEADERS] = $responseHeader; + $format[FlagshipConstant::LOG_FORMAT_REQUEST_HEADERS] = $responseHeader; } if ($responseBody !== null) { - $format[FlagshipConstant::LOG_FORMAT_RESPONSE_BODY] = $responseBody; + $format[FlagshipConstant::LOG_FORMAT_RESPONSE_BODY] = $responseBody; } if ($responseStatus !== null) { - $format[FlagshipConstant::LOG_FORMAT_RESPONSE_STATUS] = $responseStatus; + $format[FlagshipConstant::LOG_FORMAT_RESPONSE_STATUS] = $responseStatus; } return $format; } diff --git a/src/Utils/HttpClient.php b/src/Utils/HttpClient.php index eb0f2b46..1154dce7 100644 --- a/src/Utils/HttpClient.php +++ b/src/Utils/HttpClient.php @@ -150,11 +150,11 @@ private function exec(): HttpResponse if ($httpError || $curlErrorCode) { $message = [ - 'curlCode' => $curlErrorCode, - 'curlMessage' => $curlErrorMessage, - 'httpCode' => $httpStatusCode, - 'httpMessage' => $rawResponse - ]; + 'curlCode' => $curlErrorCode, + 'curlMessage' => $curlErrorMessage, + 'httpCode' => $httpStatusCode, + 'httpMessage' => $rawResponse, + ]; throw new Exception(json_encode($message), $curlErrorCode); } $response = $rawResponse; diff --git a/src/Utils/MurmurHash.php b/src/Utils/MurmurHash.php index 00d62d65..13bcccbc 100644 --- a/src/Utils/MurmurHash.php +++ b/src/Utils/MurmurHash.php @@ -11,9 +11,7 @@ class MurmurHash */ private function multiply(mixed $k1, mixed $constant): int { - return ((($k1 & 0xffff) * $constant) + - ((($k1 >= 0 ? $k1 >> 16 : - (($k1 & 0x7fffffff) >> 16) | 0x8000) * $constant & 0xffff) << 16)) & 0xffffffff; + return ((($k1 & 0xffff) * $constant) + ((($k1 >= 0 ? $k1 >> 16 : (($k1 & 0x7fffffff) >> 16) | 0x8000) * $constant & 0xffff) << 16)) & 0xffffffff; } /** @@ -47,21 +45,15 @@ public function murmurHash3Int32(string $source): int $h1 = $seed < 0 ? -$seed : $seed; $i = 0; for ($bytes = $keyLength - ($remainder = $keyLength & 3); $i < $bytes;) { - $k1 = $source[$i] - | ($source[++$i] << 8) - | ($source[++$i] << 16) - | ($source[++$i] << 24); + $k1 = $source[$i] | ($source[++$i] << 8) | ($source[++$i] << 16) | ($source[++$i] << 24); ++$i; $k1 = $this->multiply($k1, 0xcc9e2d51); $k1 = $this->rotateLeft($k1); $k1 = $this->multiply($k1, 0x1b873593); $h1 ^= $k1; $h1 = $h1 << 13 | ($h1 >= 0 ? $h1 >> 19 : (($h1 & 0x7fffffff) >> 19) | 0x1000); - $h1b = ((($h1 & 0xffff) * 5) + - (((($h1 >= 0 ? $h1 >> 16 : - (($h1 & 0x7fffffff) >> 16) | 0x8000) * 5) & 0xffff) << 16)) & 0xffffffff; - $h1 = ((($h1b & 0xffff) + 0x6b64) + - (((($h1b >= 0 ? $h1b >> 16 : (($h1b & 0x7fffffff) >> 16) | 0x8000) + 0xe654) & 0xffff) << 16)); + $h1b = ((($h1 & 0xffff) * 5) + (((($h1 >= 0 ? $h1 >> 16 : (($h1 & 0x7fffffff) >> 16) | 0x8000) * 5) & 0xffff) << 16)) & 0xffffffff; + $h1 = ((($h1b & 0xffff) + 0x6b64) + (((($h1b >= 0 ? $h1b >> 16 : (($h1b & 0x7fffffff) >> 16) | 0x8000) + 0xe654) & 0xffff) << 16)); } $k1 = 0; switch ($remainder) { diff --git a/src/Visitor/DefaultStrategy.php b/src/Visitor/DefaultStrategy.php index 84cb64ad..04c5b3f9 100644 --- a/src/Visitor/DefaultStrategy.php +++ b/src/Visitor/DefaultStrategy.php @@ -37,9 +37,7 @@ public function setConsent(bool $hasConsented): void $consentHit = new Event(EventCategory::USER_ENGAGEMENT, FlagshipConstant::FS_CONSENT); $consentHit->setLabel( FlagshipConstant::SDK_LANGUAGE . ':' . ($hasConsented ? 'true' : 'false') - )->setConfig($this->getConfig()) - ->setVisitorId($this->getVisitor()->getVisitorId()) - ->setAnonymousId($this->getVisitor()->getAnonymousId()); + )->setConfig($this->getConfig())->setVisitorId($this->getVisitor()->getVisitorId())->setAnonymousId($this->getVisitor()->getAnonymousId()); $trackingManager = $this->getTrackingManager(); @@ -48,15 +46,7 @@ public function setConsent(bool $hasConsented): void $visitor = $this->getVisitor(); $troubleshooting = new Troubleshooting(); - $troubleshooting->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT) - ->setLogLevel(LogLevel::INFO) - ->setTraffic($visitor->getTraffic()) - ->setFlagshipInstanceId($visitor->getFlagshipInstanceId()) - ->setVisitorSessionId($visitor->getInstanceId()) - ->setHitContent($consentHit->toApiKeys()) - ->setVisitorId($visitor->getVisitorId()) - ->setConfig($this->getConfig()) - ->setAnonymousId($visitor->getAnonymousId()); + $troubleshooting->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT)->setLogLevel(LogLevel::INFO)->setTraffic($visitor->getTraffic())->setFlagshipInstanceId($visitor->getFlagshipInstanceId())->setVisitorSessionId($visitor->getInstanceId())->setHitContent($consentHit->toApiKeys())->setVisitorId($visitor->getVisitorId())->setConfig($this->getConfig())->setAnonymousId($visitor->getAnonymousId()); if ($this->getDecisionManager() && $this->getDecisionManager()->getTroubleshootingData()) { $this->sendTroubleshootingHit($troubleshooting); @@ -137,7 +127,7 @@ public function updateContext(string $key, float|bool|int|string|null $value): v * @inheritDoc */ public function updateContextCollection(array $context): void - { + { $oldContext = $this->getVisitor()->getContext(); $this->initialContext($context); @@ -162,7 +152,7 @@ public function clearContext(): void $oldContext = $this->getVisitor()->getContext(); $this->getVisitor()->context = []; - + $newContext = $this->getVisitor()->getContext(); if ($this->arraysAreEqual($oldContext, $newContext)) { @@ -224,15 +214,7 @@ public function authenticate(string $visitorId): void $this->setFetchStatus(FSFetchStatus::FETCH_REQUIRED, FSFetchReason::AUTHENTICATE); $troubleshooting = new Troubleshooting(); - $troubleshooting->setLabel(TroubleshootingLabel::VISITOR_AUTHENTICATE) - ->setLogLevel(LogLevel::INFO) - ->setVisitorSessionId($this->getVisitor()->getInstanceId()) - ->setVisitorContext($this->getVisitor()->getContext()) - ->setTraffic($this->getVisitor()->getTraffic()) - ->setFlagshipInstanceId($this->getFlagshipInstanceId()) - ->setConfig($this->getConfig()) - ->setVisitorId($this->getVisitor()->getVisitorId()) - ->setAnonymousId($this->getVisitor()->getAnonymousId()); + $troubleshooting->setLabel(TroubleshootingLabel::VISITOR_AUTHENTICATE)->setLogLevel(LogLevel::INFO)->setVisitorSessionId($this->getVisitor()->getInstanceId())->setVisitorContext($this->getVisitor()->getContext())->setTraffic($this->getVisitor()->getTraffic())->setFlagshipInstanceId($this->getFlagshipInstanceId())->setConfig($this->getConfig())->setVisitorId($this->getVisitor()->getVisitorId())->setAnonymousId($this->getVisitor()->getAnonymousId()); $this->sendTroubleshootingHit($troubleshooting); } @@ -264,15 +246,7 @@ public function unauthenticate(): void $this->setFetchStatus(FSFetchStatus::FETCH_REQUIRED, FSFetchReason::UNAUTHENTICATE); $troubleshooting = new Troubleshooting(); - $troubleshooting->setLabel(TroubleshootingLabel::VISITOR_UNAUTHENTICATE) - ->setLogLevel(LogLevel::INFO) - ->setVisitorContext($this->getVisitor()->getContext()) - ->setVisitorSessionId($this->getVisitor()->getInstanceId()) - ->setFlagshipInstanceId($this->getFlagshipInstanceId()) - ->setTraffic($this->getVisitor()->getTraffic()) - ->setConfig($this->getConfig()) - ->setVisitorId($this->getVisitor()->getVisitorId()) - ->setAnonymousId($this->getVisitor()->getAnonymousId()); + $troubleshooting->setLabel(TroubleshootingLabel::VISITOR_UNAUTHENTICATE)->setLogLevel(LogLevel::INFO)->setVisitorContext($this->getVisitor()->getContext())->setVisitorSessionId($this->getVisitor()->getInstanceId())->setFlagshipInstanceId($this->getFlagshipInstanceId())->setTraffic($this->getVisitor()->getTraffic())->setConfig($this->getConfig())->setVisitorId($this->getVisitor()->getVisitorId())->setAnonymousId($this->getVisitor()->getAnonymousId()); $this->sendTroubleshootingHit($troubleshooting); } @@ -301,14 +275,14 @@ protected function fetchVisitorCampaigns(VisitorAbstract $visitor): array $campaigns = []; foreach ($data[self::CAMPAIGNS] as $item) { $campaigns[] = [ - FlagshipField::FIELD_ID => $item[FlagshipField::FIELD_CAMPAIGN_ID], + FlagshipField::FIELD_ID => $item[FlagshipField::FIELD_CAMPAIGN_ID], FlagshipField::FIELD_VARIATION_GROUP_ID => $item[FlagshipField::FIELD_VARIATION_GROUP_ID], - FlagshipField::FIELD_VARIATION => [ - FlagshipField::FIELD_ID => $item[self::CAMPAIGN_ID], - FlagshipField::FIELD_REFERENCE => $item[FlagshipField::FIELD_IS_REFERENCE], + FlagshipField::FIELD_VARIATION => [ + FlagshipField::FIELD_ID => $item[self::CAMPAIGN_ID], + FlagshipField::FIELD_REFERENCE => $item[FlagshipField::FIELD_IS_REFERENCE], FlagshipField::FIELD_MODIFICATIONS => [ FlagshipField::FIELD_CAMPAIGN_TYPE => $item[FlagshipField::FIELD_CAMPAIGN_TYPE], - FlagshipField::FIELD_VALUE => $item[self::FLAGS], + FlagshipField::FIELD_VALUE => $item[self::FLAGS], ], ], ]; @@ -446,10 +420,7 @@ public function sendHit(HitAbstract $hit): void $trackingManager = $this->getTrackingManager(); $visitor = $this->getVisitor(); - $hit->setConfig($visitor->getConfig()) - ->setVisitorId($visitor->getVisitorId()) - ->setAnonymousId($visitor->getAnonymousId()) - ->setDs(FlagshipConstant::SDK_APP); + $hit->setConfig($visitor->getConfig())->setVisitorId($visitor->getVisitorId())->setAnonymousId($visitor->getAnonymousId())->setDs(FlagshipConstant::SDK_APP); if ($hit->isReady() === false) { $this->logError( @@ -463,15 +434,7 @@ public function sendHit(HitAbstract $hit): void $trackingManager->addHit($hit); $troubleshooting = new Troubleshooting(); - $troubleshooting->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT) - ->setLogLevel(LogLevel::INFO) - ->setFlagshipInstanceId($visitor->getFlagshipInstanceId()) - ->setVisitorSessionId($visitor->getInstanceId()) - ->setHitContent($hit->toApiKeys()) - ->setTraffic($visitor->getTraffic()) - ->setVisitorId($visitor->getVisitorId()) - ->setConfig($this->getConfig()) - ->setAnonymousId($visitor->getAnonymousId()); + $troubleshooting->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT)->setLogLevel(LogLevel::INFO)->setFlagshipInstanceId($visitor->getFlagshipInstanceId())->setVisitorSessionId($visitor->getInstanceId())->setHitContent($hit->toApiKeys())->setTraffic($visitor->getTraffic())->setVisitorId($visitor->getVisitorId())->setConfig($this->getConfig())->setAnonymousId($visitor->getAnonymousId()); $this->sendTroubleshootingHit($troubleshooting); } @@ -497,28 +460,12 @@ protected function activateFlag(FlagDTO $flag, mixed $defaultValue = null): void $visitor = $this->getVisitor(); $activateHit = new Activate($flag->getVariationGroupId(), $flag->getVariationId()); - $activateHit - ->setFlagKey($flag->getKey()) - ->setFlagValue($flag->getValue()) - ->setFlagDefaultValue($defaultValue) - ->setVisitorContext($visitor->getContext()) - ->setFlagMetadata($flagMetadata) - ->setVisitorId($visitor->getVisitorId()) - ->setAnonymousId($visitor->getAnonymousId()) - ->setConfig($this->getConfig()); + $activateHit->setFlagKey($flag->getKey())->setFlagValue($flag->getValue())->setFlagDefaultValue($defaultValue)->setVisitorContext($visitor->getContext())->setFlagMetadata($flagMetadata)->setVisitorId($visitor->getVisitorId())->setAnonymousId($visitor->getAnonymousId())->setConfig($this->getConfig()); $this->getTrackingManager()->activateFlag($activateHit); $troubleshooting = new Troubleshooting(); - $troubleshooting->setLabel(TroubleshootingLabel::VISITOR_SEND_ACTIVATE) - ->setLogLevel(LogLevel::INFO) - ->setFlagshipInstanceId($this->getFlagshipInstanceId()) - ->setVisitorSessionId($visitor->getInstanceId()) - ->setHitContent($activateHit->toApiKeys()) - ->setTraffic($this->getVisitor()->getTraffic()) - ->setVisitorId($visitor->getVisitorId()) - ->setAnonymousId($visitor->getAnonymousId()) - ->setConfig($this->getConfig()); + $troubleshooting->setLabel(TroubleshootingLabel::VISITOR_SEND_ACTIVATE)->setLogLevel(LogLevel::INFO)->setFlagshipInstanceId($this->getFlagshipInstanceId())->setVisitorSessionId($visitor->getInstanceId())->setHitContent($activateHit->toApiKeys())->setTraffic($this->getVisitor()->getTraffic())->setVisitorId($visitor->getVisitorId())->setAnonymousId($visitor->getAnonymousId())->setConfig($this->getConfig()); $this->sendTroubleshootingHit($troubleshooting); } @@ -526,18 +473,7 @@ private function sendFlagTroubleshooting($label, $key, $defaultValue, $visitorEx { $visitor = $this->getVisitor(); $troubleshooting = new Troubleshooting(); - $troubleshooting->setLabel($label) - ->setLogLevel(LogLevel::WARNING) - ->setVisitorSessionId($visitor->getInstanceId()) - ->setFlagshipInstanceId($this->getFlagshipInstanceId()) - ->setTraffic($visitor->getTraffic()) - ->setVisitorContext($visitor->getContext()) - ->setFlagKey($key) - ->setFlagDefault($defaultValue) - ->setVisitorExposed($visitorExposed) - ->setVisitorId($visitor->getVisitorId()) - ->setAnonymousId($visitor->getAnonymousId()) - ->setConfig($this->getConfig()); + $troubleshooting->setLabel($label)->setLogLevel(LogLevel::WARNING)->setVisitorSessionId($visitor->getInstanceId())->setFlagshipInstanceId($this->getFlagshipInstanceId())->setTraffic($visitor->getTraffic())->setVisitorContext($visitor->getContext())->setFlagKey($key)->setFlagDefault($defaultValue)->setVisitorExposed($visitorExposed)->setVisitorId($visitor->getVisitorId())->setAnonymousId($visitor->getAnonymousId())->setConfig($this->getConfig()); $this->sendTroubleshootingHit($troubleshooting); } diff --git a/src/Visitor/StrategyAbstract.php b/src/Visitor/StrategyAbstract.php index 6e9cca87..e70c1fca 100644 --- a/src/Visitor/StrategyAbstract.php +++ b/src/Visitor/StrategyAbstract.php @@ -282,19 +282,18 @@ public function cacheVisitor(): void foreach ($visitor->campaigns as $campaign) { $variation = $campaign[FlagshipField::FIELD_VARIATION]; $modifications = $variation[FlagshipField::FIELD_MODIFICATIONS]; - $assignmentsHistory[$campaign[FlagshipField::FIELD_VARIATION_GROUP_ID]] = - $variation[FlagshipField::FIELD_ID]; + $assignmentsHistory[$campaign[FlagshipField::FIELD_VARIATION_GROUP_ID]] = $variation[FlagshipField::FIELD_ID]; $campaigns[] = [ - FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], - FlagshipField::FIELD_SLUG => $campaign[FlagshipField::FIELD_SLUG] ?? null, - FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], - FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], - FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], - FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], - self::ACTIVATED => false, - self::FLAGS => $modifications[FlagshipField::FIELD_VALUE], - ]; + FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], + FlagshipField::FIELD_SLUG => $campaign[FlagshipField::FIELD_SLUG] ?? null, + FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], + FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], + FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], + FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], + self::ACTIVATED => false, + self::FLAGS => $modifications[FlagshipField::FIELD_VALUE], + ]; } if ( @@ -311,16 +310,16 @@ public function cacheVisitor(): void } $data = [ - self::VERSION => self::CURRENT_VERSION, - self::DATA => [ - self::VISITOR_ID => $visitor->getVisitorId(), - self::ANONYMOUS_ID => $visitor->getAnonymousId(), - self::CONSENT => $visitor->hasConsented(), - self::CONTEXT => $visitor->getContext(), - self::CAMPAIGNS => $campaigns, - self::ASSIGNMENTS_HISTORY => $assignmentsHistory, - ], - ]; + self::VERSION => self::CURRENT_VERSION, + self::DATA => [ + self::VISITOR_ID => $visitor->getVisitorId(), + self::ANONYMOUS_ID => $visitor->getAnonymousId(), + self::CONSENT => $visitor->hasConsented(), + self::CONTEXT => $visitor->getContext(), + self::CAMPAIGNS => $campaigns, + self::ASSIGNMENTS_HISTORY => $assignmentsHistory, + ], + ]; $visitorCacheInstance->cacheVisitor($visitor->getVisitorId(), $data); @@ -399,21 +398,7 @@ public function sendSdkConfigAnalyticHit(): void $fetchThirdPartyData = $config->getFetchThirdPartyData(); } $analytic = new UsageHit(); - $analytic->setLabel(TroubleshootingLabel::SDK_CONFIG) - ->setLogLevel(LogLevel::INFO) - ->setSdkConfigMode($config->getDecisionMode()) - ->setSdkConfigLogLevel($config->getLogLevel()) - ->setSdkConfigTimeout($config->getTimeout()) - ->setSdkConfigTrackingManagerConfigStrategy($config->getCacheStrategy()) - ->setSdkConfigBucketingUrl($bucketingUrl) - ->setSdkConfigFetchThirdPartyData($fetchThirdPartyData) - ->setSdkConfigUsingOnVisitorExposed(!!$config->getOnVisitorExposed()) - ->setSdkConfigUsingCustomHitCache(!!$config->getHitCacheImplementation()) - ->setSdkConfigUsingCustomVisitorCache(!!$config->getVisitorCacheImplementation()) - ->setSdkStatus($visitor->getSdkStatus()) - ->setFlagshipInstanceId($this->getFlagshipInstanceId()) - ->setVisitorId($this->getFlagshipInstanceId()) - ->setConfig($config); + $analytic->setLabel(TroubleshootingLabel::SDK_CONFIG)->setLogLevel(LogLevel::INFO)->setSdkConfigMode($config->getDecisionMode())->setSdkConfigLogLevel($config->getLogLevel())->setSdkConfigTimeout($config->getTimeout())->setSdkConfigTrackingManagerConfigStrategy($config->getCacheStrategy())->setSdkConfigBucketingUrl($bucketingUrl)->setSdkConfigFetchThirdPartyData($fetchThirdPartyData)->setSdkConfigUsingOnVisitorExposed(!!$config->getOnVisitorExposed())->setSdkConfigUsingCustomHitCache(!!$config->getHitCacheImplementation())->setSdkConfigUsingCustomVisitorCache(!!$config->getVisitorCacheImplementation())->setSdkStatus($visitor->getSdkStatus())->setFlagshipInstanceId($this->getFlagshipInstanceId())->setVisitorId($this->getFlagshipInstanceId())->setConfig($config); $this->getTrackingManager()->addUsageHit($analytic); } @@ -452,32 +437,7 @@ public function sendFetchFlagsTroubleshooting( $visitor->setTraffic($traffic); $troubleshootingHit = new Troubleshooting(); - $troubleshootingHit->setLabel(TroubleshootingLabel::VISITOR_FETCH_CAMPAIGNS) - ->setLogLevel(LogLevel::INFO) - ->setVisitorSessionId($visitor->getInstanceId()) - ->setFlagshipInstanceId($visitor->getFlagshipInstanceId()) - ->setTraffic($traffic) - ->setVisitorAssignmentHistory($assignmentHistory) - ->setVisitorContext($visitor->getContext()) - ->setSdkStatus($visitor->getSdkStatus()) - ->setVisitorCampaigns($campaigns) - ->setFlagshipInstanceId($this->getFlagshipInstanceId()) - ->setVisitorFlags($flagsDTO) - ->setVisitorConsent($visitor->hasConsented()) - ->setVisitorIsAuthenticated(!!$visitor->getAnonymousId()) - ->setHttpResponseTime(($this->getNow() - $now)) - ->setSdkConfigMode($config->getDecisionMode()) - ->setSdkConfigLogLevel($config->getLogLevel()) - ->setSdkConfigTimeout($config->getTimeout()) - ->setSdkConfigBucketingUrl($bucketingUrl) - ->setSdkConfigFetchThirdPartyData($fetchThirdPartyData) - ->setSdkConfigUsingOnVisitorExposed(!!$config->getOnVisitorExposed()) - ->setSdkConfigUsingCustomHitCache(!!$config->getHitCacheImplementation()) - ->setSdkConfigUsingCustomVisitorCache(!!$config->getVisitorCacheImplementation()) - ->setSdkConfigTrackingManagerConfigStrategy($config->getCacheStrategy()) - ->setVisitorId($visitor->getVisitorId()) - ->setAnonymousId($visitor->getAnonymousId()) - ->setConfig($config); + $troubleshootingHit->setLabel(TroubleshootingLabel::VISITOR_FETCH_CAMPAIGNS)->setLogLevel(LogLevel::INFO)->setVisitorSessionId($visitor->getInstanceId())->setFlagshipInstanceId($visitor->getFlagshipInstanceId())->setTraffic($traffic)->setVisitorAssignmentHistory($assignmentHistory)->setVisitorContext($visitor->getContext())->setSdkStatus($visitor->getSdkStatus())->setVisitorCampaigns($campaigns)->setFlagshipInstanceId($this->getFlagshipInstanceId())->setVisitorFlags($flagsDTO)->setVisitorConsent($visitor->hasConsented())->setVisitorIsAuthenticated(!!$visitor->getAnonymousId())->setHttpResponseTime(($this->getNow() - $now))->setSdkConfigMode($config->getDecisionMode())->setSdkConfigLogLevel($config->getLogLevel())->setSdkConfigTimeout($config->getTimeout())->setSdkConfigBucketingUrl($bucketingUrl)->setSdkConfigFetchThirdPartyData($fetchThirdPartyData)->setSdkConfigUsingOnVisitorExposed(!!$config->getOnVisitorExposed())->setSdkConfigUsingCustomHitCache(!!$config->getHitCacheImplementation())->setSdkConfigUsingCustomVisitorCache(!!$config->getVisitorCacheImplementation())->setSdkConfigTrackingManagerConfigStrategy($config->getCacheStrategy())->setVisitorId($visitor->getVisitorId())->setAnonymousId($visitor->getAnonymousId())->setConfig($config); $this->sendTroubleshootingHit($troubleshootingHit); } diff --git a/src/Visitor/VisitorAbstract.php b/src/Visitor/VisitorAbstract.php index c04208ae..c7b3a9ef 100644 --- a/src/Visitor/VisitorAbstract.php +++ b/src/Visitor/VisitorAbstract.php @@ -460,9 +460,9 @@ public function sendTroubleshootingHit(Troubleshooting $hit): void public function jsonSerialize(): mixed { return [ - 'visitorId' => $this->getVisitorId(), - 'context' => $this->getContext(), - 'hasConsent' => $this->hasConsented(), - ]; + 'visitorId' => $this->getVisitorId(), + 'context' => $this->getContext(), + 'hasConsent' => $this->hasConsented(), + ]; } } diff --git a/src/Visitor/VisitorBuilder.php b/src/Visitor/VisitorBuilder.php index ac436f53..d3468b8e 100644 --- a/src/Visitor/VisitorBuilder.php +++ b/src/Visitor/VisitorBuilder.php @@ -136,15 +136,15 @@ public function setOnFetchFlagsStatusChanged(callable $onFetchFlagsStatusChanged public function build(): VisitorInterface { $visitorDelegate = $this->dependencyIContainer->get(VisitorDelegate::class, [ - $this->dependencyIContainer, - $this->configManager, - $this->visitorId, - $this->isAuthenticated, - $this->context, - $this->hasConsented, - $this->flagshipInstance, - $this->onFetchFlagsStatusChanged - ], true); + $this->dependencyIContainer, + $this->configManager, + $this->visitorId, + $this->isAuthenticated, + $this->context, + $this->hasConsented, + $this->flagshipInstance, + $this->onFetchFlagsStatusChanged, + ], true); $visitorDelegate->setFlagshipInstanceId($this->flagshipInstance); diff --git a/src/Visitor/VisitorDelegate.php b/src/Visitor/VisitorDelegate.php index 2b64e0c9..ad90e545 100644 --- a/src/Visitor/VisitorDelegate.php +++ b/src/Visitor/VisitorDelegate.php @@ -181,7 +181,10 @@ public function getFlag(string $key): FSFlagInterface $this->getConfig(), FlagshipConstant::GET_FLAG, $this->flagSyncStatusMessage($fetchFlagsStatus->getReason()), - [$this->getVisitorId(), $key] + [ + $this->getVisitorId(), + $key, + ] ); } return new FSFlag($key, $this); diff --git a/tests/Api/BatchingOnFailedCachingStrategyTest.php b/tests/Api/BatchingOnFailedCachingStrategyTest.php index 0b5ff150..f0a1eedc 100644 --- a/tests/Api/BatchingOnFailedCachingStrategyTest.php +++ b/tests/Api/BatchingOnFailedCachingStrategyTest.php @@ -8,28 +8,29 @@ use DateTime; use Exception; -use Flagship\Config\DecisionApiConfig; -use Flagship\Enum\EventCategory; -use Flagship\Enum\FlagshipConstant; -use Flagship\Enum\HitCacheFields; -use Flagship\Enum\LogLevel; -use Flagship\Enum\TroubleshootingLabel; -use Flagship\Flag\FSFlagMetadata; +use Flagship\Hit\Page; +use Flagship\Hit\Event; +use Flagship\Hit\Screen; use Flagship\Hit\Activate; -use Flagship\Hit\ActivateBatch; +use Flagship\Hit\HitBatch; use Flagship\Hit\UsageHit; -use Flagship\Hit\Event; +use Flagship\Enum\LogLevel; use Flagship\Hit\HitAbstract; -use Flagship\Hit\HitBatch; -use Flagship\Hit\Page; -use Flagship\Hit\Screen; -use Flagship\Hit\Troubleshooting; +use Flagship\Traits\LogTrait; +use Flagship\Hit\ActivateBatch; use Flagship\Model\ExposedFlag; +use PHPUnit\Framework\TestCase; +use Flagship\Enum\EventCategory; +use Flagship\Enum\HitCacheFields; +use Flagship\Flag\FSFlagMetadata; +use Flagship\Hit\Troubleshooting; use Flagship\Model\ExposedVisitor; +use Flagship\Enum\FlagshipConstant; +use Flagship\Config\DecisionApiConfig; +use Flagship\Enum\TroubleshootingLabel; use Flagship\Model\TroubleshootingData; -use Flagship\Traits\LogTrait; use Flagship\Utils\HttpClientInterface; -use PHPUnit\Framework\TestCase; +use PHPUnit\Framework\MockObject\MockObject; class BatchingOnFailedCachingStrategyTest extends TestCase { @@ -56,10 +57,10 @@ public function testGeneralMethods() //Test getActivateHeaders $activateHeaders = [ - FlagshipConstant::HEADER_X_API_KEY => $config->getApiKey(), + FlagshipConstant::HEADER_X_API_KEY => $config->getApiKey(), FlagshipConstant::HEADER_X_SDK_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON, - FlagshipConstant::HEADER_X_SDK_CLIENT => FlagshipConstant::SDK_LANGUAGE, + FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON, + FlagshipConstant::HEADER_X_SDK_CLIENT => FlagshipConstant::SDK_LANGUAGE, ]; $this->assertSame($activateHeaders, $strategy->getActivateHeaders()); @@ -81,21 +82,26 @@ public function testAddHit() $strategy = $this->getMockForAbstractClass( BatchingOnFailedCachingStrategy::class, - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["cacheHit","flushHits","flushAllHits"] + [ + "cacheHit", + "flushHits", + "flushAllHits", + ] ); $strategy->expects($this->never())->method("cacheHit"); - $strategy->expects($this->never()) - ->method("flushAllHits"); + $strategy->expects($this->never())->method("flushAllHits"); - $strategy->expects($this->once()) - ->method("flushHits")->with([$page3Key, $activate3Key]); + $strategy->expects($this->once())->method("flushHits")->with([$page3Key, $activate3Key]); $page = new Page("http://localhost"); @@ -109,17 +115,17 @@ public function testAddHit() $strategy->addHit($page2); $contentPage3 = [ - 'pageUrl' => 'page1', - 'visitorId' => $visitorId, - 'ds' => 'APP', - 'type' => "PAGEVIEW", - 'anonymousId' => null, - 'userIP' => null, + 'pageUrl' => 'page1', + 'visitorId' => $visitorId, + 'ds' => 'APP', + 'type' => "PAGEVIEW", + 'anonymousId' => null, + 'userIP' => null, 'pageResolution' => null, - 'locale' => null, - 'sessionNumber' => null, - 'key' => $page3Key, - 'createdAt' => 1676542078047, + 'locale' => null, + 'sessionNumber' => null, + 'key' => $page3Key, + 'createdAt' => 1676542078047, ]; $page3 = HitAbstract::hydrate(Page::getClassName(), $contentPage3); @@ -139,17 +145,17 @@ public function testAddHit() $contentActivate = [ 'variationGroupId' => 'cagt08da51hg0787cns0', - 'variationId' => 'cagt08da51hg0787cnt0', - 'visitorId' => $visitorId, - 'ds' => 'APP', - 'type' => 'ACTIVATE', - 'anonymousId' => null, - 'userIP' => null, - 'pageResolution' => null, - 'locale' => null, - 'sessionNumber' => null, - 'key' => $activate3Key, - 'createdAt' => 1676542078044, + 'variationId' => 'cagt08da51hg0787cnt0', + 'visitorId' => $visitorId, + 'ds' => 'APP', + 'type' => 'ACTIVATE', + 'anonymousId' => null, + 'userIP' => null, + 'pageResolution' => null, + 'locale' => null, + 'sessionNumber' => null, + 'key' => $activate3Key, + 'createdAt' => 1676542078044, ]; $activate3 = HitAbstract::hydrate(Activate::getClassName(), $contentActivate); @@ -198,7 +204,7 @@ public function testAddHit() $this->assertContains($activate2, $strategy->getActivatePoolQueue()); $this->assertCount(1, $strategy->getActivatePoolQueue()); -// //Test consent hit false when no hits for visitorId exist HitsPoolQueue + // //Test consent hit false when no hits for visitorId exist HitsPoolQueue $strategy->addHit($consentHit); $this->assertCount(4, $strategy->getHitsPoolQueue()); @@ -223,14 +229,25 @@ public function testSendActivateHit() $activate2 = new Activate("varGrId", "VarId"); $activate2->setConfig($config)->setVisitorId($visitorId); + /** + * @var BatchingOnFailedCachingStrategy|MockObject $strategy + */ $strategy = $this->getMockForAbstractClass( - "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + BatchingOnFailedCachingStrategy::class, + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["flushHits","logDebugSprintf","cacheHit", "getNow"] + [ + "flushHits", + "logDebugSprintf", + "cacheHit", + "getNow", + ] ); $strategy->activateFlag($activate); @@ -240,17 +257,17 @@ public function testSendActivateHit() $contentActivate = [ 'variationGroupId' => 'cagt08da51hg0787cns0', - 'variationId' => 'cagt08da51hg0787cnt0', - 'visitorId' => $visitorId, - 'ds' => 'APP', - 'type' => 'ACTIVATE', - 'anonymousId' => null, - 'userIP' => null, - 'pageResolution' => null, - 'locale' => null, - 'sessionNumber' => null, - 'key' => $activate3Key, - 'createdAt' => 1676542078044, + 'variationId' => 'cagt08da51hg0787cnt0', + 'visitorId' => $visitorId, + 'ds' => 'APP', + 'type' => 'ACTIVATE', + 'anonymousId' => null, + 'userIP' => null, + 'pageResolution' => null, + 'locale' => null, + 'sessionNumber' => null, + 'key' => $activate3Key, + 'createdAt' => 1676542078044, ]; $activate3 = HitAbstract::hydrate(Activate::getClassName(), $contentActivate); @@ -262,15 +279,11 @@ public function testSendActivateHit() $requestBody = $activateBatch->toApiKeys(); - $httpClientMock->expects($this->once())->method("post") - ->with($url, [], $requestBody); + $httpClientMock->expects($this->once())->method("post")->with($url, [], $requestBody); $headers = $strategy->getActivateHeaders(); - $strategy - ->expects($this->exactly(1)) - ->method("flushHits") - ->with([$activate3Key]); + $strategy->expects($this->exactly(1))->method("flushHits")->with([$activate3Key]); $logMessage = $this->getLogFormat( null, @@ -280,13 +293,15 @@ public function testSendActivateHit() 0 ); - $strategy->expects($this->once())->method("logDebugSprintf") - ->with( - $config, - FlagshipConstant::TRACKING_MANAGER, - FlagshipConstant::HIT_SENT_SUCCESS, - [FlagshipConstant::SEND_ACTIVATE, $logMessage ] - ); + $strategy->expects($this->once())->method("logDebugSprintf")->with( + $config, + FlagshipConstant::TRACKING_MANAGER, + FlagshipConstant::HIT_SENT_SUCCESS, + [ + FlagshipConstant::SEND_ACTIVATE, + $logMessage, + ] + ); $this->assertCount(3, $strategy->getActivatePoolQueue()); @@ -295,6 +310,61 @@ public function testSendActivateHit() $this->assertCount(0, $strategy->getActivatePoolQueue()); } + public function testSendActivateBatch() + { + $config = new DecisionApiConfig(); + $visitorId = "visitorId"; + + $httpClientMock = $this->getMockForAbstractClass(HttpClientInterface::class); + + $url = FlagshipConstant::BASE_API_URL . '/' . FlagshipConstant::URL_ACTIVATE_MODIFICATION; + + /** + * @var BatchingOnFailedCachingStrategy|MockObject $strategy + */ + $strategy = $this->getMockForAbstractClass( + BatchingOnFailedCachingStrategy::class, + [ + $config, + $httpClientMock, + ], + "", + true, + true, + true, + [ + "flushHits", + "logDebugSprintf", + "cacheHit", + "getNow", + ] + ); + + $activates = []; + + for ($i = 0; $i < 300; $i++) { + $activate = new Activate("varGrId", "VarId"); + $activate->setConfig($config)->setVisitorId($visitorId); + $strategy->activateFlag($activate); + $activates[] = $activate; + } + + $chunkedActivates = array_chunk($activates, FlagshipConstant::MAX_ACTIVATE_HIT_PER_BATCH); + $baches = []; + + foreach ($chunkedActivates as $chunk) { + $baches[] = (new ActivateBatch($config, $chunk))->toApiKeys(); + } + + $httpClientMock->expects($this->exactly(3))->method("post")->with($url, [], $this->logicalOr( + $baches[0], + $baches[1], + $baches[2] + )); + + $strategy->sendBatch(); + } + public function testOnUserExposed() { $config = new DecisionApiConfig(); @@ -330,13 +400,7 @@ public function testOnUserExposed() $variationName1 ); - $activate->setConfig($config) - ->setVisitorId($visitorId) - ->setVisitorContext($context) - ->setFlagKey($flagKey1) - ->setFlagValue($flagValue1) - ->setFlagDefaultValue($flagDefaultValue1) - ->setFlagMetadata($flagMetadata1); + $activate->setConfig($config)->setVisitorId($visitorId)->setVisitorContext($context)->setFlagKey($flagKey1)->setFlagValue($flagValue1)->setFlagDefaultValue($flagDefaultValue1)->setFlagMetadata($flagMetadata1); $variationGroupId2 = "variationGroupId2"; $variationGroupName2 = "variationGroupName2"; @@ -361,22 +425,24 @@ public function testOnUserExposed() ); $activate2 = new Activate($variationGroupId2, $variationId2); - $activate2->setConfig($config) - ->setVisitorId($visitorId) - ->setVisitorContext($context) - ->setFlagKey($flagKey2) - ->setFlagValue($flagValue2) - ->setFlagDefaultValue($flagDefaultValue2) - ->setFlagMetadata($flagMetadata2); + $activate2->setConfig($config)->setVisitorId($visitorId)->setVisitorContext($context)->setFlagKey($flagKey2)->setFlagValue($flagValue2)->setFlagDefaultValue($flagDefaultValue2)->setFlagMetadata($flagMetadata2); $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["flushHits","logDebugSprintf","cacheHit", "logErrorSprintf"] + [ + "flushHits", + "logDebugSprintf", + "cacheHit", + "logErrorSprintf", + ] ); $strategy->activateFlag($activate); @@ -386,8 +452,7 @@ public function testOnUserExposed() $requestBody = $activateBatch->toApiKeys(); - $httpClientMock->expects($this->once())->method("post") - ->with($url, [], $requestBody); + $httpClientMock->expects($this->once())->method("post")->with($url, [], $requestBody); $check1 = false; $check2 = false; @@ -416,10 +481,10 @@ public function testOnUserExposed() $check1 = $exposedUser->getId() === $visitorId && $exposedUser->getAnonymousId() === null && $exposedUser->getContext() === $context && - $exposedFlag->getValue() === $flagValue1 && - $exposedFlag->getKey() === $flagKey1 && - $exposedFlag->getMetadata() === $flagMetadata1 && - $exposedFlag->getDefaultValue() === $flagDefaultValue1; + $exposedFlag->getValue() === $flagValue1 && + $exposedFlag->getKey() === $flagKey1 && + $exposedFlag->getMetadata() === $flagMetadata1 && + $exposedFlag->getDefaultValue() === $flagDefaultValue1; } else { $check2 = $exposedUser->getId() === $visitorId && $exposedUser->getAnonymousId() === null && @@ -427,7 +492,7 @@ public function testOnUserExposed() $exposedFlag->getValue() === $flagValue2 && $exposedFlag->getKey() === $flagKey2 && $exposedFlag->getMetadata() === $flagMetadata2 && - $exposedFlag->getDefaultValue() === $flagDefaultValue2; + $exposedFlag->getDefaultValue() === $flagDefaultValue2; } }); @@ -476,12 +541,7 @@ public function testOnUserExposedError() $variationName1 ); - $activate->setConfig($config) - ->setVisitorId($visitorId) - ->setVisitorContext($context) - ->setFlagKey($flagKey1) - ->setFlagValue($flagValue1) - ->setFlagMetadata($flagMetadata1); + $activate->setConfig($config)->setVisitorId($visitorId)->setVisitorContext($context)->setFlagKey($flagKey1)->setFlagValue($flagValue1)->setFlagMetadata($flagMetadata1); $variationGroupId2 = "variationGroupId2"; $variationId2 = "variationId2"; @@ -505,21 +565,24 @@ public function testOnUserExposedError() ); $activate2 = new Activate($variationGroupId2, $variationId2); - $activate2->setConfig($config) - ->setVisitorId($visitorId) - ->setVisitorContext($context) - ->setFlagKey($flagKey2) - ->setFlagValue($flagValue2) - ->setFlagMetadata($flagMetadata2); + $activate2->setConfig($config)->setVisitorId($visitorId)->setVisitorContext($context)->setFlagKey($flagKey2)->setFlagValue($flagValue2)->setFlagMetadata($flagMetadata2); $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["flushHits","logDebugSprintf","cacheHit", "logErrorSprintf"] + [ + "flushHits", + "logDebugSprintf", + "cacheHit", + "logErrorSprintf", + ] ); $strategy->activateFlag($activate); @@ -529,20 +592,18 @@ public function testOnUserExposedError() $requestBody = $activateBatch->toApiKeys(); - $httpClientMock->expects($this->once())->method("post") - ->with($url, [], $requestBody); + $httpClientMock->expects($this->once())->method("post")->with($url, [], $requestBody); $count = 0; $config->setOnVisitorExposed(function () - use (&$count) { + use (&$count) { $exceptionMessage = "Message error"; $count++; throw new Exception($exceptionMessage); }); - $strategy->expects($this->exactly(2)) - ->method("logErrorSprintf"); + $strategy->expects($this->exactly(2))->method("logErrorSprintf"); $this->assertCount(2, $strategy->getActivatePoolQueue()); @@ -571,12 +632,21 @@ public function testSendActivateHitFailed() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock, "instanceId"], + [ + $config, + $httpClientMock, + "instanceId", + ], "", true, true, true, - ["flushHits","logErrorSprintf","cacheHit", "getNow"] + [ + "flushHits", + "logErrorSprintf", + "cacheHit", + "getNow", + ] ); $strategy->activateFlag($activate); @@ -587,17 +657,11 @@ public function testSendActivateHitFailed() $requestBody = $activateBatch->toApiKeys(); $exception = new Exception("activate error"); - $httpClientMock->expects($this->once())->method("post") - ->with($url, [], $requestBody)->willThrowException($exception); + $httpClientMock->expects($this->once())->method("post")->with($url, [], $requestBody)->willThrowException($exception); - $strategy - ->expects($this->never()) - ->method("flushHits"); + $strategy->expects($this->never())->method("flushHits"); - $strategy - ->expects($this->once()) - ->method("cacheHit") - ->with($this->countOf(2)); + $strategy->expects($this->once())->method("cacheHit")->with($this->countOf(2)); $logMessage = $this->getLogFormat( $exception->getMessage(), @@ -607,13 +671,15 @@ public function testSendActivateHitFailed() 0 ); - $strategy->expects($this->once())->method("logErrorSprintf") - ->with( - $config, - FlagshipConstant::TRACKING_MANAGER, - FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, - [FlagshipConstant::SEND_ACTIVATE, $logMessage ] - ); + $strategy->expects($this->once())->method("logErrorSprintf")->with( + $config, + FlagshipConstant::TRACKING_MANAGER, + FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, + [ + FlagshipConstant::SEND_ACTIVATE, + $logMessage, + ] + ); $this->assertCount(2, $strategy->getActivatePoolQueue()); @@ -640,12 +706,22 @@ public function testSendBatch() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock, "instanceId"], + [ + $config, + $httpClientMock, + "instanceId", + ], "", true, true, true, - ["flushHits","logDebugSprintf","cacheHit","flushAllHits", "getNow"] + [ + "flushHits", + "logDebugSprintf", + "cacheHit", + "flushAllHits", + "getNow", + ] ); $strategy->addHit($page); @@ -653,17 +729,17 @@ public function testSendBatch() $page3Key = "$visitorId:b1b48180-0d72-410d-8e9b-44ee90dfafc6"; $contentPage3 = [ - 'pageUrl' => 'page1', - 'visitorId' => $visitorId, - 'ds' => 'APP', - 'type' => "PAGEVIEW", - 'anonymousId' => null, - 'userIP' => null, + 'pageUrl' => 'page1', + 'visitorId' => $visitorId, + 'ds' => 'APP', + 'type' => "PAGEVIEW", + 'anonymousId' => null, + 'userIP' => null, 'pageResolution' => null, - 'locale' => null, - 'sessionNumber' => null, - 'key' => $page3Key, - 'createdAt' => 1676542078047, + 'locale' => null, + 'sessionNumber' => null, + 'key' => $page3Key, + 'createdAt' => 1676542078047, ]; $page3 = HitAbstract::hydrate(Page::getClassName(), $contentPage3); @@ -677,26 +753,18 @@ public function testSendBatch() $requestBody = $batchHit->toApiKeys(); - $httpClientMock->expects($this->once())->method("post") - ->with($url, [], $requestBody); + $httpClientMock->expects($this->once())->method("post")->with($url, [], $requestBody); $headers = [FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON]; $httpClientMock->expects($this->once())->method('setHeaders')->with($headers); $httpClientMock->expects($this->once())->method("setTimeout")->with($config->getTimeout()); - $strategy - ->expects($this->exactly(1)) - ->method("flushHits")->with([$page3Key]); + $strategy->expects($this->exactly(1))->method("flushHits")->with([$page3Key]); - $strategy - ->expects($this->never()) - ->method("flushAllHits"); + $strategy->expects($this->never())->method("flushAllHits"); - $strategy - ->expects($this->never()) - ->method("cacheHit") - ->with([]); + $strategy->expects($this->never())->method("cacheHit")->with([]); $logMessage = $this->getLogFormat( null, @@ -706,13 +774,15 @@ public function testSendBatch() 0 ); - $strategy->expects($this->once())->method("logDebugSprintf") - ->with( - $config, - FlagshipConstant::TRACKING_MANAGER, - FlagshipConstant::HIT_SENT_SUCCESS, - [FlagshipConstant::SEND_BATCH, $logMessage ] - ); + $strategy->expects($this->once())->method("logDebugSprintf")->with( + $config, + FlagshipConstant::TRACKING_MANAGER, + FlagshipConstant::HIT_SENT_SUCCESS, + [ + FlagshipConstant::SEND_BATCH, + $logMessage, + ] + ); $this->assertCount(3, $strategy->getHitsPoolQueue()); $strategy->sendBatch(); @@ -736,12 +806,22 @@ public function testSendBatchFailed() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock, "instanceId"], + [ + $config, + $httpClientMock, + "instanceId", + ], "", true, true, true, - ["flushHits","logErrorSprintf","cacheHit","flushAllHits", "getNow"] + [ + "flushHits", + "logErrorSprintf", + "cacheHit", + "flushAllHits", + "getNow", + ] ); $strategy->addHit($page); @@ -753,22 +833,15 @@ public function testSendBatchFailed() $requestBody = $batchHit->toApiKeys(); $exception = new Exception("batch error"); - $httpClientMock->expects($this->once())->method("post") - ->with($url, [], $requestBody)->willThrowException($exception); + $httpClientMock->expects($this->once())->method("post")->with($url, [], $requestBody)->willThrowException($exception); $headers = [FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON]; - $strategy - ->expects($this->never()) - ->method("flushHits"); + $strategy->expects($this->never())->method("flushHits"); - $strategy - ->expects($this->once()) - ->method("cacheHit")->with($this->countOf(2)); + $strategy->expects($this->once())->method("cacheHit")->with($this->countOf(2)); - $strategy - ->expects($this->never()) - ->method("flushAllHits"); + $strategy->expects($this->never())->method("flushAllHits"); $logMessage = $this->getLogFormat( $exception->getMessage(), @@ -778,13 +851,15 @@ public function testSendBatchFailed() 0 ); - $strategy->expects($this->once())->method("logErrorSprintf") - ->with( - $config, - FlagshipConstant::TRACKING_MANAGER, - FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, - [FlagshipConstant::SEND_BATCH, $logMessage ] - ); + $strategy->expects($this->once())->method("logErrorSprintf")->with( + $config, + FlagshipConstant::TRACKING_MANAGER, + FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, + [ + FlagshipConstant::SEND_BATCH, + $logMessage, + ] + ); $this->assertCount(2, $strategy->getHitsPoolQueue()); $strategy->sendBatch(); @@ -800,7 +875,7 @@ public function testSendBatchWithExpiredHit() $url = FlagshipConstant::HIT_EVENT_URL; - \Flagship\Traits\Round::$returnValue = FlagshipConstant::DEFAULT_HIT_CACHE_TIME_MS ; + \Flagship\Traits\Round::$returnValue = FlagshipConstant::DEFAULT_HIT_CACHE_TIME_MS; $page = new Page("https://myurl.com"); $page->setConfig($config)->setVisitorId($visitorId); @@ -813,15 +888,23 @@ public function testSendBatchWithExpiredHit() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["flushHits","logErrorSprintf","cacheHit", "flushAllHits"] + [ + "flushHits", + "logErrorSprintf", + "cacheHit", + "flushAllHits", + ] ); - \Flagship\Traits\Round::$returnValue = FlagshipConstant::DEFAULT_HIT_CACHE_TIME_MS ; + \Flagship\Traits\Round::$returnValue = FlagshipConstant::DEFAULT_HIT_CACHE_TIME_MS; $strategy->addHit($page); $strategy->addHit($screen); @@ -838,20 +921,13 @@ public function testSendBatchWithExpiredHit() $requestBody = $batchHit->toApiKeys(); - $httpClientMock->expects($this->once())->method("post") - ->with($url, [], $requestBody); + $httpClientMock->expects($this->once())->method("post")->with($url, [], $requestBody); - $strategy - ->expects($this->exactly(0)) - ->method("flushHits"); + $strategy->expects($this->exactly(0))->method("flushHits"); - $strategy - ->expects($this->never()) - ->method("cacheHit"); + $strategy->expects($this->never())->method("cacheHit"); - $strategy - ->expects($this->never()) - ->method("flushAllHits"); + $strategy->expects($this->never())->method("flushAllHits"); $this->assertCount(2, $strategy->getHitsPoolQueue()); @@ -871,26 +947,34 @@ public function testFlushHits() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["logDebugSprintf","cacheHit"] + [ + "logDebugSprintf", + "cacheHit", + ] ); - $keyToRemove = ["key1","key2","key3"]; + $keyToRemove = [ + "key1", + "key2", + "key3", + ]; - $strategy->expects($this->once())->method("logDebugSprintf") - ->with( - $config, - FlagshipConstant::PROCESS_CACHE, - FlagshipConstant::HIT_DATA_FLUSHED, - [$keyToRemove] - ); + $strategy->expects($this->once())->method("logDebugSprintf")->with( + $config, + FlagshipConstant::PROCESS_CACHE, + FlagshipConstant::HIT_DATA_FLUSHED, + [$keyToRemove] + ); - $hitCacheImplementationMock->expects($this->exactly(1)) - ->method("flushHits")->with($keyToRemove); + $hitCacheImplementationMock->expects($this->exactly(1))->method("flushHits")->with($keyToRemove); $strategy->flushHits($keyToRemove); @@ -920,7 +1004,10 @@ public function testFlushHitsFailed() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, @@ -928,21 +1015,25 @@ public function testFlushHitsFailed() ["logErrorSprintf"] ); - $keyToRemove = ["key1","key2","key3"]; + $keyToRemove = [ + "key1", + "key2", + "key3", + ]; $exception = new Exception("flushHits error"); - $strategy->expects($this->once())->method("logErrorSprintf") - ->with( - $config, - FlagshipConstant::PROCESS_CACHE, - FlagshipConstant::HIT_CACHE_ERROR, - ["flushHits", $exception->getMessage()] - ); + $strategy->expects($this->once())->method("logErrorSprintf")->with( + $config, + FlagshipConstant::PROCESS_CACHE, + FlagshipConstant::HIT_CACHE_ERROR, + [ + "flushHits", + $exception->getMessage(), + ] + ); - $hitCacheImplementationMock->expects($this->exactly(1)) - ->method("flushHits")->with($keyToRemove) - ->willThrowException($exception); + $hitCacheImplementationMock->expects($this->exactly(1))->method("flushHits")->with($keyToRemove)->willThrowException($exception); $strategy->flushHits($keyToRemove); } @@ -960,7 +1051,10 @@ public function testFlushAllHits() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, @@ -968,15 +1062,13 @@ public function testFlushAllHits() ["logDebugSprintf"] ); - $strategy->expects($this->once())->method("logDebugSprintf") - ->with( - $config, - FlagshipConstant::PROCESS_CACHE, - FlagshipConstant::ALL_HITS_FLUSHED - ); + $strategy->expects($this->once())->method("logDebugSprintf")->with( + $config, + FlagshipConstant::PROCESS_CACHE, + FlagshipConstant::ALL_HITS_FLUSHED + ); - $hitCacheImplementationMock->expects($this->exactly(1)) - ->method("flushAllHits"); + $hitCacheImplementationMock->expects($this->exactly(1))->method("flushAllHits"); $strategy->flushAllHits(); @@ -996,7 +1088,10 @@ public function testFlushAllHitsFailed() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, @@ -1006,16 +1101,17 @@ public function testFlushAllHitsFailed() $exception = new Exception("flushHits error"); - $strategy->expects($this->exactly(1))->method('logErrorSprintf') - ->with( - $config, - FlagshipConstant::PROCESS_CACHE, - FlagshipConstant::HIT_CACHE_ERROR, - ["flushAllHits", $exception->getMessage()] - ); + $strategy->expects($this->exactly(1))->method('logErrorSprintf')->with( + $config, + FlagshipConstant::PROCESS_CACHE, + FlagshipConstant::HIT_CACHE_ERROR, + [ + "flushAllHits", + $exception->getMessage(), + ] + ); - $hitCacheImplementationMock->expects($this->exactly(1)) - ->method("flushAllHits")->willThrowException($exception); + $hitCacheImplementationMock->expects($this->exactly(1))->method("flushAllHits")->willThrowException($exception); $strategy->flushAllHits(); } @@ -1032,12 +1128,18 @@ public function testCacheHit() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["logDebugSprintf", "getNow"] + [ + "logDebugSprintf", + "getNow", + ] ); $visitorId = "visitorId"; @@ -1050,28 +1152,26 @@ public function testCacheHit() $hitData = [ HitCacheFields::VERSION => 1, - HitCacheFields::DATA => [ - HitCacheFields::VISITOR_ID => $activate->getVisitorId(), + HitCacheFields::DATA => [ + HitCacheFields::VISITOR_ID => $activate->getVisitorId(), HitCacheFields::ANONYMOUS_ID => $activate->getAnonymousId(), - HitCacheFields::TYPE => $activate->getType(), - HitCacheFields::CONTENT => $activate->toArray(), - HitCacheFields::TIME => 0 - ] + HitCacheFields::TYPE => $activate->getType(), + HitCacheFields::CONTENT => $activate->toArray(), + HitCacheFields::TIME => 0, + ], ]; $data = []; $data[$key] = $hitData; - $strategy->expects($this->once())->method("logDebugSprintf") - ->with( - $config, - FlagshipConstant::PROCESS_CACHE, - FlagshipConstant::HIT_CACHE_SAVED, - [$data] - ); + $strategy->expects($this->once())->method("logDebugSprintf")->with( + $config, + FlagshipConstant::PROCESS_CACHE, + FlagshipConstant::HIT_CACHE_SAVED, + [$data] + ); - $hitCacheImplementationMock->expects($this->exactly(1)) - ->method("cacheHit")->with($data); + $hitCacheImplementationMock->expects($this->exactly(1))->method("cacheHit")->with($data); $strategy->cacheHit([$activate]); @@ -1091,7 +1191,10 @@ public function testCacheHitFailed() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, @@ -1107,13 +1210,13 @@ public function testCacheHitFailed() $hitData = [ HitCacheFields::VERSION => 1, - HitCacheFields::DATA => [ - HitCacheFields::VISITOR_ID => $activate->getVisitorId(), + HitCacheFields::DATA => [ + HitCacheFields::VISITOR_ID => $activate->getVisitorId(), HitCacheFields::ANONYMOUS_ID => $activate->getAnonymousId(), - HitCacheFields::TYPE => $activate->getType(), - HitCacheFields::CONTENT => $activate->toArray(), - HitCacheFields::TIME => 0 - ] + HitCacheFields::TYPE => $activate->getType(), + HitCacheFields::CONTENT => $activate->toArray(), + HitCacheFields::TIME => 0, + ], ]; $data = []; @@ -1121,16 +1224,17 @@ public function testCacheHitFailed() $exception = new Exception("Cache error"); - $strategy->expects($this->once())->method("logErrorSprintf") - ->with( - $config, - FlagshipConstant::PROCESS_CACHE, - FlagshipConstant::HIT_CACHE_ERROR, - ["cacheHit", $exception->getMessage()] - ); + $strategy->expects($this->once())->method("logErrorSprintf")->with( + $config, + FlagshipConstant::PROCESS_CACHE, + FlagshipConstant::HIT_CACHE_ERROR, + [ + "cacheHit", + $exception->getMessage(), + ] + ); - $hitCacheImplementationMock->expects($this->exactly(1)) - ->method("cacheHit")->with($data)->willThrowException($exception); + $hitCacheImplementationMock->expects($this->exactly(1))->method("cacheHit")->with($data)->willThrowException($exception); $strategy->cacheHit([$activate]); } @@ -1144,7 +1248,10 @@ public function testAddTroubleshootingHit() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, @@ -1152,27 +1259,17 @@ public function testAddTroubleshootingHit() ["isTroubleshootingActivated"] ); - $strategy->expects($this->exactly(4)) - ->method("isTroubleshootingActivated") - ->willReturnOnConsecutiveCalls(true, true, true, false); + $strategy->expects($this->exactly(4))->method("isTroubleshootingActivated")->willReturnOnConsecutiveCalls(true, true, true, false); $startDatetime = new DateTime("2023-04-13T09:33:38.049Z"); $endDatetime = new DateTime("2023-04-13T10:03:38.049Z"); $troubleshootingData = new TroubleshootingData(); - $troubleshootingData->setStartDate($startDatetime) - ->setEndDate($endDatetime) - ->setTraffic(100); + $troubleshootingData->setStartDate($startDatetime)->setEndDate($endDatetime)->setTraffic(100); $strategy->setTroubleshootingData($troubleshootingData); $troubleshooting = new Troubleshooting(); - $troubleshooting->setConfig($config) - ->setVisitorId($visitorId) - ->setLogLevel(LogLevel::ALL) - ->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT) - ->setVisitorSessionId("visitorSessionId") - ->setFlagshipInstanceId("flagshipInstanceId") - ->setTraffic(100); + $troubleshooting->setConfig($config)->setVisitorId($visitorId)->setLogLevel(LogLevel::ALL)->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT)->setVisitorSessionId("visitorSessionId")->setFlagshipInstanceId("flagshipInstanceId")->setTraffic(100); $strategy->addTroubleshootingHit($troubleshooting); @@ -1180,13 +1277,7 @@ public function testAddTroubleshootingHit() $this->assertCount(1, $troubleshootingQueue); $troubleshooting2 = new Troubleshooting(); - $troubleshooting2->setConfig($config) - ->setVisitorId($visitorId) - ->setLogLevel(LogLevel::ALL) - ->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT) - ->setVisitorSessionId("visitorSessionId") - ->setFlagshipInstanceId("flagshipInstanceId") - ->setTraffic(50); + $troubleshooting2->setConfig($config)->setVisitorId($visitorId)->setLogLevel(LogLevel::ALL)->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT)->setVisitorSessionId("visitorSessionId")->setFlagshipInstanceId("flagshipInstanceId")->setTraffic(50); $strategy->addTroubleshootingHit($troubleshooting2); @@ -1196,9 +1287,7 @@ public function testAddTroubleshootingHit() $troubleshootingData->setTraffic(49); $troubleshooting3 = new Troubleshooting(); - $troubleshooting3->setConfig($config) - ->setVisitorId($visitorId) - ->setTraffic(50); + $troubleshooting3->setConfig($config)->setVisitorId($visitorId)->setTraffic(50); $strategy->addTroubleshootingHit($troubleshooting3); @@ -1206,13 +1295,7 @@ public function testAddTroubleshootingHit() $this->assertCount(2, $troubleshootingQueue); $troubleshooting4 = new Troubleshooting(); - $troubleshooting4->setConfig($config) - ->setVisitorId($visitorId) - ->setLogLevel(LogLevel::ALL) - ->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT) - ->setVisitorSessionId("visitorSessionId") - ->setFlagshipInstanceId("flagshipInstanceId") - ->setTraffic(50); + $troubleshooting4->setConfig($config)->setVisitorId($visitorId)->setLogLevel(LogLevel::ALL)->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT)->setVisitorSessionId("visitorSessionId")->setFlagshipInstanceId("flagshipInstanceId")->setTraffic(50); $strategy->addTroubleshootingHit($troubleshooting4); @@ -1237,7 +1320,10 @@ public function testSendTroubleshootingQueue() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, @@ -1247,42 +1333,27 @@ public function testSendTroubleshootingQueue() - $strategy->expects($this->exactly(4)) - ->method("isTroubleshootingActivated") - ->willReturn(true, true, true, false); + $strategy->expects($this->exactly(4))->method("isTroubleshootingActivated")->willReturn(true, true, true, false); $match = $this->exactly(2); - $httpClientMock->expects($match) - ->method('post') - ->with($this->callback(function ($url) use ($match) { - $troubleshootingUrl = FlagshipConstant::TROUBLESHOOTING_HIT_URL; - return $url === $troubleshootingUrl; - })); + $httpClientMock->expects($match)->method('post')->with($this->callback(function ($url) use ($match) { + $troubleshootingUrl = FlagshipConstant::TROUBLESHOOTING_HIT_URL; + return $url === $troubleshootingUrl; + })); $startDatetime = new DateTime("2023-04-13T09:33:38.049Z"); $endDatetime = new DateTime("2023-04-13T10:03:38.049Z"); $troubleshootingData = new TroubleshootingData(); - $troubleshootingData->setStartDate($startDatetime) - ->setEndDate($endDatetime)->setTraffic(100); + $troubleshootingData->setStartDate($startDatetime)->setEndDate($endDatetime)->setTraffic(100); $strategy->setTroubleshootingData($troubleshootingData); $troubleshooting = new Troubleshooting(); - $troubleshooting->setConfig($config) - ->setLogLevel(LogLevel::ALL) - ->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT) - ->setVisitorSessionId("visitorSessionId") - ->setFlagshipInstanceId("flagshipInstanceId") - ->setVisitorId($visitorId)->setTraffic(100); + $troubleshooting->setConfig($config)->setLogLevel(LogLevel::ALL)->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT)->setVisitorSessionId("visitorSessionId")->setFlagshipInstanceId("flagshipInstanceId")->setVisitorId($visitorId)->setTraffic(100); $troubleshooting2 = new Troubleshooting(); - $troubleshooting2->setConfig($config) - ->setLogLevel(LogLevel::ALL) - ->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT) - ->setVisitorSessionId("visitorSessionId") - ->setFlagshipInstanceId("flagshipInstanceId") - ->setVisitorId($visitorId)->setTraffic(100); + $troubleshooting2->setConfig($config)->setLogLevel(LogLevel::ALL)->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT)->setVisitorSessionId("visitorSessionId")->setFlagshipInstanceId("flagshipInstanceId")->setVisitorId($visitorId)->setTraffic(100); $strategy->addTroubleshootingHit($troubleshooting); $strategy->addTroubleshootingHit($troubleshooting2); @@ -1310,42 +1381,37 @@ public function testSendTroubleshootingQueueFailed() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["isTroubleshootingActivated", "logErrorSprintf"] + [ + "isTroubleshootingActivated", + "logErrorSprintf", + ] ); - $strategy->expects($this->exactly(2)) - ->method("isTroubleshootingActivated") - ->willReturn(true); + $strategy->expects($this->exactly(2))->method("isTroubleshootingActivated")->willReturn(true); - $strategy->expects($this->exactly(1)) - ->method("logErrorSprintf"); + $strategy->expects($this->exactly(1))->method("logErrorSprintf"); $exception = new Exception("Error"); - $httpClientMock->expects($this->exactly(1)) - ->method('post')->willThrowException($exception); + $httpClientMock->expects($this->exactly(1))->method('post')->willThrowException($exception); $startDatetime = new DateTime("2023-04-13T09:33:38.049Z"); $endDatetime = new DateTime("2023-04-13T10:03:38.049Z"); $troubleshootingData = new TroubleshootingData(); - $troubleshootingData->setStartDate($startDatetime) - ->setEndDate($endDatetime)->setTraffic(100); + $troubleshootingData->setStartDate($startDatetime)->setEndDate($endDatetime)->setTraffic(100); $strategy->setTroubleshootingData($troubleshootingData); $troubleshooting = new Troubleshooting(); - $troubleshooting->setConfig($config) - ->setLogLevel(LogLevel::ALL) - ->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT) - ->setVisitorSessionId("visitorSessionId") - ->setFlagshipInstanceId("flagshipInstanceId") - ->setVisitorId($visitorId) - ->setTraffic(100); + $troubleshooting->setConfig($config)->setLogLevel(LogLevel::ALL)->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT)->setVisitorSessionId("visitorSessionId")->setFlagshipInstanceId("flagshipInstanceId")->setVisitorId($visitorId)->setTraffic(100); $strategy->addTroubleshootingHit($troubleshooting); @@ -1368,27 +1434,32 @@ public function testIsTroubleshootingActivated() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["logErrorSprintf", "getNow"] + [ + "logErrorSprintf", + "getNow", + ] ); //No troubleshooting data is given $check = $strategy->isTroubleshootingActivated(); $this->assertFalse($check); -// //Test troubleshooting data + // //Test troubleshooting data - $strategy->expects($this->exactly(3))->method("getNow") - ->willReturnOnConsecutiveCalls( - (new DateTime("2023-04-13T09:32:38.049Z"))->getTimestamp() * 1000, - (new DateTime("2023-04-13T10:03:39.049Z"))->getTimestamp() * 1000, - (new DateTime("2023-04-13T09:40:38.049Z"))->getTimestamp() * 1000 - ); -// + $strategy->expects($this->exactly(3))->method("getNow")->willReturnOnConsecutiveCalls( + (new DateTime("2023-04-13T09:32:38.049Z"))->getTimestamp() * 1000, + (new DateTime("2023-04-13T10:03:39.049Z"))->getTimestamp() * 1000, + (new DateTime("2023-04-13T09:40:38.049Z"))->getTimestamp() * 1000 + ); + // //Test troubleshooting not start $startDatetime = new DateTime("2023-04-13T09:33:38.049Z"); $troubleshootingData = new TroubleshootingData(); @@ -1401,8 +1472,7 @@ public function testIsTroubleshootingActivated() //Test troubleshooting is finished $endDatetime = new DateTime("2023-04-13T10:03:38.049Z"); $troubleshootingData = new TroubleshootingData(); - $troubleshootingData->setStartDate($startDatetime) - ->setEndDate($endDatetime); + $troubleshootingData->setStartDate($startDatetime)->setEndDate($endDatetime); $strategy->setTroubleshootingData($troubleshootingData); $check = $strategy->isTroubleshootingActivated(); @@ -1412,8 +1482,7 @@ public function testIsTroubleshootingActivated() $startDatetime = new DateTime("2023-04-13T09:33:38.049Z"); $endDatetime = new DateTime("2023-04-13T10:03:38.049Z"); $troubleshootingData = new TroubleshootingData(); - $troubleshootingData->setStartDate($startDatetime) - ->setEndDate($endDatetime); + $troubleshootingData->setStartDate($startDatetime)->setEndDate($endDatetime); $strategy->setTroubleshootingData($troubleshootingData); @@ -1426,6 +1495,9 @@ public function testAddUsageHit() $config = new DecisionApiConfig(); $visitorId = "visitorId"; + /** + * @var HttpClientInterface|MockObject $httpClientMock + */ $httpClientMock = $this->getMockForAbstractClass('Flagship\Utils\HttpClientInterface'); $strategy = new BatchingOnFailedCachingStrategy($config, $httpClientMock); @@ -1467,9 +1539,15 @@ public function testSendUsageHitQueue() $httpClientMock = $this->getMockForAbstractClass('Flagship\Utils\HttpClientInterface'); + /** + * @var BatchingOnFailedCachingStrategy|MockObject $strategy + */ $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, @@ -1503,14 +1581,13 @@ public function testSendUsageHitQueue() $strategy->addUsageHit($usageHit2); $matcher = $this->exactly(2); - $strategy->expects($matcher)->method('sendUsageHit') - ->with($this->callback(function ($hit) use ($matcher, $usageHit, $usageHit2) { - return match ($matcher->getInvocationCount()) { - 1 => $hit === $usageHit, - 2 => $hit === $usageHit2, - default => false, - }; - })); + $strategy->expects($matcher)->method('sendUsageHit')->with($this->callback(function ($hit) use ($matcher, $usageHit, $usageHit2) { + return match ($matcher->getInvocationCount()) { + 1 => $hit === $usageHit, + 2 => $hit === $usageHit2, + default => false, + }; + })); $strategy->sendUsageHitQueue(); $usageHitQueue = $strategy->getUsageHitQueue(); @@ -1535,9 +1612,15 @@ public function testSendUsageHit() ["post"] ); + /** + * @var BatchingOnFailedCachingStrategy|MockObject $strategy + */ $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, @@ -1548,18 +1631,15 @@ public function testSendUsageHit() $match = $this->exactly(1); - $httpClientMock->expects($match) - ->method('post') - ->with($this->callback(function ($url) use ($match) { - $troubleshootingUrl = FlagshipConstant::ANALYTICS_HIT_URL; - return $url === $troubleshootingUrl; - }), $this->callback(function () use ($match) { - return true; - })); + $httpClientMock->expects($match)->method('post')->with($this->callback(function ($url) use ($match) { + $troubleshootingUrl = FlagshipConstant::ANALYTICS_HIT_URL; + return $url === $troubleshootingUrl; + }), $this->callback(function () use ($match) { + return true; + })); $analytic = new UsageHit(); - $analytic - ->setLogLevel(LogLevel::ALL) + $analytic->setLogLevel(LogLevel::ALL) ->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT) ->setVisitorSessionId("visitorSessionId") ->setFlagshipInstanceId("flagshipInstanceId") @@ -1586,7 +1666,10 @@ public function testSendUsageHitFailed() $strategy = $this->getMockForAbstractClass( "Flagship\Api\BatchingOnFailedCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, @@ -1598,18 +1681,10 @@ public function testSendUsageHitFailed() $match = $this->exactly(1); $exception = new Exception("Error"); - $httpClientMock->expects($match) - ->method('post') - ->willThrowException($exception); + $httpClientMock->expects($match)->method('post')->willThrowException($exception); $analytic = new UsageHit(); - $analytic - ->setLogLevel(LogLevel::ALL) - ->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT) - ->setVisitorSessionId("visitorSessionId") - ->setFlagshipInstanceId("flagshipInstanceId") - ->setVisitorId($visitorId) - ->setConfig($config); + $analytic->setLogLevel(LogLevel::ALL)->setLabel(TroubleshootingLabel::VISITOR_SEND_HIT)->setVisitorSessionId("visitorSessionId")->setFlagshipInstanceId("flagshipInstanceId")->setVisitorId($visitorId)->setConfig($config); $strategy->sendUsageHit($analytic); } diff --git a/tests/Api/NoBatchingContinuousCachingStrategyTest.php b/tests/Api/NoBatchingContinuousCachingStrategyTest.php index ecd22bf5..17f1d350 100644 --- a/tests/Api/NoBatchingContinuousCachingStrategyTest.php +++ b/tests/Api/NoBatchingContinuousCachingStrategyTest.php @@ -29,12 +29,19 @@ public function testAddHit() $strategy = $this->getMockForAbstractClass( "Flagship\Api\NoBatchingContinuousCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["cacheHit","flushHits","logDebugSprintf"] + [ + "cacheHit", + "flushHits", + "logDebugSprintf", + ] ); $strategy->expects($this->never())->method("cacheHit"); @@ -58,24 +65,23 @@ public function testAddHit() $url = FlagshipConstant::HIT_EVENT_URL; - $httpClientMock->expects($this->exactly(3))->method("post") - ->with( - $this->logicalOr( - $url, - $url, - $url - ), - $this->logicalOr( - [], - [], - [] - ), - $this->logicalOr( - $requestBody, - $requestBody2, - $requestBody3 - ) - ); + $httpClientMock->expects($this->exactly(3))->method("post")->with( + $this->logicalOr( + $url, + $url, + $url + ), + $this->logicalOr( + [], + [], + [] + ), + $this->logicalOr( + $requestBody, + $requestBody2, + $requestBody3 + ) + ); $headers = [FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON]; @@ -105,29 +111,37 @@ public function testAddHit() 0 ); - $strategy->expects($this->exactly(3))->method("logDebugSprintf") - ->with( - $this->logicalOr( - $config, - $config, - $config - ), - $this->logicalOr( - FlagshipConstant::TRACKING_MANAGER, - FlagshipConstant::TRACKING_MANAGER, - FlagshipConstant::TRACKING_MANAGER - ), - $this->logicalOr( - FlagshipConstant::HIT_SENT_SUCCESS, - FlagshipConstant::HIT_SENT_SUCCESS, - FlagshipConstant::HIT_SENT_SUCCESS - ), - $this->logicalOr( - [FlagshipConstant::SEND_HIT, $logMessage ], - [FlagshipConstant::SEND_HIT, $logMessage1 ], - [FlagshipConstant::SEND_HIT, $logMessage2 ] - ) - ); + $strategy->expects($this->exactly(3))->method("logDebugSprintf")->with( + $this->logicalOr( + $config, + $config, + $config + ), + $this->logicalOr( + FlagshipConstant::TRACKING_MANAGER, + FlagshipConstant::TRACKING_MANAGER, + FlagshipConstant::TRACKING_MANAGER + ), + $this->logicalOr( + FlagshipConstant::HIT_SENT_SUCCESS, + FlagshipConstant::HIT_SENT_SUCCESS, + FlagshipConstant::HIT_SENT_SUCCESS + ), + $this->logicalOr( + [ + FlagshipConstant::SEND_HIT, + $logMessage, + ], + [ + FlagshipConstant::SEND_HIT, + $logMessage1, + ], + [ + FlagshipConstant::SEND_HIT, + $logMessage2, + ] + ) + ); $this->assertCount(0, $strategy->getHitsPoolQueue()); $this->assertCount(0, $strategy->getActivatePoolQueue()); @@ -151,12 +165,22 @@ public function testAddHitFailed() $strategy = $this->getMockForAbstractClass( "Flagship\Api\NoBatchingContinuousCachingStrategy", - [$config, $httpClientMock, "instanceId"], + [ + $config, + $httpClientMock, + "instanceId", + ], "", true, true, true, - ["cacheHit","flushHits","logErrorSprintf", "addTroubleshootingHit", "sendTroubleshootingQueue"] + [ + "cacheHit", + "flushHits", + "logErrorSprintf", + "addTroubleshootingHit", + "sendTroubleshootingQueue", + ] ); $strategy->expects($this->never())->method("flushHits"); @@ -172,12 +196,11 @@ public function testAddHitFailed() $exception = new Exception("error"); - $httpClientMock->expects($this->exactly(1))->method("post") - ->with( - $url, - [], - $requestBody - )->willThrowException($exception); + $httpClientMock->expects($this->exactly(1))->method("post")->with( + $url, + [], + $requestBody + )->willThrowException($exception); $headers = [FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON]; @@ -192,13 +215,15 @@ public function testAddHitFailed() 0 ); - $strategy->expects($this->once())->method("logErrorSprintf") - ->with( - $config, - FlagshipConstant::TRACKING_MANAGER, - FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, - [FlagshipConstant::SEND_HIT, $logMessage ] - ); + $strategy->expects($this->once())->method("logErrorSprintf")->with( + $config, + FlagshipConstant::TRACKING_MANAGER, + FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, + [ + FlagshipConstant::SEND_HIT, + $logMessage, + ] + ); $strategy->expects($this->once())->method("addTroubleshootingHit"); $strategy->expects($this->once())->method("sendTroubleshootingQueue"); @@ -222,12 +247,18 @@ public function testAddHitConsent() $strategy = $this->getMockForAbstractClass( "Flagship\Api\NoBatchingContinuousCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["cacheHit","flushHits"] + [ + "cacheHit", + "flushHits", + ] ); $strategy->expects($this->never())->method("cacheHit"); @@ -235,8 +266,7 @@ public function testAddHitConsent() $key1 = "$visitorId:key1"; $key2 = "$visitorId:key2"; - $strategy->expects($this->once()) - ->method("flushHits")->with([$page3Key]); + $strategy->expects($this->once())->method("flushHits")->with([$page3Key]); $page = new Page("http://localhost"); $page->setConfig($config)->setVisitorId($visitorId)->setKey($key1); @@ -248,18 +278,18 @@ public function testAddHitConsent() $strategy->hydrateHitsPoolQueue($key2, $page2); $contentPage3 = [ - 'pageUrl' => 'page1', - 'visitorId' => $visitorId, - 'ds' => 'APP', - 'type' => 'PAGEVIEW', - 'anonymousId' => null, - 'userIP' => null, - 'pageResolution' => null, - 'locale' => null, - 'sessionNumber' => null, - 'key' => $page3Key, - 'createdAt' => 1676542078047, - ]; + 'pageUrl' => 'page1', + 'visitorId' => $visitorId, + 'ds' => 'APP', + 'type' => 'PAGEVIEW', + 'anonymousId' => null, + 'userIP' => null, + 'pageResolution' => null, + 'locale' => null, + 'sessionNumber' => null, + 'key' => $page3Key, + 'createdAt' => 1676542078047, + ]; $page3 = HitAbstract::hydrate(Page::getClassName(), $contentPage3); @@ -276,12 +306,11 @@ public function testAddHitConsent() $url = FlagshipConstant::HIT_EVENT_URL; - $httpClientMock->expects($this->exactly(2))->method("post") - ->with( - $url, - [], - $requestBody3 - ); + $httpClientMock->expects($this->exactly(2))->method("post")->with( + $url, + [], + $requestBody3 + ); $headers = [FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON]; @@ -307,12 +336,19 @@ public function testActivateFlag() $strategy = $this->getMockForAbstractClass( "Flagship\Api\NoBatchingContinuousCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, true, true, - ["cacheHit","flushHits","logDebugSprintf"] + [ + "cacheHit", + "flushHits", + "logDebugSprintf", + ] ); $strategy->expects($this->never())->method("cacheHit"); @@ -333,21 +369,20 @@ public function testActivateFlag() $url = FlagshipConstant::BASE_API_URL . '/' . FlagshipConstant::URL_ACTIVATE_MODIFICATION; - $httpClientMock->expects($this->exactly(2))->method("post") - ->with( - $this->logicalOr( - $url, - $url - ), - $this->logicalOr( - [], - [] - ), - $this->logicalOr( - $requestBody, - $requestBody2 - ) - ); + $httpClientMock->expects($this->exactly(2))->method("post")->with( + $this->logicalOr( + $url, + $url + ), + $this->logicalOr( + [], + [] + ), + $this->logicalOr( + $requestBody, + $requestBody2 + ) + ); $headers = $strategy->getActivateHeaders(); @@ -369,25 +404,30 @@ public function testActivateFlag() 0 ); - $strategy->expects($this->exactly(2))->method("logDebugSprintf") - ->with( - $this->logicalOr( - $config, - $config - ), - $this->logicalOr( - FlagshipConstant::TRACKING_MANAGER, - FlagshipConstant::TRACKING_MANAGER - ), - $this->logicalOr( - FlagshipConstant::HIT_SENT_SUCCESS, - FlagshipConstant::HIT_SENT_SUCCESS - ), - $this->logicalOr( - [FlagshipConstant::SEND_ACTIVATE, $logMessage ], - [FlagshipConstant::SEND_ACTIVATE, $logMessage1 ] - ) - ); + $strategy->expects($this->exactly(2))->method("logDebugSprintf")->with( + $this->logicalOr( + $config, + $config + ), + $this->logicalOr( + FlagshipConstant::TRACKING_MANAGER, + FlagshipConstant::TRACKING_MANAGER + ), + $this->logicalOr( + FlagshipConstant::HIT_SENT_SUCCESS, + FlagshipConstant::HIT_SENT_SUCCESS + ), + $this->logicalOr( + [ + FlagshipConstant::SEND_ACTIVATE, + $logMessage, + ], + [ + FlagshipConstant::SEND_ACTIVATE, + $logMessage1, + ] + ) + ); $this->assertCount(0, $strategy->getHitsPoolQueue()); $this->assertCount(0, $strategy->getActivatePoolQueue()); @@ -408,12 +448,22 @@ public function testActivateFlagFailed() $strategy = $this->getMockForAbstractClass( "Flagship\Api\NoBatchingContinuousCachingStrategy", - [$config, $httpClientMock, "instanceId"], + [ + $config, + $httpClientMock, + "instanceId", + ], "", true, true, true, - ["cacheHit","flushHits","logErrorSprintf", "addTroubleshootingHit", "sendTroubleshootingQueue"] + [ + "cacheHit", + "flushHits", + "logErrorSprintf", + "addTroubleshootingHit", + "sendTroubleshootingQueue", + ] ); $strategy->expects($this->never())->method("flushHits"); @@ -430,12 +480,11 @@ public function testActivateFlagFailed() $exception = new Exception("error"); - $httpClientMock->expects($this->exactly(1))->method("post") - ->with( - $url, - [], - $requestBody - )->willThrowException($exception); + $httpClientMock->expects($this->exactly(1))->method("post")->with( + $url, + [], + $requestBody + )->willThrowException($exception); $headers = $strategy->getActivateHeaders(); @@ -450,13 +499,15 @@ public function testActivateFlagFailed() 0 ); - $strategy->expects($this->exactly(1))->method("logErrorSprintf") - ->with( - $config, - FlagshipConstant::TRACKING_MANAGER, - FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, - [FlagshipConstant::SEND_ACTIVATE, $logMessage ] - ); + $strategy->expects($this->exactly(1))->method("logErrorSprintf")->with( + $config, + FlagshipConstant::TRACKING_MANAGER, + FlagshipConstant::UNEXPECTED_ERROR_OCCURRED, + [ + FlagshipConstant::SEND_ACTIVATE, + $logMessage, + ] + ); $strategy->expects($this->once())->method("addTroubleshootingHit"); $strategy->expects($this->once())->method("sendTroubleshootingQueue"); @@ -478,7 +529,10 @@ public function testAddTroubleshootingHit() $strategy = $this->getMockForAbstractClass( "Flagship\Api\NoBatchingContinuousCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, false, @@ -503,7 +557,10 @@ public function testAddUsageHit() $strategy = $this->getMockForAbstractClass( "Flagship\Api\NoBatchingContinuousCachingStrategy", - [$config, $httpClientMock], + [ + $config, + $httpClientMock, + ], "", true, false, diff --git a/tests/Api/TrackingManagerTest.php b/tests/Api/TrackingManagerTest.php index 3173f547..b544cad1 100644 --- a/tests/Api/TrackingManagerTest.php +++ b/tests/Api/TrackingManagerTest.php @@ -65,60 +65,59 @@ public function testCommonMethod() $BatchingCachingStrategyMock = $this->getMockForAbstractClass( "Flagship\Api\BatchingCachingStrategyAbstract", - [$config, $httpClient], + [ + $config, + $httpClient, + ], "", true, true, true, [ - "addHit", - "activateFlag", - "sendBatch", - "sendTroubleshootingQueue", - "addTroubleshootingHit", - "setTroubleshootingData", - "getTroubleshootingData", - "addUsageHit" + "addHit", + "activateFlag", + "sendBatch", + "sendTroubleshootingQueue", + "addTroubleshootingHit", + "setTroubleshootingData", + "getTroubleshootingData", + "addUsageHit", ] ); $trackingManager = $this->getMockForAbstractClass( "Flagship\Api\TrackingManager", - [$config, $httpClient], + [ + $config, + $httpClient, + ], "", true, true, true, - ["getStrategy", "lookupHits"] + [ + "getStrategy", + "lookupHits", + ] ); - $trackingManager->expects($this->exactly(7)) - ->method("getStrategy") - ->willReturn($BatchingCachingStrategyMock); + $trackingManager->expects($this->exactly(7))->method("getStrategy")->willReturn($BatchingCachingStrategyMock); - $BatchingCachingStrategyMock->expects($this->once()) - ->method("addHit"); + $BatchingCachingStrategyMock->expects($this->once())->method("addHit"); - $BatchingCachingStrategyMock->expects($this->once()) - ->method("setTroubleshootingData"); + $BatchingCachingStrategyMock->expects($this->once())->method("setTroubleshootingData"); - $BatchingCachingStrategyMock->expects($this->once()) - ->method("getTroubleshootingData"); + $BatchingCachingStrategyMock->expects($this->once())->method("getTroubleshootingData"); - $BatchingCachingStrategyMock->expects($this->once()) - ->method("activateFlag"); + $BatchingCachingStrategyMock->expects($this->once())->method("activateFlag"); - $BatchingCachingStrategyMock->expects($this->once()) - ->method("addTroubleshootingHit"); + $BatchingCachingStrategyMock->expects($this->once())->method("addTroubleshootingHit"); - $BatchingCachingStrategyMock->expects($this->once()) - ->method("sendBatch"); + $BatchingCachingStrategyMock->expects($this->once())->method("sendBatch"); - $BatchingCachingStrategyMock->expects($this->once()) - ->method("sendTroubleshootingQueue"); + $BatchingCachingStrategyMock->expects($this->once())->method("sendTroubleshootingQueue"); - $BatchingCachingStrategyMock->expects($this->once()) - ->method("addUsageHit"); + $BatchingCachingStrategyMock->expects($this->once())->method("addUsageHit"); $page = new Page("http://localhost"); $page->setConfig($config); @@ -151,12 +150,18 @@ public function testLookupHits() $trackingManager = $this->getMockForAbstractClass( "Flagship\Api\TrackingManager", - [$config, $httpClient], + [ + $config, + $httpClient, + ], "", true, true, true, - ["logDebugSprintf","logErrorSprintf"] + [ + "logDebugSprintf", + "logErrorSprintf", + ] ); $config->setHitCacheImplementation($hitCacheImplementationMock); @@ -187,59 +192,65 @@ public function testLookupHits() /** * @var $hits HitAbstract[] */ - $hits = [$event, $item, $page, $screen, $segment, $activate, $transaction]; + $hits = [ + $event, + $item, + $page, + $screen, + $segment, + $activate, + $transaction, + ]; $data = []; foreach ($hits as $hit) { $hitData = [ - HitCacheFields::VERSION => 1, - HitCacheFields::DATA => [ - HitCacheFields::VISITOR_ID => $hit->getVisitorId(), - HitCacheFields::ANONYMOUS_ID => $hit->getAnonymousId(), - HitCacheFields::TYPE => $hit->getType()->value, - HitCacheFields::CONTENT => $hit->toArray(), - HitCacheFields::TIME => \round(microtime(true) * 1000) - ] - ]; + HitCacheFields::VERSION => 1, + HitCacheFields::DATA => [ + HitCacheFields::VISITOR_ID => $hit->getVisitorId(), + HitCacheFields::ANONYMOUS_ID => $hit->getAnonymousId(), + HitCacheFields::TYPE => $hit->getType()->value, + HitCacheFields::CONTENT => $hit->toArray(), + HitCacheFields::TIME => \round(microtime(true) * 1000), + ], + ]; $data[$hit->getKey()] = $hitData; } $data["$visitorId:key8"] = [ - HitCacheFields::VERSION => 1, - HitCacheFields::DATA => [ - HitCacheFields::VISITOR_ID => $page->getVisitorId(), - HitCacheFields::ANONYMOUS_ID => $page->getAnonymousId(), - HitCacheFields::TYPE => $page->getType()->value, - HitCacheFields::CONTENT => $page->toArray(), - HitCacheFields::TIME => (new DateTime("2020/01/01"))->format("Uv") - ] - ]; + HitCacheFields::VERSION => 1, + HitCacheFields::DATA => [ + HitCacheFields::VISITOR_ID => $page->getVisitorId(), + HitCacheFields::ANONYMOUS_ID => $page->getAnonymousId(), + HitCacheFields::TYPE => $page->getType()->value, + HitCacheFields::CONTENT => $page->toArray(), + HitCacheFields::TIME => (new DateTime("2020/01/01"))->format("Uv"), + ], + ]; $data["$visitorId:key9"] = [ - HitCacheFields::VERSION => 1, - HitCacheFields::DATA => [ - HitCacheFields::VISITOR_ID => $page->getVisitorId(), - HitCacheFields::ANONYMOUS_ID => $page->getAnonymousId(), - HitCacheFields::TYPE => "unknown", - HitCacheFields::CONTENT => $page->toArray(), - HitCacheFields::TIME => \round(microtime(true) * 1000) - ] - ]; + HitCacheFields::VERSION => 1, + HitCacheFields::DATA => [ + HitCacheFields::VISITOR_ID => $page->getVisitorId(), + HitCacheFields::ANONYMOUS_ID => $page->getAnonymousId(), + HitCacheFields::TYPE => "unknown", + HitCacheFields::CONTENT => $page->toArray(), + HitCacheFields::TIME => \round(microtime(true) * 1000), + ], + ]; $key10 = "$visitorId:key10"; $data[$key10] = [ - HitCacheFields::DATA => [ - HitCacheFields::VISITOR_ID => $page->getVisitorId(), - HitCacheFields::ANONYMOUS_ID => $page->getAnonymousId(), - HitCacheFields::TYPE => "unknown", - HitCacheFields::CONTENT => $page->toArray(), - HitCacheFields::TIME => \round(microtime(true) * 1000) - ] - ]; + HitCacheFields::DATA => [ + HitCacheFields::VISITOR_ID => $page->getVisitorId(), + HitCacheFields::ANONYMOUS_ID => $page->getAnonymousId(), + HitCacheFields::TYPE => "unknown", + HitCacheFields::CONTENT => $page->toArray(), + HitCacheFields::TIME => \round(microtime(true) * 1000), + ], + ]; - $hitCacheImplementationMock->expects($this->exactly(2)) - ->method("lookupHits") - ->willReturnOnConsecutiveCalls($data, []); + $hitCacheImplementationMock->expects($this->exactly(2))->method("lookupHits")->willReturnOnConsecutiveCalls($data, []); Round::$returnValue = \round(microtime(true) * 1000); @@ -262,7 +273,10 @@ public function testLookupHitsFailed() $trackingManager = $this->getMockForAbstractClass( "Flagship\Api\TrackingManager", - [$config, $httpClient], + [ + $config, + $httpClient, + ], "", true, true, @@ -274,18 +288,17 @@ public function testLookupHitsFailed() $exception = new Exception("error"); - $hitCacheImplementationMock->expects($this->exactly(1)) - ->method("lookupHits") - ->willThrowException($exception); - - $trackingManager->expects($this->once()) - ->method("logErrorSprintf") - ->with( - $config, - FlagshipConstant::PROCESS_CACHE, - FlagshipConstant::HIT_CACHE_ERROR, - ["lookupHits", $exception->getMessage()] - ); + $hitCacheImplementationMock->expects($this->exactly(1))->method("lookupHits")->willThrowException($exception); + + $trackingManager->expects($this->once())->method("logErrorSprintf")->with( + $config, + FlagshipConstant::PROCESS_CACHE, + FlagshipConstant::HIT_CACHE_ERROR, + [ + "lookupHits", + $exception->getMessage(), + ] + ); $trackingManager->lookupHits(); } diff --git a/tests/Assets/File.php b/tests/Assets/File.php index 0cf8e3e6..0d123d8e 100644 --- a/tests/Assets/File.php +++ b/tests/Assets/File.php @@ -40,7 +40,7 @@ function file_put_contents($filename, $data) function fwrite($stream, $data) { - File::$fwriteData = $data; + File::$fwriteData = $data; } function mkdir($directory, $permissions = 0777, $recursive = false) diff --git a/tests/Decision/ApiManagerTest.php b/tests/Decision/ApiManagerTest.php index 62fa6a11..622c2eba 100644 --- a/tests/Decision/ApiManagerTest.php +++ b/tests/Decision/ApiManagerTest.php @@ -57,73 +57,72 @@ public function testGetCampaignModifications() ); $modificationValue1 = [ - "background" => "bleu ciel", - "btnColor" => "#EE3300", - "borderColor" => null, //test modification null - 'isVip' => false, //test modification false - 'firstConnect' => true - ]; + "background" => "bleu ciel", + "btnColor" => "#EE3300", + "borderColor" => null, //test modification null + 'isVip' => false, //test modification false + 'firstConnect' => true, + ]; $modificationValue2 = [ - "key" => "variation 2", - "key2" => 1, - "key3" => 3, - "key4" => 4, - "key5" => '' //test modification empty - ]; + "key" => "variation 2", + "key2" => 1, + "key3" => 3, + "key4" => 4, + "key5" => '',//test modification empty + ]; $modificationValue3 = [ - 'key' => 'variation 3', - 'key2' => 3 - ]; + 'key' => 'variation 3', + 'key2' => 3, + ]; $mergeModification = array_merge($modificationValue1, $modificationValue2); $campaigns = [ - [ - "id" => "c1e3t1nvfu1ncqfcdco0", - "variationGroupId" => "c1e3t1nvfu1ncqfcdcp0", - "variation" => [ - "id" => "c1e3t1nvfu1ncqfcdcq0", - "modifications" => [ - "type" => "FLAG", - "value" => $modificationValue1 - ], - "reference" => false] - ], - [ - "id" => "c20j8bk3fk9hdphqtd1g", - "variationGroupId" => "c20j8bk3fk9hdphqtd2g", - "variation" => [ - "id" => "c20j9lgbcahhf2mvhbf0", - "modifications" => [ - "type" => "JSON", - "value" => $modificationValue2 - ], - "reference" => true - ] - ], - [ - "id" => "c20j8bksdfk9hdphqtd1g", - "variationGroupId" => "c2sf8bk3fk9hdphqtd2g", - "variation" => [ - "id" => "c20j9lrfcahhf2mvhbf0", - "modifications" => [ - "type" => "JSON", - "value" => $modificationValue3 - ], - "reference" => true - ] - ] - ]; + [ + "id" => "c1e3t1nvfu1ncqfcdco0", + "variationGroupId" => "c1e3t1nvfu1ncqfcdcp0", + "variation" => [ + "id" => "c1e3t1nvfu1ncqfcdcq0", + "modifications" => [ + "type" => "FLAG", + "value" => $modificationValue1, + ], + "reference" => false, + ], + ], + [ + "id" => "c20j8bk3fk9hdphqtd1g", + "variationGroupId" => "c20j8bk3fk9hdphqtd2g", + "variation" => [ + "id" => "c20j9lgbcahhf2mvhbf0", + "modifications" => [ + "type" => "JSON", + "value" => $modificationValue2, + ], + "reference" => true, + ], + ], + [ + "id" => "c20j8bksdfk9hdphqtd1g", + "variationGroupId" => "c2sf8bk3fk9hdphqtd2g", + "variation" => [ + "id" => "c20j9lrfcahhf2mvhbf0", + "modifications" => [ + "type" => "JSON", + "value" => $modificationValue3, + ], + "reference" => true, + ], + ], + ]; $visitorId = "visitorId"; $body = [ - "visitorId" => $visitorId, - "campaigns" => $campaigns - ]; + "visitorId" => $visitorId, + "campaigns" => $campaigns, + ]; - $httpPost = $httpClientMock->expects($this->exactly(2)) - ->method('post') - ->willReturn(new HttpResponse(204, $body)); + $httpPost = $httpClientMock->expects($this->exactly(2))->method('post')->willReturn(new HttpResponse(204, $body)); $config = new DecisionApiConfig("env_id", "apiKey"); $manager = new ApiManager($httpClientMock, $config); @@ -139,38 +138,37 @@ public function testGetCampaignModifications() $visitor = new VisitorDelegate(new Container(), $configManager, $visitorId, false, [], true); $postData = [ - "visitorId" => $visitor->getVisitorId(), - "anonymousId" => $visitor->getAnonymousId(), - "trigger_hit" => false, - "context" => count($visitor->getContext()) > 0 ? $visitor->getContext() : null, - "visitor_consent" => $visitor->hasConsented() - ]; + "visitorId" => $visitor->getVisitorId(), + "anonymousId" => $visitor->getAnonymousId(), + "trigger_hit" => false, + "context" => count($visitor->getContext()) > 0 ? $visitor->getContext() : null, + "visitor_consent" => $visitor->hasConsented(), + ]; $url = FlagshipConstant::BASE_API_URL . '/' . $config->getEnvId() . '/' . FlagshipConstant::URL_CAMPAIGNS . '?' . FlagshipConstant::EXPOSE_ALL_KEYS . '=true&extras[]=accountSettings'; - $httpPost - ->with( - $this->logicalOr( - $this->equalTo($url), - $this->equalTo($url) - ), - $this->logicalOr( - $this->equalTo([]), - $this->equalTo([]) - ), - $this->logicalOr( - $this->equalTo($postData), - $this->equalTo([ - "visitorId" => $visitor->getVisitorId(), - "anonymousId" => $visitor->getAnonymousId(), - "trigger_hit" => false, - "context" => count($visitor->getContext()) > 0 ? $visitor->getContext() : null, - "visitor_consent" => false - ]) - ) - ); + $httpPost->with( + $this->logicalOr( + $this->equalTo($url), + $this->equalTo($url) + ), + $this->logicalOr( + $this->equalTo([]), + $this->equalTo([]) + ), + $this->logicalOr( + $this->equalTo($postData), + $this->equalTo([ + "visitorId" => $visitor->getVisitorId(), + "anonymousId" => $visitor->getAnonymousId(), + "trigger_hit" => false, + "context" => count($visitor->getContext()) > 0 ? $visitor->getContext() : null, + "visitor_consent" => false, + ]) + ) + ); $modifications = $manager->getCampaignFlags($visitor); @@ -204,10 +202,10 @@ public function testGetCampaignModificationsWithPanicMode() $visitorId = "visitorId"; $body = [ - "visitorId" => $visitorId, - "campaigns" => [], - "panic" => true - ]; + "visitorId" => $visitorId, + "campaigns" => [], + "panic" => true, + ]; $httpClientMock->method('post')->willReturn(new HttpResponse(204, $body)); @@ -252,57 +250,58 @@ public function testGetCampaignModificationsWithSomeFailed() $httpClientMock = $this->getMockForAbstractClass('Flagship\Utils\HttpClientInterface', ['post'], "", false); $modificationValue = [ - "background" => "bleu ciel", - "btnColor" => "#EE3300", - "borderColor" => null, - 'isVip' => false, - 'firstConnect' => true, - '' => 'hello world' //Test with invalid key - ]; + "background" => "bleu ciel", + "btnColor" => "#EE3300", + "borderColor" => null, + 'isVip' => false, + 'firstConnect' => true, + '' => 'hello world',//Test with invalid key + ]; $campaigns = [ - [ - "id" => "c1e3t1nvfu1ncqfcdco0", - "variationGroupId" => "c1e3t1nvfu1ncqfcdcp0", - "variation" => [ - "id" => "c1e3t1nvfu1ncqfcdcq0", - "modifications" => [ //Test modification without Value + [ + "id" => "c1e3t1nvfu1ncqfcdco0", + "variationGroupId" => "c1e3t1nvfu1ncqfcdcp0", + "variation" => [ + "id" => "c1e3t1nvfu1ncqfcdcq0", + "modifications" => [ //Test modification without Value "type" => "FLAG", - ], - "reference" => false] - ], - [ - "id" => "c20j8bk3fk9hdphqtd1g", - "variationGroupId" => "c20j8bk3fk9hdphqtd2g", - "variation" => [ //Test Variation without modification - "id" => "c20j9lgbcahhf2mvhbf0", - "reference" => true - ] - ], - [ // Test Campaign without variation - "id" => "c20j8bksdfk9hdphqtd1g", - "variationGroupId" => "c2sf8bk3fk9hdphqtd2g", - - ], - [ - "id" => "c20j8bksdfk9hdphqtd1g", - "variationGroupId" => "c2sf8bk3fk9hdphqtd2g", - "variation" => [ - "id" => "c20j9lrfcahhf2mvhbf0", - "modifications" => [ - "type" => "JSON", - "value" => $modificationValue - ], - "reference" => true - ] - ] - ]; + ], + "reference" => false, + ], + ], + [ + "id" => "c20j8bk3fk9hdphqtd1g", + "variationGroupId" => "c20j8bk3fk9hdphqtd2g", + "variation" => [ //Test Variation without modification + "id" => "c20j9lgbcahhf2mvhbf0", + "reference" => true, + ], + ], + [ // Test Campaign without variation + "id" => "c20j8bksdfk9hdphqtd1g", + "variationGroupId" => "c2sf8bk3fk9hdphqtd2g", + + ], + [ + "id" => "c20j8bksdfk9hdphqtd1g", + "variationGroupId" => "c2sf8bk3fk9hdphqtd2g", + "variation" => [ + "id" => "c20j9lrfcahhf2mvhbf0", + "modifications" => [ + "type" => "JSON", + "value" => $modificationValue, + ], + "reference" => true, + ], + ], + ]; $visitorId = "visitorId"; $body = [ - "visitorId" => $visitorId, - "campaigns" => $campaigns - ]; + "visitorId" => $visitorId, + "campaigns" => $campaigns, + ]; $httpClientMock->method('post')->willReturn(new HttpResponse(204, $body)); @@ -349,8 +348,7 @@ public function testGetCampaignThrowException() //Mock method curl->post to throw Exception $errorMessage = "{'message': 'Forbidden'}"; - $httpClientMock->method('post') - ->willThrowException(new Exception($errorMessage, 403)); + $httpClientMock->method('post')->willThrowException(new Exception($errorMessage, 403)); $config = new DecisionApiConfig("env_id", "api_key"); @@ -373,10 +371,9 @@ public function testGetCampaignThrowException() $visitor = new VisitorDelegate(new Container(), $configManager, 'visitor_id', false, ['age' => 15], true); - $logManagerStub->expects($this->once())->method('error') - ->with( - $errorMessage - ); + $logManagerStub->expects($this->once())->method('error')->with( + $errorMessage + ); $value = $apiManager->getCampaigns($visitor); diff --git a/tests/Decision/BucketingManagerTest.php b/tests/Decision/BucketingManagerTest.php index e20fd50e..3b83f12c 100644 --- a/tests/Decision/BucketingManagerTest.php +++ b/tests/Decision/BucketingManagerTest.php @@ -37,32 +37,22 @@ public function testGetCampaignModification() $bucketingManager->setFlagshipInstanceId("flagship_instance_id"); $bucketingManager->setTrackingManager($trackingManagerMock); $visitorId = "visitor_1"; - $visitorContext = [ - "age" => 20 - ]; + $visitorContext = ["age" => 20]; $container = new Container(); - $configManager = $this->getMockBuilder(ConfigManager::class) - ->disableOriginalConstructor() - ->getMock(); + $configManager = $this->getMockBuilder(ConfigManager::class)->disableOriginalConstructor()->getMock(); $configManager->setConfig($config); - $visitor = $this->getMockBuilder(VisitorDelegate::class) - ->setConstructorArgs([$container, $configManager, $visitorId, false, $visitorContext, true]) - ->onlyMethods(["sendHit"]) - ->getMock(); + $visitor = $this->getMockBuilder(VisitorDelegate::class)->setConstructorArgs([$container, $configManager, $visitorId, false, $visitorContext, true])->onlyMethods(["sendHit"])->getMock(); $bucketingFile = \file_get_contents(__DIR__ . '/bucketing.json'); - $httpClientMock->expects($this->exactly(6)) - ->method('get') - ->with($bucketingUrl) - ->willReturnOnConsecutiveCalls( - new HttpResponse(204, null), - new HttpResponse(204, json_decode('{"panic": true}', true)), - new HttpResponse(204, json_decode('{}', true)), - new HttpResponse(204, json_decode('{"campaigns":[{}]}', true)), - new HttpResponse(204, json_decode('{"notExistKey": false}', true)), - new HttpResponse(204, json_decode($bucketingFile, true)) - ); + $httpClientMock->expects($this->exactly(6))->method('get')->with($bucketingUrl)->willReturnOnConsecutiveCalls( + new HttpResponse(204, null), + new HttpResponse(204, json_decode('{"panic": true}', true)), + new HttpResponse(204, json_decode('{}', true)), + new HttpResponse(204, json_decode('{"campaigns":[{}]}', true)), + new HttpResponse(204, json_decode('{"notExistKey": false}', true)), + new HttpResponse(204, json_decode($bucketingFile, true)) + ); //Test File not exist $campaigns = $bucketingManager->getCampaignFlags($visitor); @@ -120,44 +110,30 @@ public function testGetTroubleshootingData() $bucketingManager->setFlagshipInstanceId("flagship_instance_id"); $bucketingManager->setTrackingManager($trackingManagerMock); $visitorId = "visitor_1"; - $visitorContext = [ - "age" => 20 - ]; + $visitorContext = ["age" => 20]; $container = new Container(); - $configManager = $this->getMockBuilder(ConfigManager::class) - ->disableOriginalConstructor() - ->getMock(); + $configManager = $this->getMockBuilder(ConfigManager::class)->disableOriginalConstructor()->getMock(); - $visitor = $this->getMockBuilder(VisitorDelegate::class) - ->setConstructorArgs([$container, $configManager, $visitorId, false, $visitorContext, true]) - ->onlyMethods(["sendHit"]) - ->getMock(); + $visitor = $this->getMockBuilder(VisitorDelegate::class)->setConstructorArgs([$container, $configManager, $visitorId, false, $visitorContext, true])->onlyMethods(["sendHit"])->getMock(); $bucketingFile = \file_get_contents(__DIR__ . '/bucketing.json'); $bucketingContent = json_decode($bucketingFile, true); $troubleshooting = [ - "startDate" => "2023-04-13T09:33:38.049Z", - "endDate" => "2023-04-13T10:03:38.049Z", - "timezone" => "Europe/Paris", - "traffic" => 40 - ]; - $bucketingContent["accountSettings"] = [ - "troubleshooting" => $troubleshooting - ]; + "startDate" => "2023-04-13T09:33:38.049Z", + "endDate" => "2023-04-13T10:03:38.049Z", + "timezone" => "Europe/Paris", + "traffic" => 40, + ]; + $bucketingContent["accountSettings"] = ["troubleshooting" => $troubleshooting]; $matcher = $this->exactly(1); - $trackingManagerMock->expects($matcher) - ->method('addTroubleshootingHit') - ->with($this->callback(function ($param) use ($matcher) { + $trackingManagerMock->expects($matcher)->method('addTroubleshootingHit')->with($this->callback(function ($param) use ($matcher) { return $param->getLabel() === TroubleshootingLabel::SDK_BUCKETING_FILE; - })); + })); - $httpClientMock->expects($this->exactly(1)) - ->method('get') - ->with($bucketingUrl) - ->willReturnOnConsecutiveCalls( - new HttpResponse(204, $bucketingContent) - ); + $httpClientMock->expects($this->exactly(1))->method('get')->with($bucketingUrl)->willReturnOnConsecutiveCalls( + new HttpResponse(204, $bucketingContent) + ); $bucketingManager->getCampaignFlags($visitor); @@ -181,7 +157,10 @@ public function testSendContext() $httpClientMock = $this->getMockForAbstractClass( 'Flagship\Utils\HttpClientInterface', - ['post', 'get'], + [ + 'post', + 'get', + ], "", false ); @@ -210,13 +189,13 @@ public function testSendContext() $visitorId = "visitor_1"; $visitorContext = [ - "age" => 20, - "sdk_osName" => PHP_OS, - "sdk_deviceType" => "server", - FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, - FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::FS_USERS => $visitorId, - ]; + "age" => 20, + "sdk_osName" => PHP_OS, + "sdk_deviceType" => "server", + FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, + FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, + FlagshipConstant::FS_USERS => $visitorId, + ]; $bucketingUrl = "http:127.0.0.1:3000"; @@ -282,9 +261,7 @@ public function testGetVariation() $visitorId = "123456"; $container = new Container(); - $configManager = $this->getMockBuilder(ConfigManager::class) - ->disableOriginalConstructor() - ->getMock(); + $configManager = $this->getMockBuilder(ConfigManager::class)->disableOriginalConstructor()->getMock(); $configManager->setConfig($config); $visitor = new VisitorDelegate($container, $configManager, $visitorId, false, [], true); @@ -297,53 +274,47 @@ public function testGetVariation() //Test key id in variationGroup $variations = [ - [ - "id" => "c20j8bk3fk9hdphqtd30", - "name" => "variation1", - "modifications" => [ - "type" => "HTML", - "value" => [ - "my_html" => "
\n

Original

\n
" - ] - ], - "allocation" => 34, - "reference" => true - ], - [ - "id" => "c20j8bk3fk9hdphqtd3g", - "name" => "variation2", - "modifications" => [ - "type" => "HTML", - "value" => [ - "my_html" => "
\n

variation 1

\n
" - ] - ], - "allocation" => 33 - ], - [ - "id" => "c20j9lgbcahhf2mvhbf0", - "name" => "variation3", - "modifications" => [ - "type" => "HTML", - "value" => [ - "my_html" => "
\n

variation 2

\n
" - ] - ], - "allocation" => 33 - ] - ]; + [ + "id" => "c20j8bk3fk9hdphqtd30", + "name" => "variation1", + "modifications" => [ + "type" => "HTML", + "value" => ["my_html" => "
\n

Original

\n
"], + ], + "allocation" => 34, + "reference" => true, + ], + [ + "id" => "c20j8bk3fk9hdphqtd3g", + "name" => "variation2", + "modifications" => [ + "type" => "HTML", + "value" => ["my_html" => "
\n

variation 1

\n
"], + ], + "allocation" => 33, + ], + [ + "id" => "c20j9lgbcahhf2mvhbf0", + "name" => "variation3", + "modifications" => [ + "type" => "HTML", + "value" => ["my_html" => "
\n

variation 2

\n
"], + ], + "allocation" => 33, + ], + ]; $variationGroups = [ - FlagshipField::FIELD_ID => "9273BKSDJtoto", - FlagshipField::FIELD_VARIATIONS => $variations, - FlagshipField::FIELD_NANE => "varGroupName" - ]; + FlagshipField::FIELD_ID => "9273BKSDJtoto", + FlagshipField::FIELD_VARIATIONS => $variations, + FlagshipField::FIELD_NANE => "varGroupName", + ]; $variation = $getVariationMethod->invoke($bucketingManager, $variationGroups, $visitor); $this->assertSame($variations[0]['id'], $variation['id']); $variationGroups = [ - FlagshipField::FIELD_ID => "vgidéééà", - FlagshipField::FIELD_VARIATIONS => $variations - ]; + FlagshipField::FIELD_ID => "vgidéééà", + FlagshipField::FIELD_VARIATIONS => $variations, + ]; $visitorId = 'ëééééé'; $visitor->setVisitorId($visitorId); $variation = $getVariationMethod->invoke($bucketingManager, $variationGroups, $visitor); @@ -351,54 +322,46 @@ public function testGetVariation() //Test realloc $realloCvariations = [ - [ - "id" => "c20j8bk3fk9hdphqtd30", - "name" => "variation1", - "modifications" => [ - "type" => "HTML", - "value" => [ - "my_html" => "
\n

Original

\n
" - ] - ], - "allocation" => 100, - "reference" => true - ], - [ - "id" => "c20j8bk3fk9hdphqtd3g", - "name" => "variation2", - "modifications" => [ - "type" => "HTML", - "value" => [ - "my_html" => "
\n

variation 1

\n
" - ] - ], - "allocation" => 0 - ], - [ - "id" => "c20j9lgbcahhf2mvhbf0", - "name" => "variation2", - "modifications" => [ - "type" => "HTML", - "value" => [ - "my_html" => "
\n

variation 2

\n
" - ] - ], - "allocation" => 0 - ] - ]; + [ + "id" => "c20j8bk3fk9hdphqtd30", + "name" => "variation1", + "modifications" => [ + "type" => "HTML", + "value" => ["my_html" => "
\n

Original

\n
"], + ], + "allocation" => 100, + "reference" => true, + ], + [ + "id" => "c20j8bk3fk9hdphqtd3g", + "name" => "variation2", + "modifications" => [ + "type" => "HTML", + "value" => ["my_html" => "
\n

variation 1

\n
"], + ], + "allocation" => 0, + ], + [ + "id" => "c20j9lgbcahhf2mvhbf0", + "name" => "variation2", + "modifications" => [ + "type" => "HTML", + "value" => ["my_html" => "
\n

variation 2

\n
"], + ], + "allocation" => 0, + ], + ]; $variationGroups = [ - FlagshipField::FIELD_ID => "9273BKSDJtoto", - FlagshipField::FIELD_VARIATIONS => $realloCvariations - ]; + FlagshipField::FIELD_ID => "9273BKSDJtoto", + FlagshipField::FIELD_VARIATIONS => $realloCvariations, + ]; $assignmentsHistory = ["9273BKSDJtoto" => "c20j9lgbcahhf2mvhbf0"]; $visitorCache = [ - StrategyAbstract::VERSION => 1, - StrategyAbstract::DATA => [ - StrategyAbstract::ASSIGNMENTS_HISTORY => $assignmentsHistory - ] - ]; + StrategyAbstract::VERSION => 1, + StrategyAbstract::DATA => [StrategyAbstract::ASSIGNMENTS_HISTORY => $assignmentsHistory], + ]; $visitor->visitorCache = $visitorCache; @@ -409,34 +372,30 @@ public function testGetVariation() //Test deleted variation $reallovariations = [ - [ - "id" => "c20j8bk3fk9hdphqtd30", - "modifications" => [ - "type" => "HTML", - "value" => [ - "my_html" => "
\n

Original

\n
" - ] - ], - "allocation" => 50, - "reference" => true - ], - [ - "id" => "c20j8bk3fk9hdphqtd3g", - "modifications" => [ - "type" => "HTML", - "value" => [ - "my_html" => "
\n

variation 1

\n
" - ] - ], - "allocation" => 50 - ] - ]; + [ + "id" => "c20j8bk3fk9hdphqtd30", + "modifications" => [ + "type" => "HTML", + "value" => ["my_html" => "
\n

Original

\n
"], + ], + "allocation" => 50, + "reference" => true, + ], + [ + "id" => "c20j8bk3fk9hdphqtd3g", + "modifications" => [ + "type" => "HTML", + "value" => ["my_html" => "
\n

variation 1

\n
"], + ], + "allocation" => 50, + ], + ]; $variationGroups = [ - FlagshipField::FIELD_ID => "9273BKSDJtoto", - FlagshipField::FIELD_VARIATIONS => $reallovariations - ]; + FlagshipField::FIELD_ID => "9273BKSDJtoto", + FlagshipField::FIELD_VARIATIONS => $reallovariations, + ]; $visitor->visitorCache = $visitorCache; @@ -515,13 +474,9 @@ public function testIsMatchTargeting() $config = new BucketingConfig($bucketingUrl); $bucketingManager = new BucketingManager(new HttpClient(), $config, $murmurhash); $visitorId = "visitor_3"; - $visitorContext = [ - "age" => 20 - ]; + $visitorContext = ["age" => 20]; $container = new Container(); - $configManager = $this->getMockBuilder(ConfigManager::class) - ->disableOriginalConstructor() - ->getMock(); + $configManager = $this->getMockBuilder(ConfigManager::class)->disableOriginalConstructor()->getMock(); $configManager->setConfig($config); $visitor = new VisitorDelegate($container, $configManager, $visitorId, false, $visitorContext, true); @@ -542,33 +497,31 @@ public function testIsMatchTargeting() //Test key targetings in targetingGroups $variationGroup = [ - FlagshipField::FIELD_TARGETING => [ - FlagshipField::FIELD_TARGETING_GROUPS => [ - [] - ] - ] - ]; + FlagshipField::FIELD_TARGETING => [ + FlagshipField::FIELD_TARGETING_GROUPS => [ + [], + ], + ], + ]; $output = $isMatchTargetingMethod->invoke($bucketingManager, $variationGroup, $visitor); $this->assertFalse($output); //Test not matching targetings $targetings = [ - "key" => "age", - "operator" => "EQUALS", - 'value' => 21 - ]; + "key" => "age", + "operator" => "EQUALS", + 'value' => 21, + ]; $variationGroup = [ - FlagshipField::FIELD_TARGETING => [ - FlagshipField::FIELD_TARGETING_GROUPS => [ - [ - FlagshipField::FIELD_TARGETINGS => [ - $targetings - ] - ] - ] - ] - ]; + FlagshipField::FIELD_TARGETING => [ + FlagshipField::FIELD_TARGETING_GROUPS => [ + [ + FlagshipField::FIELD_TARGETINGS => [$targetings], + ], + ], + ], + ]; $output = $isMatchTargetingMethod->invoke($bucketingManager, $variationGroup, $visitor); $this->assertFalse($output); @@ -576,22 +529,20 @@ public function testIsMatchTargeting() //Test matching targetings $targetings2 = [ - "key" => "age", - "operator" => "EQUALS", - 'value' => 20 - ]; + "key" => "age", + "operator" => "EQUALS", + 'value' => 20, + ]; $variationGroup = [ - FlagshipField::FIELD_TARGETING => [ - FlagshipField::FIELD_TARGETING_GROUPS => [ - [ - FlagshipField::FIELD_TARGETINGS => [ - $targetings2 - ] - ] - ] - ] - ]; + FlagshipField::FIELD_TARGETING => [ + FlagshipField::FIELD_TARGETING_GROUPS => [ + [ + FlagshipField::FIELD_TARGETINGS => [$targetings2], + ], + ], + ], + ]; $output = $isMatchTargetingMethod->invoke($bucketingManager, $variationGroup, $visitor); $this->assertTrue($output); @@ -600,38 +551,32 @@ public function testIsMatchTargeting() //Test Many targetingGroups with one match $targetings2 = [ - "key" => "age", - "operator" => "EQUALS", - 'value' => 22 - ]; + "key" => "age", + "operator" => "EQUALS", + 'value' => 22, + ]; $targetingAllUsers = [ - "key" => "fs_all_users", - "operator" => "EQUALS", - 'value' => '' - ]; + "key" => "fs_all_users", + "operator" => "EQUALS", + 'value' => '', + ]; $variationGroup = [ - FlagshipField::FIELD_TARGETING => [ - FlagshipField::FIELD_TARGETING_GROUPS => [ - [ - FlagshipField::FIELD_TARGETINGS => [ - $targetings - ] - ], - [ - FlagshipField::FIELD_TARGETINGS => [ - $targetings2 - ] - ], - [ - FlagshipField::FIELD_TARGETINGS => [ - $targetingAllUsers - ] - ] - ] - ] - ]; + FlagshipField::FIELD_TARGETING => [ + FlagshipField::FIELD_TARGETING_GROUPS => [ + [ + FlagshipField::FIELD_TARGETINGS => [$targetings], + ], + [ + FlagshipField::FIELD_TARGETINGS => [$targetings2], + ], + [ + FlagshipField::FIELD_TARGETINGS => [$targetingAllUsers], + ], + ], + ], + ]; $output = $isMatchTargetingMethod->invoke($bucketingManager, $variationGroup, $visitor); $this->assertTrue($output); @@ -639,26 +584,20 @@ public function testIsMatchTargeting() //Test Many targetingGroups with all false $variationGroup = [ - FlagshipField::FIELD_TARGETING => [ - FlagshipField::FIELD_TARGETING_GROUPS => [ - [ - FlagshipField::FIELD_TARGETINGS => [ - $targetings - ] - ], - [ - FlagshipField::FIELD_TARGETINGS => [ - $targetings2 - ] - ], - [ - FlagshipField::FIELD_TARGETINGS => [ - $targetings2 - ] - ] - ] - ] - ]; + FlagshipField::FIELD_TARGETING => [ + FlagshipField::FIELD_TARGETING_GROUPS => [ + [ + FlagshipField::FIELD_TARGETINGS => [$targetings], + ], + [ + FlagshipField::FIELD_TARGETINGS => [$targetings2], + ], + [ + FlagshipField::FIELD_TARGETINGS => [$targetings2], + ], + ], + ], + ]; $output = $isMatchTargetingMethod->invoke($bucketingManager, $variationGroup, $visitor); $this->assertFalse($output); @@ -674,13 +613,9 @@ public function testCheckAndTargeting() $config = new BucketingConfig($bucketingUrl); $bucketingManager = new BucketingManager(new HttpClient(), $config, $murmurhash); $visitorId = "visitor_3"; - $visitorContext = [ - "age" => 20 - ]; + $visitorContext = ["age" => 20]; $container = new Container(); - $configManager = $this->getMockBuilder(ConfigManager::class) - ->disableOriginalConstructor() - ->getMock(); + $configManager = $this->getMockBuilder(ConfigManager::class)->disableOriginalConstructor()->getMock(); $configManager->setConfig($config); $visitor = new VisitorDelegate($container, $configManager, $visitorId, false, $visitorContext, true); @@ -688,10 +623,10 @@ public function testCheckAndTargeting() //test key = fs_all_users $targetingAllUsers = [ - "key" => "fs_all_users", - "operator" => "EQUALS", - 'value' => '' - ]; + "key" => "fs_all_users", + "operator" => "EQUALS", + 'value' => '', + ]; $innerTargetings = [$targetingAllUsers]; $output = $checkAndTargetingMethod->invoke($bucketingManager, $innerTargetings, $visitor); @@ -748,10 +683,10 @@ public function testCheckAndTargeting() //test key = fs_users $targetingFsUsers = [ - "key" => "fs_users", - "operator" => "EQUALS", - 'value' => $visitorId - ]; + "key" => "fs_users", + "operator" => "EQUALS", + 'value' => $visitorId, + ]; $innerTargetings = [$targetingFsUsers]; $output = $checkAndTargetingMethod->invoke($bucketingManager, $innerTargetings, $visitor); @@ -759,10 +694,10 @@ public function testCheckAndTargeting() //test key not match context $targetingKeyContext = [ - "key" => "anyKey", - "operator" => "EQUALS", - 'value' => "anyValue" - ]; + "key" => "anyKey", + "operator" => "EQUALS", + 'value' => "anyValue", + ]; $innerTargetings = [$targetingKeyContext]; $output = $checkAndTargetingMethod->invoke($bucketingManager, $innerTargetings, $visitor); @@ -770,10 +705,10 @@ public function testCheckAndTargeting() //test key match context $targetingKeyContext = [ - "key" => "age", - "operator" => "EQUALS", - 'value' => 20 - ]; + "key" => "age", + "operator" => "EQUALS", + 'value' => 20, + ]; $innerTargetings = [$targetingKeyContext]; $output = $checkAndTargetingMethod->invoke($bucketingManager, $innerTargetings, $visitor); @@ -781,10 +716,10 @@ public function testCheckAndTargeting() //test key match context with different value $targetingKeyContext2 = [ - "key" => "age", - "operator" => "EQUALS", - 'value' => 21 - ]; + "key" => "age", + "operator" => "EQUALS", + 'value' => 21, + ]; $innerTargetings = [$targetingKeyContext2]; $output = $checkAndTargetingMethod->invoke($bucketingManager, $innerTargetings, $visitor); @@ -792,12 +727,20 @@ public function testCheckAndTargeting() //And logic //All true - $innerTargetings = [$targetingAllUsers, $targetingFsUsers, $targetingKeyContext]; + $innerTargetings = [ + $targetingAllUsers, + $targetingFsUsers, + $targetingKeyContext, + ]; $output = $checkAndTargetingMethod->invoke($bucketingManager, $innerTargetings, $visitor); $this->assertTrue($output); //Test one false - $innerTargetings = [$targetingAllUsers, $targetingFsUsers, $targetingKeyContext2]; + $innerTargetings = [ + $targetingAllUsers, + $targetingFsUsers, + $targetingKeyContext2, + ]; $output = $checkAndTargetingMethod->invoke($bucketingManager, $innerTargetings, $visitor); $this->assertFalse($output); } @@ -812,9 +755,7 @@ public function testOperator() $config = new BucketingConfig($bucketingUrl); $bucketingManager = new BucketingManager(new HttpClient(), $config, $murmurhash); - $configManager = $this->getMockBuilder(ConfigManager::class) - ->disableOriginalConstructor() - ->getMock(); + $configManager = $this->getMockBuilder(ConfigManager::class)->disableOriginalConstructor()->getMock(); $configManager->setConfig($config); $testOperatorMethod = Utils::getMethod(BucketingManager::class, "testOperator"); @@ -877,19 +818,34 @@ public function testOperator() //Test contextValue not contains targetingValue - $targetingValue = [8, 7, 4, 1]; + $targetingValue = [ + 8, + 7, + 4, + 1, + ]; $output = $testOperatorMethod->invoke($bucketingManager, 'CONTAINS', $contextValue, $targetingValue); $this->assertFalse($output); //Test contextValue contains targetingValue - $targetingValue = [8, 7, 5, 1]; + $targetingValue = [ + 8, + 7, + 5, + 1, + ]; $output = $testOperatorMethod->invoke($bucketingManager, 'CONTAINS', $contextValue, $targetingValue); $this->assertTrue($output); //Test contextValue contains targetingValue $contextValue = "nopq_hij"; - $targetingValue = ["abc", "dfg", "hij", "klm"]; + $targetingValue = [ + "abc", + "dfg", + "hij", + "klm", + ]; $output = $testOperatorMethod->invoke($bucketingManager, 'CONTAINS', $contextValue, $targetingValue); $this->assertTrue($output); @@ -909,19 +865,34 @@ public function testOperator() //Test contextValue not contains targetingValue $contextValue = 5; - $targetingValue = [8, 7, 4, 1]; + $targetingValue = [ + 8, + 7, + 4, + 1, + ]; $output = $testOperatorMethod->invoke($bucketingManager, 'NOT_CONTAINS', $contextValue, $targetingValue); $this->assertTrue($output); //Test contextValue contains targetingValue - $targetingValue = [8, 7, 5, 1]; + $targetingValue = [ + 8, + 7, + 5, + 1, + ]; $output = $testOperatorMethod->invoke($bucketingManager, 'NOT_CONTAINS', $contextValue, $targetingValue); $this->assertFalse($output); //Test contextValue contains targetingValue $contextValue = "nopq_hij"; - $targetingValue = ["abc", "dfg", "hij", "klm"]; + $targetingValue = [ + "abc", + "dfg", + "hij", + "klm", + ]; $output = $testOperatorMethod->invoke($bucketingManager, 'NOT_CONTAINS', $contextValue, $targetingValue); $this->assertFalse($output); @@ -1134,7 +1105,10 @@ public function testGetThirdPartySegment() false, false, true, - ['post', 'get'] + [ + 'post', + 'get', + ] ); $logManagerStub = $this->getMockForAbstractClass( @@ -1152,89 +1126,77 @@ public function testGetThirdPartySegment() $bucketingUrl = "127.0.0.1:3000"; $murmurhash = new MurmurHash(); $config = new BucketingConfig($bucketingUrl); - $config->setEnvId("env_id") - ->setFetchThirdPartyData(true) - ->setLogManager($logManagerStub); + $config->setEnvId("env_id")->setFetchThirdPartyData(true)->setLogManager($logManagerStub); $bucketingManager = new BucketingManager($httpClientMock, $config, $murmurhash); $bucketingManager->setFlagshipInstanceId("instance_id"); $bucketingManager->setTrackingManager($trackingManagerMock); $visitorId = "visitor_1"; - $visitorContext = [ - "age" => 20 - ]; + $visitorContext = ["age" => 20]; $container = new Container(); - $configManager = $this->getMockBuilder(ConfigManager::class) - ->disableOriginalConstructor() - ->getMock(); + $configManager = $this->getMockBuilder(ConfigManager::class)->disableOriginalConstructor()->getMock(); $configManager->setConfig($config); - $visitor = $this->getMockBuilder(VisitorDelegate::class) - ->setConstructorArgs([$container, $configManager, $visitorId, false, $visitorContext, true]) - ->onlyMethods(["sendHit"]) - ->getMock(); + $visitor = $this->getMockBuilder(VisitorDelegate::class)->setConstructorArgs([$container, $configManager, $visitorId, false, $visitorContext, true])->onlyMethods(["sendHit"])->getMock(); $segments = [ - [ - 'visitor_id' => 'wonderful_visitor_1', - 'segment' => 'gender', - 'value' => '', - 'expiration' => 1689771307, - 'partner' => 'facebook', - ], - [ - 'visitor_id' => 'wonderful_visitor_1', - 'segment' => 'generation', - 'value' => '', - 'expiration' => 1689771307, - 'partner' => 'facebook', - ], - [ - 'visitor_id' => 'wonderful_visitor_1', - 'segment' => 'city', - 'value' => 'london', - 'expiration' => 1689771117, - 'partner' => 'mixpanel', - ], - [ - 'visitor_id' => 'wonderful_visitor_1', - 'segment' => 'device', - 'value' => 'firefox', - 'expiration' => 1689771117, - 'partner' => 'mixpanel', - ], - [ - 'visitor_id' => 'wonderful_visitor_1', - 'segment' => 'gender', - 'value' => 'female', - 'expiration' => 1689771007, - 'partner' => 'segmentio', - ], - [ - 'visitor_id' => 'wonderful_visitor_1', - 'segment' => 'generation', - 'value' => 'gen-z', - 'expiration' => 1689771007, - 'partner' => 'segmentio', - ], - ]; + [ + 'visitor_id' => 'wonderful_visitor_1', + 'segment' => 'gender', + 'value' => '', + 'expiration' => 1689771307, + 'partner' => 'facebook', + ], + [ + 'visitor_id' => 'wonderful_visitor_1', + 'segment' => 'generation', + 'value' => '', + 'expiration' => 1689771307, + 'partner' => 'facebook', + ], + [ + 'visitor_id' => 'wonderful_visitor_1', + 'segment' => 'city', + 'value' => 'london', + 'expiration' => 1689771117, + 'partner' => 'mixpanel', + ], + [ + 'visitor_id' => 'wonderful_visitor_1', + 'segment' => 'device', + 'value' => 'firefox', + 'expiration' => 1689771117, + 'partner' => 'mixpanel', + ], + [ + 'visitor_id' => 'wonderful_visitor_1', + 'segment' => 'gender', + 'value' => 'female', + 'expiration' => 1689771007, + 'partner' => 'segmentio', + ], + [ + 'visitor_id' => 'wonderful_visitor_1', + 'segment' => 'generation', + 'value' => 'gen-z', + 'expiration' => 1689771007, + 'partner' => 'segmentio', + ], + ]; $segmentUrl = sprintf(FlagshipConstant::THIRD_PARTY_SEGMENT_URL, $config->getEnvId(), $visitorId); $campaigns = ["campaigns" => []]; $matcher = $this->exactly(2); - $httpClientMock->expects($matcher) - ->method("get") - ->with( - $this->logicalOr( - $this->equalTo($bucketingUrl), - $this->equalTo($segmentUrl) - ), - $this->equalTo([]) - ) - ->willReturnOnConsecutiveCalls(new HttpResponse(200, $campaigns, []), new HttpResponse(200, $segments, [])); + $httpClientMock->expects($matcher)->method("get")->with( + $this->logicalOr( + $this->equalTo($bucketingUrl), + $this->equalTo($segmentUrl) + ), + $this->equalTo([]) + )->willReturnOnConsecutiveCalls(new HttpResponse(200, $campaigns, []), new HttpResponse(200, $segments, [])); $bucketingManager->getCampaigns($visitor); $context = $visitor->getContext(); @@ -1255,7 +1217,10 @@ public function testGetThirdPartySegmentException() false, false, true, - ['post', 'get'] + [ + 'post', + 'get', + ] ); $logManagerStub = $this->getMockForAbstractClass( @@ -1273,47 +1238,36 @@ public function testGetThirdPartySegmentException() $bucketingUrl = "127.0.0.1:3000"; $murmurhash = new MurmurHash(); $config = new BucketingConfig($bucketingUrl); - $config->setEnvId("env_id") - ->setFetchThirdPartyData(true); + $config->setEnvId("env_id")->setFetchThirdPartyData(true); $bucketingManager = new BucketingManager($httpClientMock, $config, $murmurhash); $bucketingManager->setTrackingManager($trackingManagerMock); $bucketingManager->setFlagshipInstanceId("instance_id"); $visitorId = "visitor_1"; - $visitorContext = [ - "age" => 20 - ]; + $visitorContext = ["age" => 20]; $container = new Container(); - $configManager = $this->getMockBuilder(ConfigManager::class) - ->disableOriginalConstructor() - ->getMock(); + $configManager = $this->getMockBuilder(ConfigManager::class)->disableOriginalConstructor()->getMock(); $configManager->setConfig($config); - $visitor = $this->getMockBuilder(VisitorDelegate::class) - ->setConstructorArgs([$container, $configManager, $visitorId, false, $visitorContext, true]) - ->onlyMethods(["sendHit"]) - ->getMock(); + $visitor = $this->getMockBuilder(VisitorDelegate::class)->setConstructorArgs([$container, $configManager, $visitorId, false, $visitorContext, true])->onlyMethods(["sendHit"])->getMock(); $segmentUrl = sprintf(FlagshipConstant::THIRD_PARTY_SEGMENT_URL, $config->getEnvId(), $visitorId); $campaigns = ["campaigns" => []]; $matcher = $this->exactly(2); - $httpClientMock->expects($matcher) - ->method("get") - ->with( - $this->logicalOr( - $this->equalTo($bucketingUrl), - $this->equalTo($segmentUrl) - ), - $this->equalTo([]) - ) - ->willReturnOnConsecutiveCalls( - new HttpResponse(200, $campaigns, []), - $this->throwException(new Exception("error")) - ); + $httpClientMock->expects($matcher)->method("get")->with( + $this->logicalOr( + $this->equalTo($bucketingUrl), + $this->equalTo($segmentUrl) + ), + $this->equalTo([]) + )->willReturnOnConsecutiveCalls( + new HttpResponse(200, $campaigns, []), + $this->throwException(new Exception("error")) + ); $config->setLogManager($logManagerStub); diff --git a/tests/Flag/FSFlagCollectionTest.php b/tests/Flag/FSFlagCollectionTest.php index bfcae826..ef08ac23 100644 --- a/tests/Flag/FSFlagCollectionTest.php +++ b/tests/Flag/FSFlagCollectionTest.php @@ -10,9 +10,7 @@ class FSFlagCollectionTest extends TestCase { public function testFlagCollection() { - $visitor = $this->getMockBuilder('Flagship\Visitor\VisitorAbstract') - ->disableOriginalConstructor() - ->getMock(); + $visitor = $this->getMockBuilder('Flagship\Visitor\VisitorAbstract')->disableOriginalConstructor()->getMock(); $visitor->method("getConfig")->willReturn(new DecisionApiConfig()); @@ -23,16 +21,7 @@ public function testFlagCollection() $key1 = "key1"; $key2 = "key2"; $flagDTO = new FlagDTO(); - $flagDTO->setIsReference(true) - ->setVariationId("variationId") - ->setVariationName("variationName") - ->setVariationGroupId('varGroupId') - ->setVariationGroupName("variationGroupName") - ->setCampaignId("campaignId") - ->setCampaignName("campaignName") - ->setKey($key1)->setValue($value1) - ->setSlug("slug") - ->setCampaignType("ab"); + $flagDTO->setIsReference(true)->setVariationId("variationId")->setVariationName("variationName")->setVariationGroupId('varGroupId')->setVariationGroupName("variationGroupName")->setCampaignId("campaignId")->setCampaignName("campaignName")->setKey($key1)->setValue($value1)->setSlug("slug")->setCampaignType("ab"); $flagMetadata1 = new FSFlagMetadata( $flagDTO->getCampaignId(), @@ -47,16 +36,7 @@ public function testFlagCollection() ); $flagDTO2 = new FlagDTO(); - $flagDTO2->setIsReference(true) - ->setVariationId("variationId") - ->setVariationName("variationName") - ->setVariationGroupId('varGroupId') - ->setVariationGroupName("variationGroupName") - ->setCampaignId("campaignId") - ->setCampaignName("campaignName") - ->setKey($key2)->setValue($value2) - ->setSlug("slug") - ->setCampaignType("ab"); + $flagDTO2->setIsReference(true)->setVariationId("variationId")->setVariationName("variationName")->setVariationGroupId('varGroupId')->setVariationGroupName("variationGroupName")->setCampaignId("campaignId")->setCampaignName("campaignName")->setKey($key2)->setValue($value2)->setSlug("slug")->setCampaignType("ab"); $flagMetadata2 = new FSFlagMetadata( $flagDTO2->getCampaignId(), diff --git a/tests/Flag/FlagMetadataTest.php b/tests/Flag/FlagMetadataTest.php index b24e8b84..184e10b4 100644 --- a/tests/Flag/FlagMetadataTest.php +++ b/tests/Flag/FlagMetadataTest.php @@ -40,29 +40,29 @@ public function testConstruct() $this->assertSame($metadata->getVariationName(), $variationName); $metadataJson = json_encode([ - "campaignId" => $campaignId, - "campaignName" => $campaignName, - "variationGroupId" => $variationGroupId, - "variationGroupName" => $variationGroupName, - "variationId" => $variationId, - "variationName" => $variationName, - "isReference" => $isReferenceId, - "campaignType" => $campaignType, - "slug" => $slug - ]); + "campaignId" => $campaignId, + "campaignName" => $campaignName, + "variationGroupId" => $variationGroupId, + "variationGroupName" => $variationGroupName, + "variationId" => $variationId, + "variationName" => $variationName, + "isReference" => $isReferenceId, + "campaignType" => $campaignType, + "slug" => $slug, + ]); $this->assertJsonStringEqualsJsonString(json_encode($metadata), $metadataJson); $metadataJson = json_encode([ - "campaignId" => "", - "campaignName" => "", - "variationGroupId" => "", - "variationGroupName" => '', - "variationId" => "", - "variationName" => "", - "isReference" => false, - "campaignType" => "", - "slug" => "" - ]); + "campaignId" => "", + "campaignName" => "", + "variationGroupId" => "", + "variationGroupName" => '', + "variationId" => "", + "variationName" => "", + "isReference" => false, + "campaignType" => "", + "slug" => "", + ]); $this->assertJsonStringEqualsJsonString(json_encode(FSFlagMetadata::getEmpty()), $metadataJson); } diff --git a/tests/Flag/FlagTest.php b/tests/Flag/FlagTest.php index b5714db9..98edce26 100644 --- a/tests/Flag/FlagTest.php +++ b/tests/Flag/FlagTest.php @@ -16,16 +16,7 @@ public function testFlag() $key = "key"; $defaultValue = "DefaultValue"; $flagDTO = new FlagDTO(); - $flagDTO->setIsReference(true) - ->setVariationId("variationId") - ->setVariationName("variationName") - ->setVariationGroupId('varGroupId') - ->setVariationGroupName("variationGroupName") - ->setCampaignId("campaignId") - ->setCampaignName("campaignName") - ->setKey($key)->setValue("value") - ->setSlug("slug") - ->setCampaignType("ab"); + $flagDTO->setIsReference(true)->setVariationId("variationId")->setVariationName("variationName")->setVariationGroupId('varGroupId')->setVariationGroupName("variationGroupName")->setCampaignId("campaignId")->setCampaignName("campaignName")->setKey($key)->setValue("value")->setSlug("slug")->setCampaignType("ab"); $metadata = new FSFlagMetadata( $flagDTO->getCampaignId(), @@ -45,25 +36,29 @@ public function testFlag() false, false, true, - ['getFlagValue', 'userExposed', 'getFlagMetadata', 'getFlagsDTO'], + [ + 'getFlagValue', + 'userExposed', + 'getFlagMetadata', + 'getFlagsDTO', + ], '', ); $visitorDelegateMock->method("getFlagsDTO")->willReturn([$flagDTO]); - $visitorDelegateMock->expects($this->exactly(2))->method('getFlagValue') - ->with( - $this->logicalOr( - $key, - $key - ), - $defaultValue, - $flagDTO, - $this->logicalOr( - true, - false - ) - )->willReturn($flagDTO->getValue()); + $visitorDelegateMock->expects($this->exactly(2))->method('getFlagValue')->with( + $this->logicalOr( + $key, + $key + ), + $defaultValue, + $flagDTO, + $this->logicalOr( + true, + false + ) + )->willReturn($flagDTO->getValue()); $flag = new FSFlag($key, $visitorDelegateMock); @@ -117,7 +112,11 @@ public function testFlagNull() $visitorDelegateMock = $this->getMockForAbstractClass( 'Flagship\Visitor\VisitorAbstract', - ['getFlagValue', 'userExposed', 'getFlagMetadata'], + [ + 'getFlagValue', + 'userExposed', + 'getFlagMetadata', + ], '', false ); diff --git a/tests/FlagshipTest.php b/tests/FlagshipTest.php index 69fa7b64..80e72c2e 100644 --- a/tests/FlagshipTest.php +++ b/tests/FlagshipTest.php @@ -40,7 +40,10 @@ public function __construct($name = null, array $data = array(), $dataName = '') false, true, true, - ['error', 'info'] + [ + 'error', + 'info', + ] ); } @@ -182,12 +185,11 @@ public function testStartWithLog() $flagshipMock->method('getContainer')->willReturn($this->containerInitialization()); - $flagshipMock->expects($this->once())->method('logInfo') - ->with( - $config, - sprintf(FlagshipConstant::SDK_STARTED_INFO, FlagshipConstant::SDK_VERSION), - [FlagshipConstant::TAG => FlagshipConstant::TAG_INITIALIZATION] - ); + $flagshipMock->expects($this->once())->method('logInfo')->with( + $config, + sprintf(FlagshipConstant::SDK_STARTED_INFO, FlagshipConstant::SDK_VERSION), + [FlagshipConstant::TAG => FlagshipConstant::TAG_INITIALIZATION] + ); $flagshipMock->expects($this->never())->method('logError'); @@ -248,9 +250,7 @@ public function testStartFailedWithLog() $config->setLogManager($logManager); - $flagshipMock = $this->getMockBuilder('Flagship\Flagship') - ->onlyMethods(['logInfo', 'logError', 'getContainer']) - ->disableOriginalConstructor()->getMock(); + $flagshipMock = $this->getMockBuilder('Flagship\Flagship')->onlyMethods(['logInfo', 'logError', 'getContainer'])->disableOriginalConstructor()->getMock(); $instanceMethod = Utils::getMethod("Flagship\Flagship", 'getInstance'); $instance = $instanceMethod->invoke(null); @@ -259,12 +259,11 @@ public function testStartFailedWithLog() $flagshipMock->method('getContainer')->willReturn($this->containerInitialization()); - $flagshipMock->expects($this->once())->method('logError') - ->with( - $config, - FlagshipConstant::INITIALIZATION_PARAM_ERROR, - [FlagshipConstant::TAG => FlagshipConstant::TAG_INITIALIZATION] - ); + $flagshipMock->expects($this->once())->method('logError')->with( + $config, + FlagshipConstant::INITIALIZATION_PARAM_ERROR, + [FlagshipConstant::TAG => FlagshipConstant::TAG_INITIALIZATION] + ); $flagshipMock->expects($this->never())->method('logInfo'); Flagship::start($envId, $apiKey, $config); @@ -288,9 +287,7 @@ public function testStartFailedThrowException() $config->setLogManager($logManager); - $flagshipMock = $this->getMockBuilder('Flagship\Flagship') - ->onlyMethods(['logInfo', 'logError', 'getContainer','setConfigManager']) - ->disableOriginalConstructor()->getMock(); + $flagshipMock = $this->getMockBuilder('Flagship\Flagship')->onlyMethods(['logInfo', 'logError', 'getContainer', 'setConfigManager'])->disableOriginalConstructor()->getMock(); $instanceMethod = Utils::getMethod("Flagship\Flagship", 'getInstance'); $instance = $instanceMethod->invoke(null); @@ -302,12 +299,11 @@ public function testStartFailedThrowException() $flagshipMock->method('getContainer')->willReturn($this->containerInitialization()); $flagshipMock->method('setConfigManager')->willThrowException($exception); - $flagshipMock->expects($this->once())->method('logError') - ->with( - $config, - $exception->getMessage(), - [FlagshipConstant::TAG => FlagshipConstant::TAG_INITIALIZATION] - ); + $flagshipMock->expects($this->once())->method('logError')->with( + $config, + $exception->getMessage(), + [FlagshipConstant::TAG => FlagshipConstant::TAG_INITIALIZATION] + ); $flagshipMock->expects($this->never())->method('logInfo'); Flagship::start($envId, $apiKey, $config); @@ -363,9 +359,7 @@ public function testStatusCallback() }; $config->setLogLevel(LogLevel::ALL); - $config->expects($this->exactly(1)) - ->method("getOnSdkStatusChanged") - ->willReturn($callable); + $config->expects($this->exactly(1))->method("getOnSdkStatusChanged")->willReturn($callable); Flagship::start('envId', 'apiKey', $config); } @@ -382,19 +376,18 @@ public function testGetPanicModeStatus() $visitorId = "visitorId"; $body = [ - "visitorId" => $visitorId, - "campaigns" => [], - "panic" => true - ]; - - $httpClientMock->expects($this->exactly(2))->method('post') - ->willReturnOnConsecutiveCalls( - new HttpResponse(204, $body), - new HttpResponse(204, [ - "visitorId" => $visitorId, - "campaigns" => [], - ]) - ); + "visitorId" => $visitorId, + "campaigns" => [], + "panic" => true, + ]; + + $httpClientMock->expects($this->exactly(2))->method('post')->willReturnOnConsecutiveCalls( + new HttpResponse(204, $body), + new HttpResponse(204, [ + "visitorId" => $visitorId, + "campaigns" => [], + ]) + ); $apiManager = new ApiManager($httpClientMock, $config); @@ -423,8 +416,7 @@ public function testGetPanicModeStatus() 'Flagship\Utils\Container' )->onlyMethods(['get'])->disableOriginalConstructor()->getMock(); - $containerMock->method('get') - ->will($this->returnCallback($containerGetMethod)); + $containerMock->method('get')->will($this->returnCallback($containerGetMethod)); $instanceMethod = Utils::getMethod("Flagship\Flagship", 'getInstance'); $instance = $instanceMethod->invoke(null); @@ -464,8 +456,7 @@ public function testClose() $flagshipMock = $this->getMockBuilder( 'Flagship\Flagship' - )->onlyMethods(['logInfo', 'logError', 'getContainer', "getConfigManager"]) - ->disableOriginalConstructor()->getMock(); + )->onlyMethods(['logInfo', 'logError', 'getContainer', "getConfigManager"])->disableOriginalConstructor()->getMock(); $trackingManagerMock = $this->getMockForAbstractClass( @@ -495,8 +486,7 @@ public function testClose() $trackingManagerMock->expects($this->once())->method("sendBatch"); - $flagshipMock->expects($this->exactly(1))->method("getConfigManager") - ->willReturn($configManagerMock); + $flagshipMock->expects($this->exactly(1))->method("getConfigManager")->willReturn($configManagerMock); Flagship::Close(); } @@ -516,16 +506,14 @@ public function testCloseNull() $flagshipMock = $this->getMockBuilder( 'Flagship\Flagship' - )->onlyMethods(['logInfo', 'logError', 'getContainer', "getConfigManager"]) - ->disableOriginalConstructor()->getMock(); + )->onlyMethods(['logInfo', 'logError', 'getContainer', "getConfigManager"])->disableOriginalConstructor()->getMock(); $instanceMethod = Utils::getMethod("Flagship\Flagship", 'getInstance'); $instance = $instanceMethod->invoke(null); Utils::setPrivateProperty($instance, 'instance', $flagshipMock); - $flagshipMock->expects($this->once())->method("getConfigManager") - ->willReturn(null); + $flagshipMock->expects($this->once())->method("getConfigManager")->willReturn(null); Flagship::Close(); } diff --git a/tests/Hit/ActivateBatchTest.php b/tests/Hit/ActivateBatchTest.php index 790bbd20..c7865df3 100644 --- a/tests/Hit/ActivateBatchTest.php +++ b/tests/Hit/ActivateBatchTest.php @@ -27,8 +27,8 @@ public function testToApiKeys() unset($apiKeys[FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM]); $this->assertSame([ - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $config->getEnvId(), - FlagshipConstant::BATCH => [$apiKeys] - ], $activateBatch->toApiKeys()); + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $config->getEnvId(), + FlagshipConstant::BATCH => [$apiKeys], + ], $activateBatch->toApiKeys()); } } diff --git a/tests/Hit/ActivateTest.php b/tests/Hit/ActivateTest.php index 18c56c4a..a07a9ade 100644 --- a/tests/Hit/ActivateTest.php +++ b/tests/Hit/ActivateTest.php @@ -50,13 +50,13 @@ public function testTestConstruct() $this->assertSame($variationGroupId, $activate->getVariationGroupId()); $apiKeys = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, - FlagshipConstant::VARIATION_ID_API_ITEM => $variationId, - FlagshipConstant::VARIATION_GROUP_ID_API_ITEM => $variationGroupId, - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, - FlagshipConstant::ANONYMOUS_ID => null, - FlagshipConstant::QT_API_ITEM => 0, - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, + FlagshipConstant::VARIATION_ID_API_ITEM => $variationId, + FlagshipConstant::VARIATION_GROUP_ID_API_ITEM => $variationGroupId, + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, + FlagshipConstant::ANONYMOUS_ID => null, + FlagshipConstant::QT_API_ITEM => 0, + ]; $this->assertSame($apiKeys, $activate->toApiKeys()); @@ -64,13 +64,13 @@ public function testTestConstruct() $activate->setAnonymousId($anonymousId); $apiKeys = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, - FlagshipConstant::VARIATION_ID_API_ITEM => $variationId, - FlagshipConstant::VARIATION_GROUP_ID_API_ITEM => $variationGroupId, - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, - FlagshipConstant::ANONYMOUS_ID => $anonymousId, - FlagshipConstant::QT_API_ITEM => 0, - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, + FlagshipConstant::VARIATION_ID_API_ITEM => $variationId, + FlagshipConstant::VARIATION_GROUP_ID_API_ITEM => $variationGroupId, + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, + FlagshipConstant::ANONYMOUS_ID => $anonymousId, + FlagshipConstant::QT_API_ITEM => 0, + ]; $this->assertSame($apiKeys, $activate->toApiKeys()); @@ -78,10 +78,7 @@ public function testTestConstruct() $this->assertSame(Activate::ERROR_MESSAGE, $activate->getErrorMessage()); - $activate->setFlagKey($flagKey) - ->setFlagValue($flagValue) - ->setFlagMetadata($flagMetadata) - ->setVisitorContext($visitorContext); + $activate->setFlagKey($flagKey)->setFlagValue($flagValue)->setFlagMetadata($flagMetadata)->setVisitorContext($visitorContext); $this->assertSame($flagKey, $activate->getFlagKey()); $this->assertSame($flagValue, $activate->getFlagValue()); diff --git a/tests/Hit/EventTest.php b/tests/Hit/EventTest.php index ca3ae812..202021a3 100644 --- a/tests/Hit/EventTest.php +++ b/tests/Hit/EventTest.php @@ -28,30 +28,24 @@ public function testConstruct() $sessionNumber = 1; $eventArray = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, - FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, - FlagshipConstant::T_API_ITEM => HitType::EVENT->value, - FlagshipConstant::CUSTOMER_UID => null, - FlagshipConstant::QT_API_ITEM => 0.0, - FlagshipConstant::USER_IP_API_ITEM => $userIp, - FlagshipConstant::SCREEN_RESOLUTION_API_ITEM => $screenResolution, - FlagshipConstant::USER_LANGUAGE => $userLanguage, - FlagshipConstant::SESSION_NUMBER => $sessionNumber, - FlagshipConstant::EVENT_CATEGORY_API_ITEM => $eventCategory, - FlagshipConstant::EVENT_ACTION_API_ITEM => $eventAction, - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, + FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, + FlagshipConstant::T_API_ITEM => HitType::EVENT->value, + FlagshipConstant::CUSTOMER_UID => null, + FlagshipConstant::QT_API_ITEM => 0.0, + FlagshipConstant::USER_IP_API_ITEM => $userIp, + FlagshipConstant::SCREEN_RESOLUTION_API_ITEM => $screenResolution, + FlagshipConstant::USER_LANGUAGE => $userLanguage, + FlagshipConstant::SESSION_NUMBER => $sessionNumber, + FlagshipConstant::EVENT_CATEGORY_API_ITEM => $eventCategory, + FlagshipConstant::EVENT_ACTION_API_ITEM => $eventAction, + ]; $event = new Event($eventCategory, $eventAction); $config = new DecisionApiConfig(); $config->setEnvId($envId); - $event->setConfig($config) - ->setVisitorId($visitorId) - ->setDs(FlagshipConstant::SDK_APP) - ->setLocale($userLanguage) - ->setUserIP($userIp) - ->setScreenResolution($screenResolution) - ->setSessionNumber($sessionNumber); + $event->setConfig($config)->setVisitorId($visitorId)->setDs(FlagshipConstant::SDK_APP)->setLocale($userLanguage)->setUserIP($userIp)->setScreenResolution($screenResolution)->setSessionNumber($sessionNumber); $this->assertSame($eventArray, $event->toApiKeys()); @@ -109,9 +103,7 @@ public function testIsReady() $eventCategory = EventCategory::ACTION_TRACKING; $event = new Event($eventCategory, $eventAction); - $event->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $event->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); $this->assertFalse($event->isReady()); @@ -120,9 +112,7 @@ public function testIsReady() //Test with require HitAbstract fields and require Transaction fields $eventAction = "ItemName"; $event = new Event($eventCategory, $eventAction); - $event->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $event->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); $this->assertTrue($event->isReady()); } diff --git a/tests/Hit/HitBatchTest.php b/tests/Hit/HitBatchTest.php index e058a149..007e8b9a 100644 --- a/tests/Hit/HitBatchTest.php +++ b/tests/Hit/HitBatchTest.php @@ -19,17 +19,20 @@ public function testToApiKeys() $screen = new Screen("home"); $screen->setConfig($config)->setVisitorId($visitorId); - $hits = [$page, $screen]; + $hits = [ + $page, + $screen, + ]; $batch = new HitBatch($config, [$page, $screen]); $data = [ - FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $config->getEnvId(), - FlagshipConstant::T_API_ITEM => "BATCH", - FlagshipConstant::QT_API_ITEM => 0.0, - FlagshipConstant::H_API_ITEM => [] - ]; + FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $config->getEnvId(), + FlagshipConstant::T_API_ITEM => "BATCH", + FlagshipConstant::QT_API_ITEM => 0.0, + FlagshipConstant::H_API_ITEM => [], + ]; foreach ($hits as $hit) { $hitApiKey = $hit->toApiKeys(); diff --git a/tests/Hit/ItemTest.php b/tests/Hit/ItemTest.php index f34e219e..f4e65ff1 100644 --- a/tests/Hit/ItemTest.php +++ b/tests/Hit/ItemTest.php @@ -23,23 +23,21 @@ public function testConstruct() $itemCategory = "category 1"; $itemArray = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, - FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, - FlagshipConstant::T_API_ITEM => HitType::ITEM->value, - FlagshipConstant::CUSTOMER_UID => null, - FlagshipConstant::QT_API_ITEM => 0.0, - FlagshipConstant::TID_API_ITEM => $transactionId, - FlagshipConstant::IN_API_ITEM => $itemName, - FlagshipConstant::IC_API_ITEM => $itemCode - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, + FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, + FlagshipConstant::T_API_ITEM => HitType::ITEM->value, + FlagshipConstant::CUSTOMER_UID => null, + FlagshipConstant::QT_API_ITEM => 0.0, + FlagshipConstant::TID_API_ITEM => $transactionId, + FlagshipConstant::IN_API_ITEM => $itemName, + FlagshipConstant::IC_API_ITEM => $itemCode, + ]; $item = new Item($transactionId, $itemName, $itemCode); $config = new DecisionApiConfig($envId); - $item->setVisitorId($visitorId) - ->setConfig($config) - ->setDs(FlagshipConstant::SDK_APP); + $item->setVisitorId($visitorId)->setConfig($config)->setDs(FlagshipConstant::SDK_APP); $this->assertSame($itemArray, $item->toApiKeys()); @@ -95,9 +93,7 @@ public function testIsReady() $itemName = ""; $item = new Item($transactionId, $itemName, $itemCode); - $item->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $item->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); $this->assertFalse($item->isReady()); $this->assertSame(Item::ERROR_MESSAGE, $item->getErrorMessage()); @@ -105,9 +101,7 @@ public function testIsReady() //Test with require HitAbstract fields and require Item fields $itemName = "ItemName"; $item = new Item($transactionId, $itemName, $itemCode); - $item->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $item->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); $this->assertTrue($item->isReady()); } diff --git a/tests/Hit/PageTest.php b/tests/Hit/PageTest.php index 18c7c43d..8b485512 100644 --- a/tests/Hit/PageTest.php +++ b/tests/Hit/PageTest.php @@ -20,19 +20,17 @@ public function testConstruct() $page = new Page($pageUrl); $config = new DecisionApiConfig($envId); - $page->setConfig($config) - ->setDs(FlagshipConstant::SDK_APP) - ->setVisitorId($visitorId); + $page->setConfig($config)->setDs(FlagshipConstant::SDK_APP)->setVisitorId($visitorId); $screenArray = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, - FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, - FlagshipConstant::T_API_ITEM => HitType::PAGE_VIEW->value, - FlagshipConstant::CUSTOMER_UID => null, - FlagshipConstant::QT_API_ITEM => 0.0, - FlagshipConstant::DL_API_ITEM => $pageUrl - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, + FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, + FlagshipConstant::T_API_ITEM => HitType::PAGE_VIEW->value, + FlagshipConstant::CUSTOMER_UID => null, + FlagshipConstant::QT_API_ITEM => 0.0, + FlagshipConstant::DL_API_ITEM => $pageUrl, + ]; $this->assertSame($screenArray, $page->toApiKeys()); } @@ -49,17 +47,13 @@ public function testIsReady() $config = new DecisionApiConfig('envId'); - $page->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $page->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); //Test isReady Test with require HitAbstract fields and with empty pageUrl $pageUrl = ""; $page = new Page($pageUrl); - $page->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $page->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); $this->assertFalse($page->isReady()); @@ -68,9 +62,7 @@ public function testIsReady() //Test with require HitAbstract fields and require Page fields $pageUrl = "https://localhost"; $page = new Page($pageUrl); - $page->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $page->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); $this->assertTrue($page->isReady()); } diff --git a/tests/Hit/ScreenTest.php b/tests/Hit/ScreenTest.php index 9d21d6a0..0abdd790 100644 --- a/tests/Hit/ScreenTest.php +++ b/tests/Hit/ScreenTest.php @@ -19,19 +19,17 @@ public function testConstruct() $config = new DecisionApiConfig($envId); $screen = new Screen($screenName); - $screen->setConfig($config) - ->setDs(FlagshipConstant::SDK_APP) - ->setVisitorId($visitorId); + $screen->setConfig($config)->setDs(FlagshipConstant::SDK_APP)->setVisitorId($visitorId); $screenArray = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, - FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, - FlagshipConstant::T_API_ITEM => HitType::SCREEN_VIEW->value, - FlagshipConstant::CUSTOMER_UID => null, - FlagshipConstant::QT_API_ITEM => 0.0, - FlagshipConstant::DL_API_ITEM => $screenName - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, + FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, + FlagshipConstant::T_API_ITEM => HitType::SCREEN_VIEW->value, + FlagshipConstant::CUSTOMER_UID => null, + FlagshipConstant::QT_API_ITEM => 0.0, + FlagshipConstant::DL_API_ITEM => $screenName, + ]; $this->assertSame($screenArray, $screen->toApiKeys()); } @@ -49,9 +47,7 @@ public function testIsReady() $screenName = ""; $screen = new Screen($screenName); $config = new DecisionApiConfig('envId'); - $screen->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $screen->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); $this->assertFalse($screen->isReady()); @@ -61,9 +57,7 @@ public function testIsReady() $screenName = "screenName"; $screen = new Screen($screenName); - $screen->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $screen->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); $this->assertTrue($screen->isReady()); } } diff --git a/tests/Hit/SegmentTest.php b/tests/Hit/SegmentTest.php index 96ac3ad5..517cc651 100644 --- a/tests/Hit/SegmentTest.php +++ b/tests/Hit/SegmentTest.php @@ -15,10 +15,10 @@ public function testConstructor() $visitorId = "visitorId"; $context = [ - "key1" => "value1", - "key2" => 1, - "key3" => true - ]; + "key1" => "value1", + "key2" => 1, + "key3" => true, + ]; $config = new DecisionApiConfig($envId); @@ -30,14 +30,14 @@ public function testConstructor() $this->assertSame($context, $segment->getSl()); $segmentArray = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, - FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, - FlagshipConstant::T_API_ITEM => HitType::SEGMENT->value, - FlagshipConstant::CUSTOMER_UID => null, - FlagshipConstant::QT_API_ITEM => 0.0, - FlagshipConstant::SL_API_ITEM => $context - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, + FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, + FlagshipConstant::T_API_ITEM => HitType::SEGMENT->value, + FlagshipConstant::CUSTOMER_UID => null, + FlagshipConstant::QT_API_ITEM => 0.0, + FlagshipConstant::SL_API_ITEM => $context, + ]; $this->assertSame($segmentArray, $segment->toApiKeys()); diff --git a/tests/Hit/TransactionTest.php b/tests/Hit/TransactionTest.php index 14513828..1b035641 100644 --- a/tests/Hit/TransactionTest.php +++ b/tests/Hit/TransactionTest.php @@ -35,15 +35,15 @@ public function testConstruct() $transaction->setVisitorId($visitorId)->setDs($ds)->setConfig($config); $transactionArray = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, - FlagshipConstant::DS_API_ITEM => $ds, - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, - FlagshipConstant::T_API_ITEM => HitType::TRANSACTION->value, - FlagshipConstant::CUSTOMER_UID => null, - FlagshipConstant::QT_API_ITEM => 0.0, - FlagshipConstant::TID_API_ITEM => $transactionId, - FlagshipConstant::TA_API_ITEM => $transactionAffiliation - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, + FlagshipConstant::DS_API_ITEM => $ds, + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $envId, + FlagshipConstant::T_API_ITEM => HitType::TRANSACTION->value, + FlagshipConstant::CUSTOMER_UID => null, + FlagshipConstant::QT_API_ITEM => 0.0, + FlagshipConstant::TID_API_ITEM => $transactionId, + FlagshipConstant::TA_API_ITEM => $transactionAffiliation, + ]; $taxesAmount = 76.0; $transaction->setTaxes($taxesAmount); @@ -110,18 +110,14 @@ public function testIsReady() //Test with require HitAbstract fields and with null transactionId $config = new DecisionApiConfig('envId'); - $transaction->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $transaction->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); //Test isReady with require HitAbstract fields and with empty transactionAffiliation $transactionAffiliation = ""; $transaction = new Transaction($transactionId, $transactionAffiliation); - $transaction->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $transaction->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); $this->assertFalse($transaction->isReady()); @@ -131,9 +127,7 @@ public function testIsReady() $transactionAffiliation = "ItemName"; $transaction = new Transaction($transactionId, $transactionAffiliation); - $transaction->setConfig($config) - ->setVisitorId('visitorId') - ->setDs(FlagshipConstant::SDK_APP); + $transaction->setConfig($config)->setVisitorId('visitorId')->setDs(FlagshipConstant::SDK_APP); $this->assertTrue($transaction->isReady()); } diff --git a/tests/Hit/TroubleshootingTest.php b/tests/Hit/TroubleshootingTest.php index 9b5168dd..265ad61b 100644 --- a/tests/Hit/TroubleshootingTest.php +++ b/tests/Hit/TroubleshootingTest.php @@ -34,212 +34,132 @@ public function testConstruct() $cacheStrategy = CacheStrategy::BATCHING_AND_CACHING_ON_FAILURE; $httpRequestUrl = "https://localhost"; $httpRequestMethod = "GET"; - $httpRequestHeaders = [ - "key" => "value" - ]; - $httpRequestBody = [ - "key" => "value" - ]; + $httpRequestHeaders = ["key" => "value"]; + $httpRequestBody = ["key" => "value"]; $httpResponseUrl = "https://localhost"; $httpResponseMethod = "GET"; - $httpResponseHeaders = [ - "key" => "value" - ]; + $httpResponseHeaders = ["key" => "value"]; $httpResponseTime = 1; $httpResponseCode = 200; - $httpResponseBody = [ - 'key' => "value" - ]; + $httpResponseBody = ['key' => "value"]; $visitorContext = [ - "key1" => "value1", - "key2" => "value2" - ]; + "key1" => "value1", + "key2" => "value2", + ]; $visitorAssignmentHistory = [ - "key1" => "value1", - "key2" => "value2" - ]; + "key1" => "value1", + "key2" => "value2", + ]; $flagDto = new FlagDTO(); - $flagDto->setKey("key") - ->setValue("value") - ->setCampaignId("campaignId") - ->setCampaignType("ab") - ->setCampaignName("campaignName") - ->setVariationId("varId") - ->setVariationName("variationName") - ->setVariationGroupId("varGroupId") - ->setIsReference(false) - ->setSlug("slug") - ->setVariationGroupName("varGroupName"); + $flagDto->setKey("key")->setValue("value")->setCampaignId("campaignId")->setCampaignType("ab")->setCampaignName("campaignName")->setVariationId("varId")->setVariationName("variationName")->setVariationGroupId("varGroupId")->setIsReference(false)->setSlug("slug")->setVariationGroupName("varGroupName"); $flagDto2 = new FlagDTO(); - $flagDto2->setKey("key2") - ->setValue([]) - ->setCampaignId("campaignId") - ->setCampaignType("ab") - ->setCampaignName("campaignName") - ->setVariationId("varId") - ->setVariationName("variationName") - ->setVariationGroupId("varGroupId") - ->setIsReference(false) - ->setVariationGroupName("varGroupName"); + $flagDto2->setKey("key2")->setValue([])->setCampaignId("campaignId")->setCampaignType("ab")->setCampaignName("campaignName")->setVariationId("varId")->setVariationName("variationName")->setVariationGroupId("varGroupId")->setIsReference(false)->setVariationGroupName("varGroupName"); $visitorFlag = [ - $flagDto, - $flagDto2 - ]; + $flagDto, + $flagDto2, + ]; $activateHit = new Activate("varGroupId", "varId"); - $activateHit->setConfig($config) - ->setVisitorId($visitorId); + $activateHit->setConfig($config)->setVisitorId($visitorId); $sdkConfigBucketingUrl = 'http://localhost'; - $troubleshooting->setVisitorId($visitorId) - ->setAnonymousId($anonymousId) - ->setConfig($config) - ->setLogLevel(LogLevel::INFO) - ->setLabel(TroubleshootingLabel::VISITOR_FETCH_CAMPAIGNS) - ->setFlagshipInstanceId($flagshipInstanceId) - ->setVisitorSessionId($visitorInstanceId) - ->setStackOriginName($stackOriginName) - ->setStackOriginVersion($stackOriginVersion) - ->setSdkStatus($sdkStatus) - ->setSdkConfigMode($sdkConfigMode) - ->setSdkConfigLogLevel($config->getLogLevel()) - ->setSdkConfigCustomLogManager(true) - ->setSdkConfigCustomCacheManager(true) - ->setSdkConfigStatusListener(false) - ->setSdkConfigBucketingUrl($sdkConfigBucketingUrl) - ->setSdkConfigUsingCustomHitCache(true) - ->setSdkConfigUsingOnVisitorExposed(true) - ->setSdkConfigUsingCustomVisitorCache(true) - ->setSdkConfigFetchThirdPartyData(true) - ->setSdkConfigTimeout($config->getTimeout()) - ->setSdkConfigTrackingManagerConfigStrategy($cacheStrategy) - ->setHttpRequestUrl($httpRequestUrl) - ->setHttpRequestMethod($httpRequestMethod) - ->setHttpRequestHeaders($httpRequestHeaders) - ->setHttpRequestBody($httpRequestBody) - ->setHttpResponseUrl($httpResponseUrl) - ->setHttpResponseMethod($httpResponseMethod) - ->setHttpResponseHeaders($httpResponseHeaders) - ->setHttpResponseTime($httpResponseTime) - ->setHttpResponseCode($httpResponseCode) - ->setHttpResponseBody($httpResponseBody) - ->setVisitorConsent(true) - ->setVisitorContext($visitorContext) - ->setVisitorAssignmentHistory($visitorAssignmentHistory) - ->setVisitorFlags($visitorFlag) - ->setVisitorIsAuthenticated(true) - ->setVisitorCampaigns([]) - ->setFlagKey($flagDto->getKey()) - ->setFlagValue($flagDto->getValue()) - ->setFlagMetadataCampaignIsReference($flagDto->getIsReference()) - ->setFlagMetadataVariationId($flagDto->getVariationId()) - ->setFlagMetadataVariationName($flagDto->getVariationName()) - ->setFlagMetadataVariationGroupId($flagDto->getVariationGroupId()) - ->setFlagMetadataVariationGroupName($flagDto->getVariationGroupName()) - ->setFlagMetadataCampaignId($flagDto->getCampaignId()) - ->setFlagMetadataCampaignName($flagDto->getCampaignName()) - ->setFlagMetadataCampaignType($flagDto->getCampaignType()) - ->setFlagDefault("default") - ->setFlagMetadataCampaignSlug($flagDto->getSlug()) - ->setVisitorExposed(true) - ->setHitContent($activateHit->toApiKeys()) - ; + $troubleshooting->setVisitorId($visitorId)->setAnonymousId($anonymousId)->setConfig($config)->setLogLevel(LogLevel::INFO)->setLabel(TroubleshootingLabel::VISITOR_FETCH_CAMPAIGNS)->setFlagshipInstanceId($flagshipInstanceId)->setVisitorSessionId($visitorInstanceId)->setStackOriginName($stackOriginName)->setStackOriginVersion($stackOriginVersion)->setSdkStatus($sdkStatus)->setSdkConfigMode($sdkConfigMode)->setSdkConfigLogLevel($config->getLogLevel())->setSdkConfigCustomLogManager(true)->setSdkConfigCustomCacheManager(true)->setSdkConfigStatusListener(false)->setSdkConfigBucketingUrl($sdkConfigBucketingUrl)->setSdkConfigUsingCustomHitCache(true)->setSdkConfigUsingOnVisitorExposed(true)->setSdkConfigUsingCustomVisitorCache(true)->setSdkConfigFetchThirdPartyData(true)->setSdkConfigTimeout($config->getTimeout())->setSdkConfigTrackingManagerConfigStrategy($cacheStrategy)->setHttpRequestUrl($httpRequestUrl)->setHttpRequestMethod($httpRequestMethod)->setHttpRequestHeaders($httpRequestHeaders)->setHttpRequestBody($httpRequestBody)->setHttpResponseUrl($httpResponseUrl)->setHttpResponseMethod($httpResponseMethod)->setHttpResponseHeaders($httpResponseHeaders)->setHttpResponseTime($httpResponseTime)->setHttpResponseCode($httpResponseCode)->setHttpResponseBody($httpResponseBody)->setVisitorConsent(true)->setVisitorContext($visitorContext)->setVisitorAssignmentHistory($visitorAssignmentHistory)->setVisitorFlags($visitorFlag)->setVisitorIsAuthenticated(true)->setVisitorCampaigns([])->setFlagKey($flagDto->getKey())->setFlagValue($flagDto->getValue())->setFlagMetadataCampaignIsReference($flagDto->getIsReference())->setFlagMetadataVariationId($flagDto->getVariationId())->setFlagMetadataVariationName($flagDto->getVariationName())->setFlagMetadataVariationGroupId($flagDto->getVariationGroupId())->setFlagMetadataVariationGroupName($flagDto->getVariationGroupName())->setFlagMetadataCampaignId($flagDto->getCampaignId())->setFlagMetadataCampaignName($flagDto->getCampaignName())->setFlagMetadataCampaignType($flagDto->getCampaignType())->setFlagDefault("default")->setFlagMetadataCampaignSlug($flagDto->getSlug())->setVisitorExposed(true)->setHitContent($activateHit->toApiKeys()); $customVariable = [ - 'version' => FlagshipConstant::TROUBLESHOOTING_VERSION, - 'logLevel' => LogLevel::INFO->name, - 'envId' => $config->getEnvId(), - 'timeZone' => (new DateTime())->getTimezone()->getName(), - 'label' => TroubleshootingLabel::VISITOR_FETCH_CAMPAIGNS->value, - 'stack.type' => FlagshipConstant::SDK, - 'stack.name' => FlagshipConstant::SDK_LANGUAGE, - 'stack.version' => FlagshipConstant::SDK_VERSION, - 'visitor.visitorId' => $visitorId, - 'visitor.anonymousId' => $anonymousId, - 'visitor.sessionId' => $visitorInstanceId, - 'flagshipInstanceId' => $flagshipInstanceId, - 'stack.origin.name' => $stackOriginName, - 'stack.origin.version' => $stackOriginVersion, - 'sdk.status' => $sdkStatus->name, - 'sdk.config.logLevel' => $config->getLogLevel()->name, - 'sdk.config.mode' => $sdkConfigMode->name, - 'sdk.config.customLogManager' => 'true', - 'sdk.config.customCacheManager' => 'true', - 'sdk.config.custom.StatusListener' => 'false', - 'sdk.config.timeout' => (string) $config->getTimeout(), - 'sdk.config.trackingManager.strategy' => $cacheStrategy->name, - 'sdk.config.bucketingUrl' => $sdkConfigBucketingUrl, - 'sdk.config.fetchThirdPartyData' => 'true', - 'sdk.config.usingOnVisitorExposed' => 'true', - 'sdk.config.usingCustomHitCache' => 'true', - 'sdk.config.usingCustomVisitorCache' => 'true', - 'http.request.url' => $httpRequestUrl, - 'http.request.method' => $httpRequestMethod, - 'http.request.headers' => json_encode($httpRequestHeaders), - 'http.request.body' => json_encode($httpRequestBody), - 'http.response.url' => $httpResponseUrl, - 'http.response.method' => $httpResponseMethod, - 'http.response.headers' => json_encode($httpResponseHeaders), - 'http.response.code' => (string)$httpResponseCode, - "http.response.body" => json_encode($httpResponseBody), - 'http.response.time' => (string)$httpResponseTime, - 'visitor.context.[key1]' => 'value1', - 'visitor.context.[key2]' => 'value2', - 'visitor.consent' => 'true', - 'visitor.assignments.key1' => 'value1', - 'visitor.assignments.key2' => 'value2', - 'visitor.flags.[key].key' => $flagDto->getKey(), - 'visitor.flags.[key].value' => $flagDto->getValue(), - 'visitor.flags.[key].metadata.variationId' => $flagDto->getVariationId(), - 'visitor.flags.[key].metadata.variationName' => $flagDto->getVariationName(), - 'visitor.flags.[key].metadata.variationGroupId' => $flagDto->getVariationGroupId(), - 'visitor.flags.[key].metadata.variationGroupName' => $flagDto->getVariationGroupName(), - 'visitor.flags.[key].metadata.campaignId' => $flagDto->getCampaignId(), - 'visitor.flags.[key].metadata.campaignName' => $flagDto->getCampaignName(), - 'visitor.flags.[key].metadata.campaignType' => $flagDto->getCampaignType(), - 'visitor.flags.[key].metadata.slug' => $flagDto->getSlug(), - 'visitor.flags.[key].metadata.isReference' => json_encode($flagDto->getIsReference()), - 'visitor.flags.[key2].key' => $flagDto2->getKey(), - 'visitor.flags.[key2].value' => json_encode($flagDto2->getValue()), - 'visitor.flags.[key2].metadata.variationId' => $flagDto2->getVariationId(), - 'visitor.flags.[key2].metadata.variationName' => $flagDto2->getVariationName(), - 'visitor.flags.[key2].metadata.variationGroupId' => $flagDto2->getVariationGroupId(), - 'visitor.flags.[key2].metadata.variationGroupName' => $flagDto2->getVariationGroupName(), - 'visitor.flags.[key2].metadata.campaignId' => $flagDto2->getCampaignId(), - 'visitor.flags.[key2].metadata.campaignName' => $flagDto2->getCampaignName(), - 'visitor.flags.[key2].metadata.campaignType' => $flagDto2->getCampaignType(), - 'visitor.flags.[key2].metadata.slug' => '', - 'visitor.flags.[key2].metadata.isReference' => json_encode($flagDto2->getIsReference()), - 'visitor.isAuthenticated' => 'true', - 'visitor.campaigns' => '[]', - 'flag.key' => $flagDto->getKey(), - 'flag.value' => $flagDto->getValue(), - 'flag.default' => "default", - 'flag.visitorExposed' => "true", - 'flag.metadata.campaignId' => $flagDto->getCampaignId(), - 'flag.metadata.campaignName' => $flagDto->getCampaignName(), - 'flag.metadata.variationGroupId' => $flagDto->getVariationGroupId(), - 'flag.metadata.variationGroupName' => $flagDto->getVariationGroupName(), - 'flag.metadata.variationId' => $flagDto->getVariationId(), - 'flag.metadata.variationName' => $flagDto->getVariationName(), - 'flag.metadata.campaignSlug' => $flagDto->getSlug(), - 'flag.metadata.campaignType' => $flagDto->getCampaignType(), - 'flag.metadata.isReference' => json_encode($flagDto->getIsReference()), - ]; + 'version' => FlagshipConstant::TROUBLESHOOTING_VERSION, + 'logLevel' => LogLevel::INFO->name, + 'envId' => $config->getEnvId(), + 'timeZone' => (new DateTime())->getTimezone()->getName(), + 'label' => TroubleshootingLabel::VISITOR_FETCH_CAMPAIGNS->value, + 'stack.type' => FlagshipConstant::SDK, + 'stack.name' => FlagshipConstant::SDK_LANGUAGE, + 'stack.version' => FlagshipConstant::SDK_VERSION, + 'visitor.visitorId' => $visitorId, + 'visitor.anonymousId' => $anonymousId, + 'visitor.sessionId' => $visitorInstanceId, + 'flagshipInstanceId' => $flagshipInstanceId, + 'stack.origin.name' => $stackOriginName, + 'stack.origin.version' => $stackOriginVersion, + 'sdk.status' => $sdkStatus->name, + 'sdk.config.logLevel' => $config->getLogLevel()->name, + 'sdk.config.mode' => $sdkConfigMode->name, + 'sdk.config.customLogManager' => 'true', + 'sdk.config.customCacheManager' => 'true', + 'sdk.config.custom.StatusListener' => 'false', + 'sdk.config.timeout' => (string) $config->getTimeout(), + 'sdk.config.trackingManager.strategy' => $cacheStrategy->name, + 'sdk.config.bucketingUrl' => $sdkConfigBucketingUrl, + 'sdk.config.fetchThirdPartyData' => 'true', + 'sdk.config.usingOnVisitorExposed' => 'true', + 'sdk.config.usingCustomHitCache' => 'true', + 'sdk.config.usingCustomVisitorCache' => 'true', + 'http.request.url' => $httpRequestUrl, + 'http.request.method' => $httpRequestMethod, + 'http.request.headers' => json_encode($httpRequestHeaders), + 'http.request.body' => json_encode($httpRequestBody), + 'http.response.url' => $httpResponseUrl, + 'http.response.method' => $httpResponseMethod, + 'http.response.headers' => json_encode($httpResponseHeaders), + 'http.response.code' => (string)$httpResponseCode, + "http.response.body" => json_encode($httpResponseBody), + 'http.response.time' => (string)$httpResponseTime, + 'visitor.context.[key1]' => 'value1', + 'visitor.context.[key2]' => 'value2', + 'visitor.consent' => 'true', + 'visitor.assignments.key1' => 'value1', + 'visitor.assignments.key2' => 'value2', + 'visitor.flags.[key].key' => $flagDto->getKey(), + 'visitor.flags.[key].value' => $flagDto->getValue(), + 'visitor.flags.[key].metadata.variationId' => $flagDto->getVariationId(), + 'visitor.flags.[key].metadata.variationName' => $flagDto->getVariationName(), + 'visitor.flags.[key].metadata.variationGroupId' => $flagDto->getVariationGroupId(), + 'visitor.flags.[key].metadata.variationGroupName' => $flagDto->getVariationGroupName(), + 'visitor.flags.[key].metadata.campaignId' => $flagDto->getCampaignId(), + 'visitor.flags.[key].metadata.campaignName' => $flagDto->getCampaignName(), + 'visitor.flags.[key].metadata.campaignType' => $flagDto->getCampaignType(), + 'visitor.flags.[key].metadata.slug' => $flagDto->getSlug(), + 'visitor.flags.[key].metadata.isReference' => json_encode($flagDto->getIsReference()), + 'visitor.flags.[key2].key' => $flagDto2->getKey(), + 'visitor.flags.[key2].value' => json_encode($flagDto2->getValue()), + 'visitor.flags.[key2].metadata.variationId' => $flagDto2->getVariationId(), + 'visitor.flags.[key2].metadata.variationName' => $flagDto2->getVariationName(), + 'visitor.flags.[key2].metadata.variationGroupId' => $flagDto2->getVariationGroupId(), + 'visitor.flags.[key2].metadata.variationGroupName' => $flagDto2->getVariationGroupName(), + 'visitor.flags.[key2].metadata.campaignId' => $flagDto2->getCampaignId(), + 'visitor.flags.[key2].metadata.campaignName' => $flagDto2->getCampaignName(), + 'visitor.flags.[key2].metadata.campaignType' => $flagDto2->getCampaignType(), + 'visitor.flags.[key2].metadata.slug' => '', + 'visitor.flags.[key2].metadata.isReference' => json_encode($flagDto2->getIsReference()), + 'visitor.isAuthenticated' => 'true', + 'visitor.campaigns' => '[]', + 'flag.key' => $flagDto->getKey(), + 'flag.value' => $flagDto->getValue(), + 'flag.default' => "default", + 'flag.visitorExposed' => "true", + 'flag.metadata.campaignId' => $flagDto->getCampaignId(), + 'flag.metadata.campaignName' => $flagDto->getCampaignName(), + 'flag.metadata.variationGroupId' => $flagDto->getVariationGroupId(), + 'flag.metadata.variationGroupName' => $flagDto->getVariationGroupName(), + 'flag.metadata.variationId' => $flagDto->getVariationId(), + 'flag.metadata.variationName' => $flagDto->getVariationName(), + 'flag.metadata.campaignSlug' => $flagDto->getSlug(), + 'flag.metadata.campaignType' => $flagDto->getCampaignType(), + 'flag.metadata.isReference' => json_encode($flagDto->getIsReference()), + ]; foreach ($activateHit->toApiKeys() as $key => $item) { - $customVariable["hit." . $key] = is_string($item) ? $item : json_encode($item); + $customVariable["hit." . $key] = is_string($item) ? $item : json_encode($item); } $expectedApiKey = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, - FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $config->getEnvId(), - FlagshipConstant::T_API_ITEM => HitType::TROUBLESHOOTING->value, - 'cv' => $customVariable - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, + FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $config->getEnvId(), + FlagshipConstant::T_API_ITEM => HitType::TROUBLESHOOTING->value, + 'cv' => $customVariable, + ]; $apiKey = $troubleshooting->toApiKeys(); unset($apiKey['cv']['timestamp']); @@ -247,71 +167,44 @@ public function testConstruct() $flagDto = new FlagDTO(); - $flagDto->setKey("key") - ->setValue([]) - ->setCampaignId("campaignId") - ->setCampaignType("ab") - ->setCampaignName("campaignName") - ->setVariationId("varId") - ->setVariationName("variationName") - ->setVariationGroupId("varGroupId") - ->setIsReference(false) - ->setSlug("slug") - ->setVariationGroupName("varGroupName"); + $flagDto->setKey("key")->setValue([])->setCampaignId("campaignId")->setCampaignType("ab")->setCampaignName("campaignName")->setVariationId("varId")->setVariationName("variationName")->setVariationGroupId("varGroupId")->setIsReference(false)->setSlug("slug")->setVariationGroupName("varGroupName"); $troubleshooting = new Troubleshooting(); - $troubleshooting->setVisitorId($visitorId) - ->setAnonymousId($anonymousId) - ->setConfig($config) - ->setLogLevel(LogLevel::INFO) - ->setLabel(TroubleshootingLabel::VISITOR_FETCH_CAMPAIGNS) - ->setFlagshipInstanceId($flagshipInstanceId) - ->setVisitorSessionId($visitorInstanceId) - ->setFlagKey($flagDto->getKey()) - ->setFlagValue($flagDto->getValue()) - ->setFlagMetadataCampaignIsReference($flagDto->getIsReference()) - ->setFlagMetadataVariationId($flagDto->getVariationId()) - ->setFlagMetadataVariationGroupId($flagDto->getVariationGroupId()) - ->setFlagMetadataCampaignId($flagDto->getCampaignId()) - ->setFlagMetadataCampaignType($flagDto->getCampaignType()) - ->setFlagDefault([]) - ->setFlagMetadataCampaignSlug($flagDto->getSlug()) - ->setVisitorExposed(true) - ; + $troubleshooting->setVisitorId($visitorId)->setAnonymousId($anonymousId)->setConfig($config)->setLogLevel(LogLevel::INFO)->setLabel(TroubleshootingLabel::VISITOR_FETCH_CAMPAIGNS)->setFlagshipInstanceId($flagshipInstanceId)->setVisitorSessionId($visitorInstanceId)->setFlagKey($flagDto->getKey())->setFlagValue($flagDto->getValue())->setFlagMetadataCampaignIsReference($flagDto->getIsReference())->setFlagMetadataVariationId($flagDto->getVariationId())->setFlagMetadataVariationGroupId($flagDto->getVariationGroupId())->setFlagMetadataCampaignId($flagDto->getCampaignId())->setFlagMetadataCampaignType($flagDto->getCampaignType())->setFlagDefault([])->setFlagMetadataCampaignSlug($flagDto->getSlug())->setVisitorExposed(true); $customVariable = [ - 'version' => FlagshipConstant::TROUBLESHOOTING_VERSION, - 'logLevel' => LogLevel::INFO->name, - 'envId' => $config->getEnvId(), - 'timeZone' => (new DateTime())->getTimezone()->getName(), - 'label' => TroubleshootingLabel::VISITOR_FETCH_CAMPAIGNS->value, - 'stack.type' => FlagshipConstant::SDK, - 'stack.name' => FlagshipConstant::SDK_LANGUAGE, - 'stack.version' => FlagshipConstant::SDK_VERSION, - 'visitor.visitorId' => $visitorId, - 'visitor.anonymousId' => $anonymousId, - 'visitor.sessionId' => $visitorInstanceId, - 'flagshipInstanceId' => $flagshipInstanceId, - 'flag.key' => $flagDto->getKey(), - 'flag.value' => json_encode($flagDto->getValue()), - 'flag.default' => json_encode([]), - 'flag.visitorExposed' => "true", - 'flag.metadata.campaignId' => $flagDto->getCampaignId(), - 'flag.metadata.variationGroupId' => $flagDto->getVariationGroupId(), - 'flag.metadata.variationId' => $flagDto->getVariationId(), - 'flag.metadata.campaignSlug' => $flagDto->getSlug(), - 'flag.metadata.campaignType' => $flagDto->getCampaignType(), - 'flag.metadata.isReference' => json_encode($flagDto->getIsReference()) - ]; + 'version' => FlagshipConstant::TROUBLESHOOTING_VERSION, + 'logLevel' => LogLevel::INFO->name, + 'envId' => $config->getEnvId(), + 'timeZone' => (new DateTime())->getTimezone()->getName(), + 'label' => TroubleshootingLabel::VISITOR_FETCH_CAMPAIGNS->value, + 'stack.type' => FlagshipConstant::SDK, + 'stack.name' => FlagshipConstant::SDK_LANGUAGE, + 'stack.version' => FlagshipConstant::SDK_VERSION, + 'visitor.visitorId' => $visitorId, + 'visitor.anonymousId' => $anonymousId, + 'visitor.sessionId' => $visitorInstanceId, + 'flagshipInstanceId' => $flagshipInstanceId, + 'flag.key' => $flagDto->getKey(), + 'flag.value' => json_encode($flagDto->getValue()), + 'flag.default' => json_encode([]), + 'flag.visitorExposed' => "true", + 'flag.metadata.campaignId' => $flagDto->getCampaignId(), + 'flag.metadata.variationGroupId' => $flagDto->getVariationGroupId(), + 'flag.metadata.variationId' => $flagDto->getVariationId(), + 'flag.metadata.campaignSlug' => $flagDto->getSlug(), + 'flag.metadata.campaignType' => $flagDto->getCampaignType(), + 'flag.metadata.isReference' => json_encode($flagDto->getIsReference()), + ]; $expectedApiKey = [ - FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, - FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, - FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $config->getEnvId(), - FlagshipConstant::T_API_ITEM => HitType::TROUBLESHOOTING->value, - 'cv' => $customVariable - ]; + FlagshipConstant::VISITOR_ID_API_ITEM => $visitorId, + FlagshipConstant::DS_API_ITEM => FlagshipConstant::SDK_APP, + FlagshipConstant::CUSTOMER_ENV_ID_API_ITEM => $config->getEnvId(), + FlagshipConstant::T_API_ITEM => HitType::TROUBLESHOOTING->value, + 'cv' => $customVariable, + ]; $apiKey = $troubleshooting->toApiKeys(); diff --git a/tests/Hit/UsageHitTest.php b/tests/Hit/UsageHitTest.php index 732de212..60275917 100644 --- a/tests/Hit/UsageHitTest.php +++ b/tests/Hit/UsageHitTest.php @@ -14,10 +14,7 @@ public function testToApiKeys() { $config = new DecisionApiConfig(); $analyticHit = new UsageHit(); - $analyticHit->setVisitorId("visitor") - ->setLogLevel(LogLevel::INFO) - ->setLabel(TroubleshootingLabel::FLAG_VALUE_NOT_CALLED) - ->setConfig($config); + $analyticHit->setVisitorId("visitor")->setLogLevel(LogLevel::INFO)->setLabel(TroubleshootingLabel::FLAG_VALUE_NOT_CALLED)->setConfig($config); $this->assertSame('USAGE', $analyticHit->toApiKeys()['t']); } diff --git a/tests/Model/FlagDTOTest.php b/tests/Model/FlagDTOTest.php index dc5a7499..b8753407 100644 --- a/tests/Model/FlagDTOTest.php +++ b/tests/Model/FlagDTOTest.php @@ -42,18 +42,18 @@ public function testModificationInstance() $this->assertSame($variationId, $flagDTO->getVariationId()); - $arrayToJson = [ - FlagshipField::FIELD_KEY => $flagDTO->getKey(), - FlagshipField::FIELD_CAMPAIGN_ID => $flagDTO->getCampaignId(), - FlagshipField::FIELD_CAMPAIGN_NAME => $flagDTO->getCampaignName(), - FlagshipField::FIELD_VARIATION_GROUP_ID => $flagDTO->getVariationGroupId(), - FlagshipField::FIELD_VARIATION_GROUP_NAME => $flagDTO->getVariationGroupName(), - FlagshipField::FIELD_VARIATION_ID => $flagDTO->getVariationId(), - FlagshipField::FIELD_VARIATION_NAME => $flagDTO->getVariationName(), - FlagshipField::FIELD_IS_REFERENCE => $flagDTO->getIsReference(), - FlagshipField::FIELD_VALUE => $flagDTO->getValue(), - FlagshipField::FIELD_SLUG => $flagDTO->getSlug() - ]; + $arrayToJson = [ + FlagshipField::FIELD_KEY => $flagDTO->getKey(), + FlagshipField::FIELD_CAMPAIGN_ID => $flagDTO->getCampaignId(), + FlagshipField::FIELD_CAMPAIGN_NAME => $flagDTO->getCampaignName(), + FlagshipField::FIELD_VARIATION_GROUP_ID => $flagDTO->getVariationGroupId(), + FlagshipField::FIELD_VARIATION_GROUP_NAME => $flagDTO->getVariationGroupName(), + FlagshipField::FIELD_VARIATION_ID => $flagDTO->getVariationId(), + FlagshipField::FIELD_VARIATION_NAME => $flagDTO->getVariationName(), + FlagshipField::FIELD_IS_REFERENCE => $flagDTO->getIsReference(), + FlagshipField::FIELD_VALUE => $flagDTO->getValue(), + FlagshipField::FIELD_SLUG => $flagDTO->getSlug(), + ]; $this->assertJsonStringEqualsJsonString(json_encode($arrayToJson), json_encode($flagDTO)); } diff --git a/tests/Model/HttpResponseTest.php b/tests/Model/HttpResponseTest.php index ed878925..966c0899 100644 --- a/tests/Model/HttpResponseTest.php +++ b/tests/Model/HttpResponseTest.php @@ -12,9 +12,7 @@ public function testConstruct() { $statusCode = 200; $body = 'Body'; - $headers = [ - "accept" => "application/json" - ]; + $headers = ["accept" => "application/json"]; $httpResponse = new HttpResponse($statusCode, $body, $headers); $this->assertSame($statusCode, $httpResponse->getStatusCode()); diff --git a/tests/TestFunctional.php b/tests/TestFunctional.php index 5404535e..97adb333 100644 --- a/tests/TestFunctional.php +++ b/tests/TestFunctional.php @@ -12,26 +12,21 @@ $envId = getenv('FS_ENV_ID'); $apiKey = getenv('FS_API_KEY'); -Flagship::start($envId, $apiKey, DecisionApiConfig::decisionApi() - ->setCacheStrategy(CacheStrategy::BATCHING_AND_CACHING_ON_FAILURE)); +Flagship::start($envId, $apiKey, DecisionApiConfig::decisionApi()->setCacheStrategy(CacheStrategy::BATCHING_AND_CACHING_ON_FAILURE)); -$visitor = Flagship::newVisitor("visitor-1", true) - ->setContext(['ci-test' => true, 'test-ab' => true]) - ->build(); +$visitor = Flagship::newVisitor("visitor-1", true)->setContext(['ci-test' => true, 'test-ab' => true])->build(); $visitor->fetchFlags(); $defaultValue = 'default-value'; -$flag = $visitor->getFlag('ci_flag_1', ); +$flag = $visitor->getFlag('ci_flag_1',); $flagValue = $flag->getValue($defaultValue); TestCase::assertSame($defaultValue, $flagValue); TestCase::assertSame('Test-campaign ab', $flag->getMetadata()->getCampaignName()); //Test 2 -$visitor = Flagship::newVisitor("visitor-2", true) - ->setContext(['ci-test' => true, 'test-ab' => true]) - ->build(); +$visitor = Flagship::newVisitor("visitor-2", true)->setContext(['ci-test' => true, 'test-ab' => true])->build(); $visitor->fetchFlags(); @@ -42,9 +37,7 @@ TestCase::assertSame('Test-campaign ab', $flag->getMetadata()->getCampaignName()); //Test 3 -$visitor = Flagship::newVisitor("visitor-6", true) - ->setContext(['ci-test' => false, 'test-ab' => true]) - ->build(); +$visitor = Flagship::newVisitor("visitor-6", true)->setContext(['ci-test' => false, 'test-ab' => true])->build(); $visitor->fetchFlags(); diff --git a/tests/Traits/BuildApiTraitTest.php b/tests/Traits/BuildApiTraitTest.php index a7e6c107..7751492d 100644 --- a/tests/Traits/BuildApiTraitTest.php +++ b/tests/Traits/BuildApiTraitTest.php @@ -30,11 +30,11 @@ public function testBuildHeader() $headers = $buildHeader->invokeArgs($buildApiTraitMock, [$apiKey]); $headerArray = [ - FlagshipConstant::HEADER_X_API_KEY => $apiKey, - FlagshipConstant::HEADER_X_SDK_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON, - FlagshipConstant::HEADER_X_SDK_CLIENT => FlagshipConstant::SDK_LANGUAGE, - ]; + FlagshipConstant::HEADER_X_API_KEY => $apiKey, + FlagshipConstant::HEADER_X_SDK_VERSION => FlagshipConstant::SDK_VERSION, + FlagshipConstant::HEADER_CONTENT_TYPE => FlagshipConstant::HEADER_APPLICATION_JSON, + FlagshipConstant::HEADER_X_SDK_CLIENT => FlagshipConstant::SDK_LANGUAGE, + ]; $this->assertSame($headerArray, $headers); diff --git a/tests/Traits/CommonLogManagerTraitTest.php b/tests/Traits/CommonLogManagerTraitTest.php index 7db6c666..2113a236 100644 --- a/tests/Traits/CommonLogManagerTraitTest.php +++ b/tests/Traits/CommonLogManagerTraitTest.php @@ -9,7 +9,7 @@ class CommonLogManagerTraitTest extends TestCase public function testGetDateTime() { $logManagerTraitMock = $this->getMockForTrait("Flagship\Traits\CommonLogManagerTrait"); - $value = $logManagerTraitMock->getDateTime(); + $value = $logManagerTraitMock->getDateTime(); $this->assertMatchesRegularExpression("/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+/", $value); } } diff --git a/tests/Traits/LogTraitTest.php b/tests/Traits/LogTraitTest.php index c6378b28..977dbdc6 100644 --- a/tests/Traits/LogTraitTest.php +++ b/tests/Traits/LogTraitTest.php @@ -21,11 +21,10 @@ public function testLoginError() $message = "hello"; $context = ['exception' => 'hello Exception']; - $logManagerMock->expects($this->exactly(3))->method('error') - ->with( - $message, - $context - ); + $logManagerMock->expects($this->exactly(3))->method('error')->with( + $message, + $context + ); $config = new DecisionApiConfig(); $config->setLogManager($logManagerMock); @@ -60,11 +59,10 @@ public function testLogErrorSprintf() $tag = __FUNCTION__; $context = [FlagshipConstant::TAG => $tag]; - $logManagerMock->expects($this->exactly(2))->method('error') - ->with( - $message, - $context - ); + $logManagerMock->expects($this->exactly(2))->method('error')->with( + $message, + $context + ); $config = new DecisionApiConfig(); $config->setLogManager($logManagerMock); @@ -92,11 +90,10 @@ public function testLoginInfo() $message = "hello"; $context = ['exception' => 'hello Exception']; - $logManagerMock->expects($this->exactly(3))->method('info') - ->with( - $message, - $context - ); + $logManagerMock->expects($this->exactly(3))->method('info')->with( + $message, + $context + ); $config = new DecisionApiConfig(); $config->setLogManager($logManagerMock); @@ -130,11 +127,10 @@ public function testLogInfoSprintf() $tag = __FUNCTION__; $context = [FlagshipConstant::TAG => $tag]; - $logManagerMock->expects($this->exactly(2))->method('info') - ->with( - $message, - $context - ); + $logManagerMock->expects($this->exactly(2))->method('info')->with( + $message, + $context + ); $config = new DecisionApiConfig(); $config->setLogManager($logManagerMock); @@ -161,11 +157,10 @@ public function testWarning() $message = "hello"; $context = ['exception' => 'hello Exception']; - $logManagerMock->expects($this->exactly(3))->method('warning') - ->with( - $message, - $context - ); + $logManagerMock->expects($this->exactly(3))->method('warning')->with( + $message, + $context + ); $config = new DecisionApiConfig(); $config->setLogManager($logManagerMock); @@ -199,11 +194,10 @@ public function testWarningSprintf() $tag = __FUNCTION__; $context = [FlagshipConstant::TAG => $tag]; - $logManagerMock->expects($this->exactly(2))->method('warning') - ->with( - $message, - $context - ); + $logManagerMock->expects($this->exactly(2))->method('warning')->with( + $message, + $context + ); $config = new DecisionApiConfig(); $config->setLogManager($logManagerMock); @@ -230,11 +224,10 @@ public function testLogDebug() $message = "hello"; $context = ['exception' => 'hello Exception']; - $logManagerMock->expects($this->exactly(2))->method('debug') - ->with( - $message, - $context - ); + $logManagerMock->expects($this->exactly(2))->method('debug')->with( + $message, + $context + ); $config = new DecisionApiConfig(); $config->setLogLevel(LogLevel::DEBUG); @@ -260,16 +253,21 @@ public function testLogDebugSprintf() $message = "hello %s %s"; $tag = __FUNCTION__; - $args = ["there", ["key" => "value"]]; + $args = [ + "there", + ["key" => "value"], + ]; $context = [FlagshipConstant::TAG => $tag]; - $logArgs = [$args[0], json_encode($args[1])]; + $logArgs = [ + $args[0], + json_encode($args[1]), + ]; - $logManagerMock->expects($this->exactly(2))->method('debug') - ->with( - vsprintf($message, $logArgs), - $context - ); + $logManagerMock->expects($this->exactly(2))->method('debug')->with( + vsprintf($message, $logArgs), + $context + ); $config = new DecisionApiConfig(); $config->setLogLevel(LogLevel::DEBUG); @@ -297,19 +295,17 @@ public function testGetLogFormat() $message = "message"; $url = "http://localhost"; - $requestBody = [ - "key" => "value" - ]; + $requestBody = ["key" => "value"]; $headers = ["key" => "value"]; $duration = 300; $value = $getLogFormat->invokeArgs($logTraitMock, [$message, $url, $requestBody, $headers, $duration]); $expectedValue = [ - FlagshipConstant::LOG_FORMAT_MESSAGE => $message, - FlagshipConstant::LOG_FORMAT_URL => $url, - FlagshipConstant::LOG_FORMAT_REQUEST_BODY => $requestBody, - FlagshipConstant::LOG_FORMAT_REQUEST_HEADERS => $headers, - FlagshipConstant::LOG_FORMAT_DURATION => $duration - ]; + FlagshipConstant::LOG_FORMAT_MESSAGE => $message, + FlagshipConstant::LOG_FORMAT_URL => $url, + FlagshipConstant::LOG_FORMAT_REQUEST_BODY => $requestBody, + FlagshipConstant::LOG_FORMAT_REQUEST_HEADERS => $headers, + FlagshipConstant::LOG_FORMAT_DURATION => $duration, + ]; $this->assertSame($expectedValue, $value); } diff --git a/tests/Traits/Round.php b/tests/Traits/Round.php index 2aa90a5f..0f945a7c 100644 --- a/tests/Traits/Round.php +++ b/tests/Traits/Round.php @@ -1,6 +1,5 @@ setLogManager($logManagerStub); $value = "linux"; - $check = $checkFlagshipContext->invokeArgs($validatorTraitMock, ['item',$value, $config]); + $check = $checkFlagshipContext->invokeArgs($validatorTraitMock, ['item', $value, $config]); $this->assertNull($check); $sdk = FlagshipConstant::FLAGSHIP_SDK; - $logManagerStub->expects($this->once())->method('error') - ->with( - sprintf( - FlagshipConstant::FLAGSHIP_PREDEFINED_CONTEXT_ERROR, - "sdk_osName", - "string" - ) - ); + $logManagerStub->expects($this->once())->method('error')->with( + sprintf( + FlagshipConstant::FLAGSHIP_PREDEFINED_CONTEXT_ERROR, + "sdk_osName", + "string" + ) + ); $value = 1; $check = $checkFlagshipContext->invokeArgs( $validatorTraitMock, - [FlagshipContext::OS_NAME,$value, $config] + [ + FlagshipContext::OS_NAME, + $value, + $config, + ] ); $this->assertFalse($check); $value = "mac"; $check = $checkFlagshipContext->invokeArgs( $validatorTraitMock, - [FlagshipContext::OS_NAME,$value, $config] + [ + FlagshipContext::OS_NAME, + $value, + $config, + ] ); $this->assertTrue($check); } @@ -216,10 +223,9 @@ public function testIsNumeric() $this->assertTrue($isNumeric->invokeArgs($validatorTraitMock, [1, $itemName, $config])); $sdk = FlagshipConstant::FLAGSHIP_SDK; - $logManagerStub->expects($this->once())->method('error') - ->with( - sprintf(FlagshipConstant::TYPE_ERROR, $itemName, 'numeric') - ); + $logManagerStub->expects($this->once())->method('error')->with( + sprintf(FlagshipConstant::TYPE_ERROR, $itemName, 'numeric') + ); $this->assertFalse($isNumeric->invokeArgs($validatorTraitMock, ["abc", $itemName, $config])); } diff --git a/tests/Utils/ConfigManagerTest.php b/tests/Utils/ConfigManagerTest.php index 8fa532f3..d74874c3 100644 --- a/tests/Utils/ConfigManagerTest.php +++ b/tests/Utils/ConfigManagerTest.php @@ -11,8 +11,8 @@ class ConfigManagerTest extends TestCase { public function testInstance() { - $config = new DecisionApiConfig(); - $decisionManager = new ApiManager(new HttpClient(), $config); + $config = new DecisionApiConfig(); + $decisionManager = new ApiManager(new HttpClient(), $config); $trackingManager = new TrackingManager($config, new HttpClient()); $configManager = new ConfigManager($config, $decisionManager, $trackingManager); diff --git a/tests/Utils/FlagshipLogManagerTest.php b/tests/Utils/FlagshipLogManagerTest.php index a07ed9f6..82c685b3 100644 --- a/tests/Utils/FlagshipLogManagerTest.php +++ b/tests/Utils/FlagshipLogManagerTest.php @@ -15,9 +15,13 @@ public function contextDataProvider(): array { return [ - 'flagshipSdk' => FlagshipConstant::FLAGSHIP_SDK, - 'context' => ['process' => 'testError', 'context2' => 'value 2'], - 'contextString' => '[process => testError, context2 => value 2]' ]; + 'flagshipSdk' => FlagshipConstant::FLAGSHIP_SDK, + 'context' => [ + 'process' => 'testError', + 'context2' => 'value 2', + ], + 'contextString' => '[process => testError, context2 => value 2]', + ]; } public function getMessageError($formatDate, $level, $message, $tag): string @@ -30,13 +34,9 @@ public function testError() { $data = $this->contextDataProvider(); $message = 'Test Error'; - $logManager = $this->getMockBuilder(FlagshipLogManager8::class) - ->onlyMethods(["getDateTime"]) - ->getMock(); + $logManager = $this->getMockBuilder(FlagshipLogManager8::class)->onlyMethods(["getDateTime"])->getMock(); $formatDate = "2023-02-15 11:08:10.455"; - $logManager->expects($this->once()) - ->method("getDateTime") - ->willReturn($formatDate); + $logManager->expects($this->once())->method("getDateTime")->willReturn($formatDate); $logManager->error($message, $data['context']); $level = LogLevel::ERROR; @@ -49,13 +49,9 @@ public function testInfo() { $data = $this->contextDataProvider(); $message = 'Test info'; - $logManager = $this->getMockBuilder(FlagshipLogManager8::class) - ->onlyMethods(["getDateTime"]) - ->getMock(); + $logManager = $this->getMockBuilder(FlagshipLogManager8::class)->onlyMethods(["getDateTime"])->getMock(); $formatDate = "2023-02-15 11:08:10.455"; - $logManager->expects($this->once()) - ->method("getDateTime") - ->willReturn($formatDate); + $logManager->expects($this->once())->method("getDateTime")->willReturn($formatDate); $logManager->info($message, $data['context']); $level = LogLevel::INFO; $messageError = $this->getMessageError($formatDate, $level, $message, $data['contextString']); @@ -66,13 +62,9 @@ public function testAlert() { $data = $this->contextDataProvider(); $message = 'Test Error'; - $logManager = $this->getMockBuilder(FlagshipLogManager8::class) - ->onlyMethods(["getDateTime"]) - ->getMock(); + $logManager = $this->getMockBuilder(FlagshipLogManager8::class)->onlyMethods(["getDateTime"])->getMock(); $formatDate = "2023-02-15 11:08:10.455"; - $logManager->expects($this->once()) - ->method("getDateTime") - ->willReturn($formatDate); + $logManager->expects($this->once())->method("getDateTime")->willReturn($formatDate); $logManager->alert($message, $data['context']); $level = LogLevel::ALERT; $messageError = $this->getMessageError($formatDate, $level, $message, $data['contextString']); @@ -83,13 +75,9 @@ public function testEmergency() { $data = $this->contextDataProvider(); $message = 'Test Error'; - $logManager = $this->getMockBuilder(FlagshipLogManager8::class) - ->onlyMethods(["getDateTime"]) - ->getMock(); + $logManager = $this->getMockBuilder(FlagshipLogManager8::class)->onlyMethods(["getDateTime"])->getMock(); $formatDate = "2023-02-15 11:08:10.455"; - $logManager->expects($this->once()) - ->method("getDateTime") - ->willReturn($formatDate); + $logManager->expects($this->once())->method("getDateTime")->willReturn($formatDate); $logManager->emergency($message, $data['context']); $level = LogLevel::EMERGENCY; $messageError = $this->getMessageError($formatDate, $level, $message, $data['contextString']); @@ -101,13 +89,9 @@ public function testLog() { $data = $this->contextDataProvider(); $message = 'Test Error'; - $logManager = $this->getMockBuilder(FlagshipLogManager8::class) - ->onlyMethods(["getDateTime"]) - ->getMock(); + $logManager = $this->getMockBuilder(FlagshipLogManager8::class)->onlyMethods(["getDateTime"])->getMock(); $formatDate = "2023-02-15 11:08:10.455"; - $logManager->expects($this->once()) - ->method("getDateTime") - ->willReturn($formatDate); + $logManager->expects($this->once())->method("getDateTime")->willReturn($formatDate); $level = LogLevel::EMERGENCY; $logManager->log($level, $message, $data['context']); $messageError = $this->getMessageError($formatDate, $level, $message, $data['contextString']); @@ -119,13 +103,9 @@ public function testWarning() { $data = $this->contextDataProvider(); $message = 'Test Error'; - $logManager = $this->getMockBuilder(FlagshipLogManager8::class) - ->onlyMethods(["getDateTime"]) - ->getMock(); + $logManager = $this->getMockBuilder(FlagshipLogManager8::class)->onlyMethods(["getDateTime"])->getMock(); $formatDate = "2023-02-15 11:08:10.455"; - $logManager->expects($this->once()) - ->method("getDateTime") - ->willReturn($formatDate); + $logManager->expects($this->once())->method("getDateTime")->willReturn($formatDate); $logManager->warning($message, $data['context']); $level = LogLevel::WARNING; $messageError = $this->getMessageError($formatDate, $level, $message, $data['contextString']); @@ -136,13 +116,9 @@ public function testCritical() { $data = $this->contextDataProvider(); $message = 'Test Error'; - $logManager = $this->getMockBuilder(FlagshipLogManager8::class) - ->onlyMethods(["getDateTime"]) - ->getMock(); + $logManager = $this->getMockBuilder(FlagshipLogManager8::class)->onlyMethods(["getDateTime"])->getMock(); $formatDate = "2023-02-15 11:08:10.455"; - $logManager->expects($this->once()) - ->method("getDateTime") - ->willReturn($formatDate); + $logManager->expects($this->once())->method("getDateTime")->willReturn($formatDate); $logManager->critical($message, $data['context']); $level = LogLevel::CRITICAL; $messageError = $this->getMessageError($formatDate, $level, $message, $data['contextString']); @@ -153,13 +129,9 @@ public function testNotice() { $data = $this->contextDataProvider(); $message = 'Test Notice'; - $logManager = $this->getMockBuilder(FlagshipLogManager8::class) - ->onlyMethods(["getDateTime"]) - ->getMock(); + $logManager = $this->getMockBuilder(FlagshipLogManager8::class)->onlyMethods(["getDateTime"])->getMock(); $formatDate = "2023-02-15 11:08:10.455"; - $logManager->expects($this->once()) - ->method("getDateTime") - ->willReturn($formatDate); + $logManager->expects($this->once())->method("getDateTime")->willReturn($formatDate); $logManager->notice($message, $data['context']); $level = LogLevel::NOTICE; $messageError = $this->getMessageError($formatDate, $level, $message, $data['contextString']); @@ -171,13 +143,9 @@ public function testDebug() { $data = $this->contextDataProvider(); $message = 'Test Debug'; - $logManager = $this->getMockBuilder(FlagshipLogManager8::class) - ->onlyMethods(["getDateTime"]) - ->getMock(); + $logManager = $this->getMockBuilder(FlagshipLogManager8::class)->onlyMethods(["getDateTime"])->getMock(); $formatDate = "2023-02-15 11:08:10.455"; - $logManager->expects($this->once()) - ->method("getDateTime") - ->willReturn($formatDate); + $logManager->expects($this->once())->method("getDateTime")->willReturn($formatDate); $logManager->debug($message, $data['context']); $level = LogLevel::DEBUG; $messageError = $this->getMessageError($formatDate, $level, $message, $data['contextString']); diff --git a/tests/Utils/HttpClientTest.php b/tests/Utils/HttpClientTest.php index 00d4290b..98e51805 100644 --- a/tests/Utils/HttpClientTest.php +++ b/tests/Utils/HttpClientTest.php @@ -49,11 +49,12 @@ public function testBuildUrl() $versionSDkKey . '=' . $versionSDkValue; $urlBuild = $buildMethod->invokeArgs( $client, - [$urlOriginal, - [ - $visitoKey => $visitorid, - $versionSDkKey => $versionSDkValue - ] + [ + $urlOriginal, + [ + $visitoKey => $visitorid, + $versionSDkKey => $versionSDkValue, + ], ] ); $this->assertEquals($urlExpected, $urlBuild); diff --git a/tests/Visitor/CampaignsData.php b/tests/Visitor/CampaignsData.php index bad1176c..58740c99 100644 --- a/tests/Visitor/CampaignsData.php +++ b/tests/Visitor/CampaignsData.php @@ -9,140 +9,80 @@ trait CampaignsData public function campaignsModifications() { return [ - (new FlagDTO()) - ->setKey('Number') - ->setValue(5) - ->setIsReference(false) - ->setVariationGroupId('c8pimlr7n0ig3a0pt2jg') - ->setCampaignId('c8pimlr7n0ig3a0pt2ig') - ->setVariationId('c8pimlr7n0ig3a0pt2kg') - ->setSlug("campaign_1") - ->setCampaignType("ab"), - (new FlagDTO()) - ->setKey('isBool') - ->setValue(false) - ->setIsReference(false) - ->setVariationGroupId('c8pimlr7n0ig3a0pt2jg') - ->setCampaignId('c8pimlr7n0ig3a0pt2ig') - ->setVariationId('c8pimlr7n0ig3a0pt2kg') - ->setSlug("campaign_1") - ->setCampaignType("ab"), - (new FlagDTO()) - ->setKey('background') - ->setValue('EE3300') - ->setIsReference(false) - ->setVariationGroupId('c8pimlr7n0ig3a0pt2jg') - ->setCampaignId('c8pimlr7n0ig3a0pt2ig') - ->setVariationId('c8pimlr7n0ig3a0pt2kg') - ->setSlug("campaign_1") - ->setCampaignType("ab"), - (new FlagDTO()) - ->setKey('borderColor') - ->setValue('blue') - ->setIsReference(false) - ->setVariationGroupId('c8pimlr7n0ig3a0pt2jg') - ->setCampaignId('c8pimlr7n0ig3a0pt2ig') - ->setVariationId('c8pimlr7n0ig3a0pt2kg') - ->setSlug("campaign_1") - ->setCampaignType("ab"), - (new FlagDTO()) - ->setKey('Null') - ->setValue(null) - ->setIsReference(false) - ->setVariationGroupId('c8pimlr7n0ig3a0pt2jg') - ->setCampaignId('c8pimlr7n0ig3a0pt2ig') - ->setVariationId('c8pimlr7n0ig3a0pt2kg') - ->setSlug("campaign_1") - ->setCampaignType("ab"), - (new FlagDTO()) - ->setKey('Empty') - ->setValue("") - ->setIsReference(false) - ->setVariationGroupId('c8pimlr7n0ig3a0pt2jg') - ->setCampaignId('c8pimlr7n0ig3a0pt2ig') - ->setVariationId('c8pimlr7n0ig3a0pt2kg') - ->setSlug("campaign_1") - ->setCampaignType("ab"), - (new FlagDTO()) - ->setKey('php') - ->setValue("value2") - ->setIsReference(false) - ->setVariationGroupId('c7q1lmuru9u05agq3apg') - ->setCampaignId('c7q1lmuru9u05agq3aog') - ->setVariationId('c7q1m8p172r04gs741og') - ->setSlug("campaign_2") - ->setCampaignType("ab"), - ]; + (new FlagDTO())->setKey('Number')->setValue(5)->setIsReference(false)->setVariationGroupId('c8pimlr7n0ig3a0pt2jg')->setCampaignId('c8pimlr7n0ig3a0pt2ig')->setVariationId('c8pimlr7n0ig3a0pt2kg')->setSlug("campaign_1")->setCampaignType("ab"), + (new FlagDTO())->setKey('isBool')->setValue(false)->setIsReference(false)->setVariationGroupId('c8pimlr7n0ig3a0pt2jg')->setCampaignId('c8pimlr7n0ig3a0pt2ig')->setVariationId('c8pimlr7n0ig3a0pt2kg')->setSlug("campaign_1")->setCampaignType("ab"), + (new FlagDTO())->setKey('background')->setValue('EE3300')->setIsReference(false)->setVariationGroupId('c8pimlr7n0ig3a0pt2jg')->setCampaignId('c8pimlr7n0ig3a0pt2ig')->setVariationId('c8pimlr7n0ig3a0pt2kg')->setSlug("campaign_1")->setCampaignType("ab"), + (new FlagDTO())->setKey('borderColor')->setValue('blue')->setIsReference(false)->setVariationGroupId('c8pimlr7n0ig3a0pt2jg')->setCampaignId('c8pimlr7n0ig3a0pt2ig')->setVariationId('c8pimlr7n0ig3a0pt2kg')->setSlug("campaign_1")->setCampaignType("ab"), + (new FlagDTO())->setKey('Null')->setValue(null)->setIsReference(false)->setVariationGroupId('c8pimlr7n0ig3a0pt2jg')->setCampaignId('c8pimlr7n0ig3a0pt2ig')->setVariationId('c8pimlr7n0ig3a0pt2kg')->setSlug("campaign_1")->setCampaignType("ab"), + (new FlagDTO())->setKey('Empty')->setValue("")->setIsReference(false)->setVariationGroupId('c8pimlr7n0ig3a0pt2jg')->setCampaignId('c8pimlr7n0ig3a0pt2ig')->setVariationId('c8pimlr7n0ig3a0pt2kg')->setSlug("campaign_1")->setCampaignType("ab"), + (new FlagDTO())->setKey('php')->setValue("value2")->setIsReference(false)->setVariationGroupId('c7q1lmuru9u05agq3apg')->setCampaignId('c7q1lmuru9u05agq3aog')->setVariationId('c7q1m8p172r04gs741og')->setSlug("campaign_2")->setCampaignType("ab"), + ]; } public function campaigns() { return [ - "visitorId" => "", - "campaigns" => [ - [ - "id" => "c8pimlr7n0ig3a0pt2ig", - "slug" => "campaign_1", - "type" => "ab", - "variationGroupId" => "c8pimlr7n0ig3a0pt2jg", - "variation" => [ - "id" => "c8pimlr7n0ig3a0pt2kg", - "modifications" => [ - "type" => "FLAG", - "value" => [ - "Number" => 5, - "isBool" => false, - "background" => "EE3300", - "borderColor" => "blue", - "Null" => null, - "Empty" => "" - ] - ], - "reference" => false - ] - ], - [ - "id" => "c7q1lmuru9u05agq3aog", - "slug" => "campaign_2", - "type" => "ab", - "variationGroupId" => "c7q1lmuru9u05agq3apg", - "variation" => [ - "id" => "c7q1m8p172r04gs741og", - "modifications" => [ - "type" => "FLAG", - "value" => [ - "php" => "value2" - ] - ], - "reference" => false - ] - ] - ] - ]; + "visitorId" => "", + "campaigns" => [ + [ + "id" => "c8pimlr7n0ig3a0pt2ig", + "slug" => "campaign_1", + "type" => "ab", + "variationGroupId" => "c8pimlr7n0ig3a0pt2jg", + "variation" => [ + "id" => "c8pimlr7n0ig3a0pt2kg", + "modifications" => [ + "type" => "FLAG", + "value" => [ + "Number" => 5, + "isBool" => false, + "background" => "EE3300", + "borderColor" => "blue", + "Null" => null, + "Empty" => "", + ], + ], + "reference" => false, + ], + ], + [ + "id" => "c7q1lmuru9u05agq3aog", + "slug" => "campaign_2", + "type" => "ab", + "variationGroupId" => "c7q1lmuru9u05agq3apg", + "variation" => [ + "id" => "c7q1m8p172r04gs741og", + "modifications" => [ + "type" => "FLAG", + "value" => ["php" => "value2"], + ], + "reference" => false, + ], + ], + ], + ]; } public function campaigns2() { return [ - "visitorId" => "", - "campaigns" => [ - [ - "id" => "c69sir3q6mc0ggqin8ag", - "slug" => "campaign_3", - "type" => "toggle", - "variationGroupId" => "c69sir3q6mc0ggqin8bg", - "variation" => [ - "id" => "c69sir3q6mc0ggqin8c0", - "modifications" => [ - "type" => "FLAG", - "value" => [ - "myAwesomeFeature" => 10 - ] - ], - "reference" => false - ] - ] - ] - ]; + "visitorId" => "", + "campaigns" => [ + [ + "id" => "c69sir3q6mc0ggqin8ag", + "slug" => "campaign_3", + "type" => "toggle", + "variationGroupId" => "c69sir3q6mc0ggqin8bg", + "variation" => [ + "id" => "c69sir3q6mc0ggqin8c0", + "modifications" => [ + "type" => "FLAG", + "value" => ["myAwesomeFeature" => 10], + ], + "reference" => false, + ], + ], + ], + ]; } } diff --git a/tests/Visitor/DefaultStrategyTest.php b/tests/Visitor/DefaultStrategyTest.php index 6db5d009..5af535e7 100644 --- a/tests/Visitor/DefaultStrategyTest.php +++ b/tests/Visitor/DefaultStrategyTest.php @@ -54,49 +54,13 @@ class DefaultStrategyTest extends TestCase public function modifications(): array { return [ - (new FlagDTO()) - ->setKey('background') - ->setValue('EE3300') - ->setIsReference(false) - ->setVariationGroupId('c1e3t1nvfu1ncqfcdcp0') - ->setCampaignId('c1e3t1nvfu1ncqfcdco0') - ->setVariationId('c1e3t1nvfu1ncqfcdcq0'), - (new FlagDTO()) - ->setKey('borderColor') - ->setValue('blue') - ->setIsReference(false) - ->setVariationGroupId('c1e3t1sddfu1ncqfcdcp0') - ->setCampaignId('c1slf3t1nvfu1ncqfcdcfd') - ->setVariationId('cleo3t1nvfu1ncqfcdcsdf'), - (new FlagDTO()) - ->setKey('Null') - ->setValue(null) - ->setIsReference(false) - ->setVariationGroupId('c1e3t1sddfu1ncqfcdcp0') - ->setCampaignId('c1slf3t1nvfu1ncqfcdcfd') - ->setVariationId('cleo3t1nvfu1ncqfcdcsdf'), - (new FlagDTO()) - ->setKey('Empty') - ->setValue("") - ->setIsReference(false) - ->setVariationGroupId('c1e3t1sddfu1ncqfcdcp0') - ->setCampaignId('c1slf3t1nvfu1ncqfcdcfd') - ->setVariationId('cleo3t1nvfu1ncqfcdcsdf'), - (new FlagDTO()) - ->setKey('isBool') - ->setValue(false) - ->setIsReference(false) - ->setVariationGroupId('c1e3t1sddfu1ncqfcdcp0') - ->setCampaignId('c1slf3t1nvfu1ncqfcdcfd') - ->setVariationId('cleo3t1nvfu1ncqfcdcsdf'), - (new FlagDTO()) - ->setKey('Number') - ->setValue(5) - ->setIsReference(false) - ->setVariationGroupId('c1e3t1sddfu1ncqfcdcp0') - ->setCampaignId('c1slf3t1nvfu1ncqfcdcfd') - ->setVariationId('cleo3t1nvfu1ncqfcdcsdf'), - ]; + (new FlagDTO())->setKey('background')->setValue('EE3300')->setIsReference(false)->setVariationGroupId('c1e3t1nvfu1ncqfcdcp0')->setCampaignId('c1e3t1nvfu1ncqfcdco0')->setVariationId('c1e3t1nvfu1ncqfcdcq0'), + (new FlagDTO())->setKey('borderColor')->setValue('blue')->setIsReference(false)->setVariationGroupId('c1e3t1sddfu1ncqfcdcp0')->setCampaignId('c1slf3t1nvfu1ncqfcdcfd')->setVariationId('cleo3t1nvfu1ncqfcdcsdf'), + (new FlagDTO())->setKey('Null')->setValue(null)->setIsReference(false)->setVariationGroupId('c1e3t1sddfu1ncqfcdcp0')->setCampaignId('c1slf3t1nvfu1ncqfcdcfd')->setVariationId('cleo3t1nvfu1ncqfcdcsdf'), + (new FlagDTO())->setKey('Empty')->setValue("")->setIsReference(false)->setVariationGroupId('c1e3t1sddfu1ncqfcdcp0')->setCampaignId('c1slf3t1nvfu1ncqfcdcfd')->setVariationId('cleo3t1nvfu1ncqfcdcsdf'), + (new FlagDTO())->setKey('isBool')->setValue(false)->setIsReference(false)->setVariationGroupId('c1e3t1sddfu1ncqfcdcp0')->setCampaignId('c1slf3t1nvfu1ncqfcdcfd')->setVariationId('cleo3t1nvfu1ncqfcdcsdf'), + (new FlagDTO())->setKey('Number')->setValue(5)->setIsReference(false)->setVariationGroupId('c1e3t1sddfu1ncqfcdcp0')->setCampaignId('c1slf3t1nvfu1ncqfcdcfd')->setVariationId('cleo3t1nvfu1ncqfcdcsdf'), + ]; } @@ -120,9 +84,9 @@ public function testUpdateContext() $visitorId = "visitor_id"; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25 - ]; + 'name' => 'visitor_name', + 'age' => 25, + ]; /** * @var ApiManager|MockObject $decisionManager @@ -219,7 +183,10 @@ public function testUpdateContext() public function testUpdateContextCollection() { - $configData = ['envId' => 'env_value', 'apiKey' => 'key_value']; + $configData = [ + 'envId' => 'env_value', + 'apiKey' => 'key_value', + ]; $config = new DecisionApiConfig($configData['envId'], $configData['apiKey']); $visitorId = "visitor_id"; $visitorContext = [ @@ -248,17 +215,15 @@ public function testUpdateContextCollection() $defaultStrategy = new DefaultStrategy($visitor); $newVisitorContext = [ - 'vip' => true, - 'gender' => 'F' - ]; + 'vip' => true, + 'gender' => 'F', + ]; $defaultStrategy->updateContextCollection($newVisitorContext); $this->assertCount(8, $visitor->getContext()); //Test without Key - $newVisitorContext = [ - 'vip' - ]; + $newVisitorContext = ['vip']; $defaultStrategy->updateContextCollection($newVisitorContext); $this->assertCount(8, $visitor->getContext()); @@ -268,9 +233,9 @@ public function testClearContext() { $visitorId = "visitor_id"; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25 - ]; + 'name' => 'visitor_name', + 'age' => 25, + ]; $config = new DecisionApiConfig('envId', 'apiKey'); /** * @var ApiManager|MockObject $decisionManager @@ -336,9 +301,9 @@ public function testAuthenticate() $visitorId = "visitor_id"; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25 - ]; + 'name' => 'visitor_name', + 'age' => 25, + ]; $config = new DecisionApiConfig('envId', 'apiKey'); $config->setLogManager($logManagerStub); @@ -355,21 +320,19 @@ public function testAuthenticate() $visitor = new VisitorDelegate(new Container(), $configManager, $visitorId, false, $visitorContext, true); $authenticateName = "authenticate"; - $logManagerStub->expects($this->exactly(2)) - ->method('error') - ->with( - $this->logicalOr( - sprintf( - FlagshipConstant::VISITOR_ID_ERROR, - $authenticateName - ), - sprintf( - FlagshipConstant::FLAGSHIP_VISITOR_ALREADY_AUTHENTICATE, - $authenticateName - ) + $logManagerStub->expects($this->exactly(2))->method('error')->with( + $this->logicalOr( + sprintf( + FlagshipConstant::VISITOR_ID_ERROR, + $authenticateName ), - [FlagshipConstant::TAG => $authenticateName] - ); + sprintf( + FlagshipConstant::FLAGSHIP_VISITOR_ALREADY_AUTHENTICATE, + $authenticateName + ) + ), + [FlagshipConstant::TAG => $authenticateName] + ); //Test authenticate with null visitorId @@ -539,8 +502,8 @@ public function testUnauthenticate() $this->logicalOr( FlagshipConstant::FLAGSHIP_VISITOR_NOT_AUTHENTIFICATE ), - [FlagshipConstant::TAG => $unauthenticateName] - ); + [FlagshipConstant::TAG => $unauthenticateName] + ); $defaultStrategy = new DefaultStrategy($visitor); $defaultStrategy->unauthenticate(); @@ -676,8 +639,7 @@ public function testFetchFlags() $configManager = new ConfigManager($config, $decisionManager, $trackerManager); - $configManager->setDecisionManager($decisionManager) - ->setTrackingManager($trackingManagerMock); + $configManager->setDecisionManager($decisionManager)->setTrackingManager($trackingManagerMock); $visitor = new VisitorDelegate(new Container(), $configManager, "visitorId", false, [], true); @@ -709,52 +671,51 @@ public function testFetchFlagsTroubleshootingData() false, false, true, - ["setTroubleshootingData", "addTroubleshootingHit"] + [ + "setTroubleshootingData", + "addTroubleshootingHit", + ] ); $decisionManager = new ApiManager($httpClientMock, $config); $httpResponseBody = $this->campaigns(); $troubleshootingData = [ - "startDate" => "2023-04-13T09:33:38.049Z", - "endDate" => "2023-04-13T10:03:38.049Z", - "timezone" => "Europe/Paris", - "traffic" => 40 - ]; + "startDate" => "2023-04-13T09:33:38.049Z", + "endDate" => "2023-04-13T10:03:38.049Z", + "timezone" => "Europe/Paris", + "traffic" => 40, + ]; $httpResponseBody["extras"] = [ - "accountSettings" => [ - "@type" => "type.googleapis.com/flagship.protobuf.AccountSettings", - "enabledXPC" => false, - "enabled1V1T" => false, - "troubleshooting" => $troubleshootingData - ] - ]; + "accountSettings" => [ + "@type" => "type.googleapis.com/flagship.protobuf.AccountSettings", + "enabledXPC" => false, + "enabled1V1T" => false, + "troubleshooting" => $troubleshootingData, + ], + ]; - $httpClientMock->expects($this->exactly(3))->method("post") - ->willReturn(new HttpResponse(200, $httpResponseBody)); + $httpClientMock->expects($this->exactly(3))->method("post")->willReturn(new HttpResponse(200, $httpResponseBody)); - $trackingManagerMock->expects($this->exactly(3))->method("setTroubleshootingData") - ->with($this->callback(function ($param) use ($troubleshootingData) { + $trackingManagerMock->expects($this->exactly(3))->method("setTroubleshootingData")->with($this->callback(function ($param) use ($troubleshootingData) { $startDate = new DateTime($troubleshootingData['startDate']); $endDate = new DateTime($troubleshootingData['endDate']); return $param->getTraffic() === $troubleshootingData['traffic'] && $param->getTimezone() === $troubleshootingData['timezone'] && $param->getStartDate()->getTimestamp() === $startDate->getTimestamp() && $param->getEndDate()->getTimestamp() === $endDate->getTimestamp(); - })); + })); $matcher = $this->exactly(6); - $trackingManagerMock->expects($matcher) - ->method("addTroubleshootingHit") - ->with( - $this->logicalOr( - $this->callback(function ($param) { + $trackingManagerMock->expects($matcher)->method("addTroubleshootingHit")->with( + $this->logicalOr( + $this->callback(function ($param) { return $param->getLabel() === TroubleshootingLabel::VISITOR_FETCH_CAMPAIGNS || $param->getLabel() === TroubleshootingLabel::VISITOR_SEND_HIT; - }) - ) - ); + }) + ) + ); $configManager = new ConfigManager($config, $decisionManager, $trackingManagerMock); @@ -812,7 +773,10 @@ public function testSendHit() */ $trackerManagerMock = $this->getMockForAbstractClass( 'Flagship\Api\TrackingManagerAbstract', - [$config, new HttpClient()], + [ + $config, + new HttpClient(), + ], '', true, true, @@ -852,11 +816,9 @@ public function testSendHit() $item = new Item($transitionId, $itemName, $itemCode); - $trackerManagerMock->expects($this->exactly(5)) - ->method('addHit') - ->with( - $this->logicalOr($page, $screen, $transition, $event, $item) - ); + $trackerManagerMock->expects($this->exactly(5))->method('addHit')->with( + $this->logicalOr($page, $screen, $transition, $event, $item) + ); //Test type page $defaultStrategy->sendHit($page); @@ -905,7 +867,10 @@ public function testSendHitWithLog() $config = new DecisionApiConfig(); $trackerManagerMock = $this->getMockForAbstractClass( 'Flagship\Api\TrackingManagerAbstract', - [$config, new HttpClient()], + [ + $config, + new HttpClient(), + ], '', true, true, @@ -940,15 +905,12 @@ public function testSendHitWithLog() $page = new Page(""); - $logManagerMock->expects($this->exactly(1)) - ->method('error') - ->with( - $page->getErrorMessage(), - [FlagshipConstant::TAG => FlagshipConstant::TAG_SEND_HIT] - ); + $logManagerMock->expects($this->exactly(1))->method('error')->with( + $page->getErrorMessage(), + [FlagshipConstant::TAG => FlagshipConstant::TAG_SEND_HIT] + ); - $trackerManagerMock->expects($this->never()) - ->method('sendHit'); + $trackerManagerMock->expects($this->never())->method('sendHit'); $defaultStrategy->sendHit($page); } @@ -965,7 +927,10 @@ public function testUserExposed() true, true, true, - ['error', 'info'] + [ + 'error', + 'info', + ] ); $config = new DecisionApiConfig('envId', 'apiKey'); @@ -976,7 +941,10 @@ public function testUserExposed() */ $trackerManagerStub = $this->getMockForAbstractClass( 'Flagship\Api\TrackingManagerAbstract', - [$config, new HttpClient()], + [ + $config, + new HttpClient(), + ], '', true, true, @@ -994,17 +962,7 @@ public function testUserExposed() $key = "key"; $flagDTO = new FlagDTO(); - $flagDTO->setKey($key) - ->setCampaignId("campaignId") - ->setVariationGroupId("variationGroupId") - ->setVariationId("variationId") - ->setIsReference(false) - ->setCampaignType("campaignType") - ->setSlug("slug") - ->setCampaignName("campaignName") - ->setVariationGroupName("variationGroupName") - ->setVariationName("variationName") - ->setValue("value"); + $flagDTO->setKey($key)->setCampaignId("campaignId")->setVariationGroupId("variationGroupId")->setVariationId("variationId")->setIsReference(false)->setCampaignType("campaignType")->setSlug("slug")->setCampaignName("campaignName")->setVariationGroupName("variationGroupName")->setVariationName("variationName")->setValue("value"); $defaultValue = "default"; $flagMetadata = new FSFlagMetadata( @@ -1020,14 +978,7 @@ public function testUserExposed() ); $activate = new Activate($flagDTO->getVariationGroupId(), $flagDTO->getVariationId()); - $activate - ->setFlagKey($flagDTO->getKey()) - ->setFlagValue($flagDTO->getValue()) - ->setFlagDefaultValue($defaultValue) - ->setFlagMetadata($flagMetadata) - ->setVisitorContext($visitor->getContext()) - ->setVisitorId($visitor->getVisitorId()) - ->setConfig($config); + $activate->setFlagKey($flagDTO->getKey())->setFlagValue($flagDTO->getValue())->setFlagDefaultValue($defaultValue)->setFlagMetadata($flagMetadata)->setVisitorContext($visitor->getContext())->setVisitorId($visitor->getVisitorId())->setConfig($config); $trackerManagerStub->expects($this->exactly(2)) ->method('activateFlag') @@ -1042,27 +993,26 @@ public function testUserExposed() $functionName = FlagshipConstant::FLAG_USER_EXPOSED; - $logManagerStub->expects($this->exactly(3))->method('info') - ->with( - $this->logicalOr( - sprintf( - FlagshipConstant::USER_EXPOSED_NO_FLAG_ERROR, - $visitor->getVisitorId(), - $key - ), - sprintf( - FlagshipConstant::USER_EXPOSED_CAST_ERROR, - $visitor->getVisitorId(), - $key - ), - sprintf( - FlagshipConstant::VISITOR_EXPOSED_VALUE_NOT_CALLED, - $visitor->getVisitorId(), - $key - ) + $logManagerStub->expects($this->exactly(3))->method('info')->with( + $this->logicalOr( + sprintf( + FlagshipConstant::USER_EXPOSED_NO_FLAG_ERROR, + $visitor->getVisitorId(), + $key ), - [FlagshipConstant::TAG => $functionName] - ); + sprintf( + FlagshipConstant::USER_EXPOSED_CAST_ERROR, + $visitor->getVisitorId(), + $key + ), + sprintf( + FlagshipConstant::VISITOR_EXPOSED_VALUE_NOT_CALLED, + $visitor->getVisitorId(), + $key + ) + ), + [FlagshipConstant::TAG => $functionName] + ); //Test flag null $activate->setFlagDefaultValue($defaultValue); @@ -1086,7 +1036,10 @@ public function testGetFlagValue() true, true, true, - ['error', 'info'] + [ + 'error', + 'info', + ] ); $config = new DecisionApiConfig('envId', 'apiKey'); @@ -1095,7 +1048,10 @@ public function testGetFlagValue() $trackerManagerStub = $this->getMockForAbstractClass( 'Flagship\Api\TrackingManagerAbstract', - [$config, new HttpClient()], + [ + $config, + new HttpClient(), + ], '', true, true, @@ -1114,17 +1070,7 @@ public function testGetFlagValue() $key = "key"; $defaultValue = "defaultValue"; $flagDTO = new FlagDTO(); - $flagDTO->setKey($key) - ->setCampaignId("campaignId") - ->setVariationGroupId("variationGroupId") - ->setVariationId("variationId") - ->setIsReference(false) - ->setCampaignType("campaignType") - ->setSlug("slug") - ->setCampaignName("campaignName") - ->setVariationGroupName("variationGroupName") - ->setVariationName("variationName") - ->setValue("value"); + $flagDTO->setKey($key)->setCampaignId("campaignId")->setVariationGroupId("variationGroupId")->setVariationId("variationId")->setIsReference(false)->setCampaignType("campaignType")->setSlug("slug")->setCampaignName("campaignName")->setVariationGroupName("variationGroupName")->setVariationName("variationName")->setValue("value"); $flagMetadata = new FSFlagMetadata( $flagDTO->getCampaignId(), @@ -1139,18 +1085,9 @@ public function testGetFlagValue() ); $activate = new Activate($flagDTO->getVariationGroupId(), $flagDTO->getVariationId()); - $activate - ->setFlagKey($flagDTO->getKey()) - ->setFlagValue($flagDTO->getValue()) - ->setFlagDefaultValue($defaultValue) - ->setFlagMetadata($flagMetadata) - ->setVisitorContext($visitor->getContext()) - ->setVisitorId($visitor->getVisitorId()) - ->setConfig($config); - - $trackerManagerStub->expects($this->exactly(4)) - ->method('activateFlag') - ->with($activate); + $activate->setFlagKey($flagDTO->getKey())->setFlagValue($flagDTO->getValue())->setFlagDefaultValue($defaultValue)->setFlagMetadata($flagMetadata)->setVisitorContext($visitor->getContext())->setVisitorId($visitor->getVisitorId())->setConfig($config); + + $trackerManagerStub->expects($this->exactly(4))->method('activateFlag')->with($activate); $value = $defaultStrategy->getFlagValue($key, $defaultValue, $flagDTO); $this->assertEquals($value, $flagDTO->getValue()); @@ -1199,7 +1136,10 @@ public function testGetFlagMetadata() true, true, true, - ['error', 'info'] + [ + 'error', + 'info', + ] ); $trackingManagerMock = $this->getMockForAbstractClass( @@ -1209,7 +1149,10 @@ public function testGetFlagMetadata() false, false, true, - ["setTroubleshootingData", "addTroubleshootingHit"] + [ + "setTroubleshootingData", + "addTroubleshootingHit", + ] ); $config = new DecisionApiConfig('envId', 'apiKey'); @@ -1246,17 +1189,7 @@ public function testGetFlagMetadata() ); $flagDTO = new FlagDTO(); - $flagDTO->setKey($key) - ->setValue("value") - ->setCampaignId($campaignId) - ->setVariationGroupId($varGroupId) - ->setVariationId($varId) - ->setIsReference($isReference) - ->setCampaignType($campaignType) - ->setSlug($slug) - ->setCampaignName($campaignName) - ->setVariationGroupName($varGrpName) - ->setVariationName($varName); + $flagDTO->setKey($key)->setValue("value")->setCampaignId($campaignId)->setVariationGroupId($varGroupId)->setVariationId($varId)->setIsReference($isReference)->setCampaignType($campaignType)->setSlug($slug)->setCampaignName($campaignName)->setVariationGroupName($varGrpName)->setVariationName($varName); $metadataValue = $defaultStrategy->getFlagMetadata($key, $flagDTO); $this->assertEquals($metadata, $metadataValue); @@ -1272,9 +1205,9 @@ public function testLookupVisitor() $visitorId = "visitor_id"; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25 - ]; + 'name' => 'visitor_name', + 'age' => 25, + ]; /** * @var LoggerInterface|MockObject $logManagerStub @@ -1286,7 +1219,10 @@ public function testLookupVisitor() true, true, true, - ['error', 'info'] + [ + 'error', + 'info', + ] ); $config->setLogManager($logManagerStub); @@ -1326,66 +1262,58 @@ public function testLookupVisitor() $defaultStrategy = new DefaultStrategy($visitor); - $visitorCache1 = [ - StrategyAbstract::VERSION => 1 - ]; + $visitorCache1 = [StrategyAbstract::VERSION => 1]; $differentVisitorId = "different visitorID"; $visitorCache2 = [ - StrategyAbstract::VERSION => 1, - StrategyAbstract::DATA => [ - StrategyAbstract::VISITOR_ID => $differentVisitorId - ] - ]; + StrategyAbstract::VERSION => 1, + StrategyAbstract::DATA => [StrategyAbstract::VISITOR_ID => $differentVisitorId], + ]; $visitorCache3 = [ - StrategyAbstract::VERSION => 1, - StrategyAbstract::DATA => [ - StrategyAbstract::VISITOR_ID => $visitorId - ] - ]; + StrategyAbstract::VERSION => 1, + StrategyAbstract::DATA => [StrategyAbstract::VISITOR_ID => $visitorId], + ]; $visitorCache4 = [ - StrategyAbstract::VERSION => 1, - StrategyAbstract::DATA => [ - StrategyAbstract::VISITOR_ID => $visitorId, - StrategyAbstract::CAMPAIGNS => "not an array" - ] - ]; + StrategyAbstract::VERSION => 1, + StrategyAbstract::DATA => [ + StrategyAbstract::VISITOR_ID => $visitorId, + StrategyAbstract::CAMPAIGNS => "not an array", + ], + ]; $visitorCache5 = [ - StrategyAbstract::VERSION => 1, - StrategyAbstract::DATA => [ - StrategyAbstract::VISITOR_ID => $visitorId, - StrategyAbstract::CAMPAIGNS => [ - "anythings" - ] - ] - ]; + StrategyAbstract::VERSION => 1, + StrategyAbstract::DATA => [ + StrategyAbstract::VISITOR_ID => $visitorId, + StrategyAbstract::CAMPAIGNS => ["anythings"], + ], + ]; $visitorCache6 = [ - StrategyAbstract::VERSION => 1, - StrategyAbstract::DATA => [ - StrategyAbstract::VISITOR_ID => $visitorId, - StrategyAbstract::CAMPAIGNS => [ - [ - FlagshipField::FIELD_CAMPAIGN_ID => "c8pimlr7n0ig3a0pt2ig", - FlagshipField::FIELD_VARIATION_GROUP_ID => "c8pimlr7n0ig3a0pt2jg", - FlagshipField::FIELD_VARIATION_ID => "c8pimlr7n0ig3a0pt2kg", - FlagshipField::FIELD_IS_REFERENCE => false, - FlagshipField::FIELD_CAMPAIGN_TYPE => "ab", - StrategyAbstract::ACTIVATED => false, - StrategyAbstract::FLAGS => [ - "Number" => 5, - "isBool" => false, - "background" => "EE3300", - "borderColor" => "blue", - "Null" => null, - "Empty" => "" - ] - ] - ] - ] - ]; + StrategyAbstract::VERSION => 1, + StrategyAbstract::DATA => [ + StrategyAbstract::VISITOR_ID => $visitorId, + StrategyAbstract::CAMPAIGNS => [ + [ + FlagshipField::FIELD_CAMPAIGN_ID => "c8pimlr7n0ig3a0pt2ig", + FlagshipField::FIELD_VARIATION_GROUP_ID => "c8pimlr7n0ig3a0pt2jg", + FlagshipField::FIELD_VARIATION_ID => "c8pimlr7n0ig3a0pt2kg", + FlagshipField::FIELD_IS_REFERENCE => false, + FlagshipField::FIELD_CAMPAIGN_TYPE => "ab", + StrategyAbstract::ACTIVATED => false, + StrategyAbstract::FLAGS => [ + "Number" => 5, + "isBool" => false, + "background" => "EE3300", + "borderColor" => "blue", + "Null" => null, + "Empty" => "", + ], + ], + ], + ], + ]; $visitorCache7 = [ StrategyAbstract::VERSION => 2, @@ -1656,9 +1584,9 @@ public function testCacheVisitor() $visitorId = "visitor_id"; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25 - ]; + 'name' => 'visitor_name', + 'age' => 25, + ]; $config = new DecisionApiConfig('envId', 'apiKey'); @@ -1675,12 +1603,11 @@ public function testCacheVisitor() $campaignsData = $this->campaigns(); $campaignsData2 = $this->campaigns2(); - $httpClientMock->expects($this->exactly(3))->method("post") - ->willReturnOnConsecutiveCalls( - new HttpResponse(200, $campaignsData), - new HttpResponse(200, $campaignsData2), - new HttpResponse(200, $campaignsData2) - ); + $httpClientMock->expects($this->exactly(3))->method("post")->willReturnOnConsecutiveCalls( + new HttpResponse(200, $campaignsData), + new HttpResponse(200, $campaignsData2), + new HttpResponse(200, $campaignsData2) + ); $decisionManager = new ApiManager($httpClientMock, $config); @@ -1694,7 +1621,10 @@ public function testCacheVisitor() true, true, true, - ['error', 'info'] + [ + 'error', + 'info', + ] ); /** @@ -1707,7 +1637,10 @@ public function testCacheVisitor() false, false, true, - ["setTroubleshootingData", "addTroubleshootingHit"] + [ + "setTroubleshootingData", + "addTroubleshootingHit", + ] ); $config->setLogManager($logManagerStub); @@ -1722,7 +1655,10 @@ public function testCacheVisitor() true, true, true, - ['lookupVisitor', 'cacheVisitor'] + [ + 'lookupVisitor', + 'cacheVisitor', + ] ); $configManager = new ConfigManager($config, $decisionManager, $trackingManagerMock); @@ -1758,78 +1694,73 @@ public function testCacheVisitor() foreach ($campaignsData[FlagshipField::FIELD_CAMPAIGNS] as $campaign) { $variation = $campaign[FlagshipField::FIELD_VARIATION]; $modifications = $variation[FlagshipField::FIELD_MODIFICATIONS]; - $assignmentsHistory[$campaign[FlagshipField::FIELD_VARIATION_GROUP_ID]] = - $variation[FlagshipField::FIELD_ID]; + $assignmentsHistory[$campaign[FlagshipField::FIELD_VARIATION_GROUP_ID]] = $variation[FlagshipField::FIELD_ID]; $campaigns[] = [ - FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], - FlagshipField::FIELD_SLUG => $campaign[FlagshipField::FIELD_SLUG] ?? null, - FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], - FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], - FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], - FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], - StrategyAbstract::ACTIVATED => false, - StrategyAbstract::FLAGS => $modifications[FlagshipField::FIELD_VALUE] - ]; + FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], + FlagshipField::FIELD_SLUG => $campaign[FlagshipField::FIELD_SLUG] ?? null, + FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], + FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], + FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], + FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], + StrategyAbstract::ACTIVATED => false, + StrategyAbstract::FLAGS => $modifications[FlagshipField::FIELD_VALUE], + ]; } $visitorCache = [ - StrategyAbstract::VERSION => 1, - StrategyAbstract::DATA => [ - StrategyAbstract::VISITOR_ID => $visitorId, - StrategyAbstract::ANONYMOUS_ID => $visitor->getAnonymousId(), - StrategyAbstract::CONSENT => $visitor->hasConsented(), - StrategyAbstract::CONTEXT => $visitor->getContext(), - StrategyAbstract::CAMPAIGNS => $campaigns, - StrategyAbstract::ASSIGNMENTS_HISTORY => $assignmentsHistory - ] - ]; + StrategyAbstract::VERSION => 1, + StrategyAbstract::DATA => [ + StrategyAbstract::VISITOR_ID => $visitorId, + StrategyAbstract::ANONYMOUS_ID => $visitor->getAnonymousId(), + StrategyAbstract::CONSENT => $visitor->hasConsented(), + StrategyAbstract::CONTEXT => $visitor->getContext(), + StrategyAbstract::CAMPAIGNS => $campaigns, + StrategyAbstract::ASSIGNMENTS_HISTORY => $assignmentsHistory, + ], + ]; $assignmentsHistory2 = []; $campaigns2 = []; foreach ($campaignsData2[FlagshipField::FIELD_CAMPAIGNS] as $campaign) { $variation = $campaign[FlagshipField::FIELD_VARIATION]; $modifications = $variation[FlagshipField::FIELD_MODIFICATIONS]; - $assignmentsHistory2[$campaign[FlagshipField::FIELD_VARIATION_GROUP_ID]] = - $variation[FlagshipField::FIELD_ID]; + $assignmentsHistory2[$campaign[FlagshipField::FIELD_VARIATION_GROUP_ID]] = $variation[FlagshipField::FIELD_ID]; $campaigns2[] = [ - FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], - FlagshipField::FIELD_SLUG => $campaign[FlagshipField::FIELD_SLUG] ?? null, - FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], - FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], - FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], - FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], - StrategyAbstract::ACTIVATED => false, - StrategyAbstract::FLAGS => $modifications[FlagshipField::FIELD_VALUE] - ]; + FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], + FlagshipField::FIELD_SLUG => $campaign[FlagshipField::FIELD_SLUG] ?? null, + FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], + FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], + FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], + FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], + StrategyAbstract::ACTIVATED => false, + StrategyAbstract::FLAGS => $modifications[FlagshipField::FIELD_VALUE], + ]; } $visitorCache2 = [ - StrategyAbstract::VERSION => 1, - StrategyAbstract::DATA => [ - StrategyAbstract::VISITOR_ID => $visitorId, - StrategyAbstract::ANONYMOUS_ID => $visitor->getAnonymousId(), - StrategyAbstract::CONSENT => $visitor->hasConsented(), - StrategyAbstract::CONTEXT => $visitor->getContext(), - StrategyAbstract::CAMPAIGNS => $campaigns2, - StrategyAbstract::ASSIGNMENTS_HISTORY => array_merge($assignmentsHistory, $assignmentsHistory2) - ] - ]; + StrategyAbstract::VERSION => 1, + StrategyAbstract::DATA => [ + StrategyAbstract::VISITOR_ID => $visitorId, + StrategyAbstract::ANONYMOUS_ID => $visitor->getAnonymousId(), + StrategyAbstract::CONSENT => $visitor->hasConsented(), + StrategyAbstract::CONTEXT => $visitor->getContext(), + StrategyAbstract::CAMPAIGNS => $campaigns2, + StrategyAbstract::ASSIGNMENTS_HISTORY => array_merge($assignmentsHistory, $assignmentsHistory2), + ], + ]; $exception = new Exception("Message error"); - $VisitorCacheImplementationMock->expects($this->exactly(3)) - ->method("cacheVisitor") - ->with( - $this->logicalOr( - $visitorId - ), - $this->logicalOr( - $visitorCache, - $visitorCache2 - ) + $VisitorCacheImplementationMock->expects($this->exactly(3))->method("cacheVisitor")->with( + $this->logicalOr( + $visitorId + ), + $this->logicalOr( + $visitorCache, + $visitorCache2 ) - ->willReturnOnConsecutiveCalls(null, null, $this->throwException($exception)); + )->willReturnOnConsecutiveCalls(null, null, $this->throwException($exception)); $config->setVisitorCacheImplementation($VisitorCacheImplementationMock); @@ -1848,11 +1779,10 @@ public function testCacheVisitor() $visitor->fetchFlags(); - $logManagerStub->expects($this->exactly(1))->method('error') - ->with( - $exception->getMessage(), - [FlagshipConstant::TAG => $functionName] - ); + $logManagerStub->expects($this->exactly(1))->method('error')->with( + $exception->getMessage(), + [FlagshipConstant::TAG => $functionName] + ); $visitor->fetchFlags(); } @@ -2037,9 +1967,9 @@ public function testFlushVisitor() { $visitorId = "visitor_id"; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25 - ]; + 'name' => 'visitor_name', + 'age' => 25, + ]; $config = new DecisionApiConfig('envId', 'apiKey'); $httpClientMock = $this->getMockForAbstractClass( @@ -2061,7 +1991,10 @@ public function testFlushVisitor() true, true, true, - ['error', 'info'] + [ + 'error', + 'info', + ] ); $config->setLogManager($logManagerStub); @@ -2093,10 +2026,7 @@ public function testFlushVisitor() $exception = new Exception("Message error"); - $VisitorCacheImplementationMock->expects($this->exactly(2)) - ->method("flushVisitor") - ->with($visitorId) - ->willReturnOnConsecutiveCalls(null, $this->throwException($exception)); + $VisitorCacheImplementationMock->expects($this->exactly(2))->method("flushVisitor")->with($visitorId)->willReturnOnConsecutiveCalls(null, $this->throwException($exception)); $config->setVisitorCacheImplementation($VisitorCacheImplementationMock); @@ -2107,11 +2037,10 @@ public function testFlushVisitor() $functionName = "flushVisitor"; - $logManagerStub->expects($this->exactly(1))->method('error') - ->with( - $exception->getMessage(), - [FlagshipConstant::TAG => $functionName] - ); + $logManagerStub->expects($this->exactly(1))->method('error')->with( + $exception->getMessage(), + [FlagshipConstant::TAG => $functionName] + ); $defaultStrategy->setConsent(false); } @@ -2122,9 +2051,9 @@ public function testFetchVisitorCampaigns() $visitorId = "visitor_id"; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25 - ]; + 'name' => 'visitor_name', + 'age' => 25, + ]; $config = new DecisionApiConfig('envId', 'apiKey'); $httpClientMock = $this->getMockForAbstractClass( @@ -2136,9 +2065,7 @@ public function testFetchVisitorCampaigns() $campaignsData = $this->campaigns(); - $httpClientMock->expects($this->exactly(2)) - ->method("post") - ->willThrowException(new Exception()); + $httpClientMock->expects($this->exactly(2))->method("post")->willThrowException(new Exception()); $decisionManager = new ApiManager($httpClientMock, $config); @@ -2149,7 +2076,10 @@ public function testFetchVisitorCampaigns() true, true, true, - ['error', 'info'] + [ + 'error', + 'info', + ] ); $trackingManagerMock = $this->getMockForAbstractClass( @@ -2159,7 +2089,10 @@ public function testFetchVisitorCampaigns() false, false, true, - ["setTroubleshootingData", "addTroubleshootingHit"] + [ + "setTroubleshootingData", + "addTroubleshootingHit", + ] ); $config->setLogManager($logManagerStub); @@ -2199,27 +2132,27 @@ public function testFetchVisitorCampaigns() $assignmentsHistory[$campaign[FlagshipField::FIELD_ID]] = $variation[FlagshipField::FIELD_ID]; $campaigns[] = [ - FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], - FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], - FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], - FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], - FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], - StrategyAbstract::ACTIVATED => false, - StrategyAbstract::FLAGS => $modifications[FlagshipField::FIELD_VALUE] - ]; + FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], + FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], + FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], + FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], + FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], + StrategyAbstract::ACTIVATED => false, + StrategyAbstract::FLAGS => $modifications[FlagshipField::FIELD_VALUE], + ]; } $visitorCache = [ - StrategyAbstract::VERSION => 1, - StrategyAbstract::DATA => [ - StrategyAbstract::VISITOR_ID => $visitorId, - StrategyAbstract::ANONYMOUS_ID => $visitor->getAnonymousId(), - StrategyAbstract::CONSENT => $visitor->hasConsented(), - StrategyAbstract::CONTEXT => $visitor->getContext(), - StrategyAbstract::CAMPAIGNS => $campaigns, - StrategyAbstract::ASSIGNMENTS_HISTORY => $assignmentsHistory - ] - ]; + StrategyAbstract::VERSION => 1, + StrategyAbstract::DATA => [ + StrategyAbstract::VISITOR_ID => $visitorId, + StrategyAbstract::ANONYMOUS_ID => $visitor->getAnonymousId(), + StrategyAbstract::CONSENT => $visitor->hasConsented(), + StrategyAbstract::CONTEXT => $visitor->getContext(), + StrategyAbstract::CAMPAIGNS => $campaigns, + StrategyAbstract::ASSIGNMENTS_HISTORY => $assignmentsHistory, + ], + ]; $visitor->visitorCache = $visitorCache; @@ -2270,8 +2203,7 @@ public function testSendAnalyticsHit() $flagshipInstanceId = "flagshipInstanceId"; $decisionManager = new ApiManager($httpClientMock, $config); $configManager = new ConfigManager($config, $decisionManager, $trackingManagerMock); - $configManager->setDecisionManager($decisionManager) - ->setTrackingManager($trackingManagerMock); + $configManager->setDecisionManager($decisionManager)->setTrackingManager($trackingManagerMock); $visitor = new VisitorDelegate( new Container(), @@ -2283,27 +2215,11 @@ public function testSendAnalyticsHit() ); $analytic = new UsageHit(); - $analytic->setLabel(TroubleshootingLabel::SDK_CONFIG) - ->setLogLevel(LogLevel::INFO) - - ->setSdkConfigLogLevel($config->getLogLevel()) - ->setSdkConfigMode($config->getDecisionMode()) - ->setSdkConfigTimeout($config->getTimeout()) - ->setSdkConfigTrackingManagerConfigStrategy($config->getCacheStrategy()) - ->setSdkConfigUsingOnVisitorExposed(!!$config->getOnVisitorExposed()) - ->setSdkConfigUsingCustomHitCache(!!$config->getHitCacheImplementation()) - ->setSdkConfigUsingCustomVisitorCache(!!$config->getVisitorCacheImplementation()) - ->setSdkConfigBucketingUrl($bucketingUrl) - ->setSdkStatus($visitor->getSdkStatus()) - ->setFlagshipInstanceId($flagshipInstanceId) - ->setConfig($config) - ->setVisitorId($flagshipInstanceId); + $analytic->setLabel(TroubleshootingLabel::SDK_CONFIG)->setLogLevel(LogLevel::INFO)->setSdkConfigLogLevel($config->getLogLevel())->setSdkConfigMode($config->getDecisionMode())->setSdkConfigTimeout($config->getTimeout())->setSdkConfigTrackingManagerConfigStrategy($config->getCacheStrategy())->setSdkConfigUsingOnVisitorExposed(!!$config->getOnVisitorExposed())->setSdkConfigUsingCustomHitCache(!!$config->getHitCacheImplementation())->setSdkConfigUsingCustomVisitorCache(!!$config->getVisitorCacheImplementation())->setSdkConfigBucketingUrl($bucketingUrl)->setSdkStatus($visitor->getSdkStatus())->setFlagshipInstanceId($flagshipInstanceId)->setConfig($config)->setVisitorId($flagshipInstanceId); $trackingManagerMock->expects($this->once())->method("addUsageHit")->with($analytic); - $murmurHashMock->expects($this->exactly(2)) - ->method('murmurHash3Int32') - ->willReturnOnConsecutiveCalls(10, 0); + $murmurHashMock->expects($this->exactly(2))->method('murmurHash3Int32')->willReturnOnConsecutiveCalls(10, 0); $defaultStrategy = new DefaultStrategy($visitor); $defaultStrategy->setFlagshipInstanceId($flagshipInstanceId); diff --git a/tests/Visitor/NoConsentStrategyTest.php b/tests/Visitor/NoConsentStrategyTest.php index 65f12c8c..ae237ace 100644 --- a/tests/Visitor/NoConsentStrategyTest.php +++ b/tests/Visitor/NoConsentStrategyTest.php @@ -45,7 +45,10 @@ public function testMethods() false, false, true, - ["setTroubleshootingData", 'activateFlag'] + [ + "setTroubleshootingData", + 'activateFlag', + ] ); $config = new DecisionApiConfig('envId', 'apiKey'); @@ -54,12 +57,11 @@ public function testMethods() $visitorId = "visitorId"; - $httpClientMock->expects($this->exactly(2))->method("post") - ->willReturnOnConsecutiveCalls( - new HttpResponse(200, $this->campaigns()), - new HttpResponse(500, null) - ); - + $httpClientMock->expects($this->exactly(2))->method("post")->willReturnOnConsecutiveCalls( + new HttpResponse(200, $this->campaigns()), + new HttpResponse(500, null) + ); + $trackerManager->expects($this->exactly(0))->method("activateFlag"); $decisionManager = new ApiManager($httpClientMock, $config); @@ -67,25 +69,24 @@ public function testMethods() $visitor = new VisitorDelegate(new Container(), $configManager, $visitorId, false, [], true); - $logManagerStub->expects($this->exactly(2))->method('info') - ->with( - $this->logicalOr( - sprintf( - FlagshipConstant::METHOD_DEACTIVATED_CONSENT_ERROR, - "sendHit", - $visitorId - ), - sprintf( - FlagshipConstant::METHOD_DEACTIVATED_CONSENT_ERROR, - "visitorExposed", - $visitorId - ) + $logManagerStub->expects($this->exactly(2))->method('info')->with( + $this->logicalOr( + sprintf( + FlagshipConstant::METHOD_DEACTIVATED_CONSENT_ERROR, + "sendHit", + $visitorId ), - $this->logicalOr( - [FlagshipConstant::TAG => "sendHit"], - [FlagshipConstant::TAG => "visitorExposed"] + sprintf( + FlagshipConstant::METHOD_DEACTIVATED_CONSENT_ERROR, + "visitorExposed", + $visitorId ) - ); + ), + $this->logicalOr( + [FlagshipConstant::TAG => "sendHit"], + [FlagshipConstant::TAG => "visitorExposed"] + ) + ); $noConsentStrategy = new NoConsentStrategy($visitor); @@ -95,22 +96,24 @@ public function testMethods() $noConsentStrategy->updateContext($key, $value); $this->assertSame([ - "sdk_osName" => PHP_OS, - FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, - FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::FS_USERS => $visitorId, - $key => $value, - ], $visitor->getContext()); + "sdk_osName" => PHP_OS, + FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, + FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, + FlagshipConstant::FS_USERS => $visitorId, + $key => $value, + ], $visitor->getContext()); //Test updateContextCollection $noConsentStrategy->updateContextCollection(['age' => 20]); $this->assertSame([ - "sdk_osName" => PHP_OS, - FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, - FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::FS_USERS => $visitorId, - $key => $value, 'age' => 20], $visitor->getContext()); + "sdk_osName" => PHP_OS, + FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, + FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, + FlagshipConstant::FS_USERS => $visitorId, + $key => $value, + 'age' => 20, + ], $visitor->getContext()); //Test clearContext $noConsentStrategy->clearContext(); @@ -141,27 +144,27 @@ public function testMethods() $assignmentsHistory[$campaign[FlagshipField::FIELD_ID]] = $variation[FlagshipField::FIELD_ID]; $campaigns[] = [ - FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], - FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], - FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], - FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], - FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], - StrategyAbstract::ACTIVATED => false, - StrategyAbstract::FLAGS => $modifications[FlagshipField::FIELD_VALUE] - ]; + FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], + FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], + FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], + FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], + FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], + StrategyAbstract::ACTIVATED => false, + StrategyAbstract::FLAGS => $modifications[FlagshipField::FIELD_VALUE], + ]; } $visitorCache = [ - StrategyAbstract::VERSION => 1, - StrategyAbstract::DATA => [ - StrategyAbstract::VISITOR_ID => $visitorId, - StrategyAbstract::ANONYMOUS_ID => $visitor->getAnonymousId(), - StrategyAbstract::CONSENT => $visitor->hasConsented(), - StrategyAbstract::CONTEXT => $visitor->getContext(), - StrategyAbstract::CAMPAIGNS => $campaigns, - StrategyAbstract::ASSIGNMENTS_HISTORY => $assignmentsHistory - ] - ]; + StrategyAbstract::VERSION => 1, + StrategyAbstract::DATA => [ + StrategyAbstract::VISITOR_ID => $visitorId, + StrategyAbstract::ANONYMOUS_ID => $visitor->getAnonymousId(), + StrategyAbstract::CONSENT => $visitor->hasConsented(), + StrategyAbstract::CONTEXT => $visitor->getContext(), + StrategyAbstract::CAMPAIGNS => $campaigns, + StrategyAbstract::ASSIGNMENTS_HISTORY => $assignmentsHistory, + ], + ]; //Test fetchVisitorCampaigns $visitor->visitorCache = $visitorCache; @@ -176,14 +179,15 @@ public function testMethods() true, true, true, - ['lookupVisitor', 'cacheVisitor'] + [ + 'lookupVisitor', + 'cacheVisitor', + ] ); - $VisitorCacheImplementationMock->expects($this->never()) - ->method("cacheVisitor"); + $VisitorCacheImplementationMock->expects($this->never())->method("cacheVisitor"); - $VisitorCacheImplementationMock->expects($this->never()) - ->method("lookupVisitor"); + $VisitorCacheImplementationMock->expects($this->never())->method("lookupVisitor"); $config->setVisitorCacheImplementation($VisitorCacheImplementationMock); diff --git a/tests/Visitor/NotReadyStrategyTest.php b/tests/Visitor/NotReadyStrategyTest.php index 26a7183b..adcb4c7f 100644 --- a/tests/Visitor/NotReadyStrategyTest.php +++ b/tests/Visitor/NotReadyStrategyTest.php @@ -44,32 +44,29 @@ public function testMethods() }; - $decisionManager = $this->getMockBuilder(ApiManager::class) - ->disableOriginalConstructor() - ->getMock(); + $decisionManager = $this->getMockBuilder(ApiManager::class)->disableOriginalConstructor()->getMock(); $configManager = new ConfigManager($config, $decisionManager, $trackerManager); $visitorId = "visitorId"; $visitor = new VisitorDelegate(new Container(), $configManager, $visitorId, false, [], true); - $logManagerStub->expects($this->exactly(5))->method('error') - ->with( - $this->logicalOr( - $logMessageBuild('sendHit'), - $logMessageBuild('fetchFlags'), - $logMessageBuild('getFlagValue'), - $logMessageBuild('visitorExposed'), - $logMessageBuild('getFlagMetadata') - ), - $this->logicalOr( - [FlagshipConstant::TAG => 'sendHit'], - [FlagshipConstant::TAG => 'fetchFlags'], - [FlagshipConstant::TAG => 'getFlagValue'], - [FlagshipConstant::TAG => 'visitorExposed'], - [FlagshipConstant::TAG => 'getFlagMetadata'] - ) - ); + $logManagerStub->expects($this->exactly(5))->method('error')->with( + $this->logicalOr( + $logMessageBuild('sendHit'), + $logMessageBuild('fetchFlags'), + $logMessageBuild('getFlagValue'), + $logMessageBuild('visitorExposed'), + $logMessageBuild('getFlagMetadata') + ), + $this->logicalOr( + [FlagshipConstant::TAG => 'sendHit'], + [FlagshipConstant::TAG => 'fetchFlags'], + [FlagshipConstant::TAG => 'getFlagValue'], + [FlagshipConstant::TAG => 'visitorExposed'], + [FlagshipConstant::TAG => 'getFlagMetadata'] + ) + ); $notReadyStrategy = new NotReadyStrategy($visitor); @@ -81,24 +78,24 @@ public function testMethods() $this->assertSame([ - "sdk_osName" => PHP_OS, - FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, - FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::FS_USERS => $visitorId, - $key => $value, - ], $visitor->getContext()); + "sdk_osName" => PHP_OS, + FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, + FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, + FlagshipConstant::FS_USERS => $visitorId, + $key => $value, + ], $visitor->getContext()); //Test updateContextCollection $notReadyStrategy->updateContextCollection(['age' => 20]); $this->assertSame([ - "sdk_osName" => PHP_OS, - FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, - FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::FS_USERS => $visitorId, - $key => $value, - 'age' => 20 - ], $visitor->getContext()); + "sdk_osName" => PHP_OS, + FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, + FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, + FlagshipConstant::FS_USERS => $visitorId, + $key => $value, + 'age' => 20, + ], $visitor->getContext()); //Test clearContext $notReadyStrategy->clearContext(); @@ -129,14 +126,15 @@ public function testMethods() true, true, true, - ['lookupVisitor', 'cacheVisitor'] + [ + 'lookupVisitor', + 'cacheVisitor', + ] ); - $VisitorCacheImplementationMock->expects($this->never()) - ->method("cacheVisitor"); + $VisitorCacheImplementationMock->expects($this->never())->method("cacheVisitor"); - $VisitorCacheImplementationMock->expects($this->never()) - ->method("lookupVisitor"); + $VisitorCacheImplementationMock->expects($this->never())->method("lookupVisitor"); $config->setVisitorCacheImplementation($VisitorCacheImplementationMock); diff --git a/tests/Visitor/PanicStrategyTest.php b/tests/Visitor/PanicStrategyTest.php index 04bd6112..ee249633 100644 --- a/tests/Visitor/PanicStrategyTest.php +++ b/tests/Visitor/PanicStrategyTest.php @@ -70,10 +70,9 @@ public function testMethods() - $httpClientMock->expects($this->exactly(1))->method("post") - ->willReturnOnConsecutiveCalls( - new HttpResponse(500, []) - ); + $httpClientMock->expects($this->exactly(1))->method("post")->willReturnOnConsecutiveCalls( + new HttpResponse(500, []) + ); $decisionManager = new ApiManager($httpClientMock, $config); @@ -81,29 +80,28 @@ public function testMethods() $visitor = new VisitorDelegate(new Container(), $configManager, "visitorId", false, [], true); - $logManagerStub->expects($this->exactly(8))->method('info') - ->with( - $this->logicalOr( - $logMessageBuild('updateContext'), - $logMessageBuild('updateContextCollection'), - $logMessageBuild('clearContext'), - $logMessageBuild('sendHit'), - $logMessageBuildConsent(), - $logMessageBuild('getFlagValue'), - $logMessageBuild('visitorExposed'), - $logMessageBuild('getFlagMetadata') - ), - $this->logicalOr( - [FlagshipConstant::TAG => 'updateContext'], - [FlagshipConstant::TAG => 'updateContextCollection'], - [FlagshipConstant::TAG => 'clearContext'], - [FlagshipConstant::TAG => 'sendHit'], - [FlagshipConstant::TAG => 'setConsent'], - [FlagshipConstant::TAG => 'getFlagValue'], - [FlagshipConstant::TAG => 'visitorExposed'], - [FlagshipConstant::TAG => 'getFlagMetadata'] - ) - ); + $logManagerStub->expects($this->exactly(8))->method('info')->with( + $this->logicalOr( + $logMessageBuild('updateContext'), + $logMessageBuild('updateContextCollection'), + $logMessageBuild('clearContext'), + $logMessageBuild('sendHit'), + $logMessageBuildConsent(), + $logMessageBuild('getFlagValue'), + $logMessageBuild('visitorExposed'), + $logMessageBuild('getFlagMetadata') + ), + $this->logicalOr( + [FlagshipConstant::TAG => 'updateContext'], + [FlagshipConstant::TAG => 'updateContextCollection'], + [FlagshipConstant::TAG => 'clearContext'], + [FlagshipConstant::TAG => 'sendHit'], + [FlagshipConstant::TAG => 'setConsent'], + [FlagshipConstant::TAG => 'getFlagValue'], + [FlagshipConstant::TAG => 'visitorExposed'], + [FlagshipConstant::TAG => 'getFlagMetadata'] + ) + ); $panicStrategy = new PanicStrategy($visitor); @@ -144,27 +142,27 @@ public function testMethods() $assignmentsHistory[$campaign[FlagshipField::FIELD_ID]] = $variation[FlagshipField::FIELD_ID]; $campaigns[] = [ - FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], - FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], - FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], - FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], - FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], - StrategyAbstract::ACTIVATED => false, - StrategyAbstract::FLAGS => $modifications[FlagshipField::FIELD_VALUE] - ]; + FlagshipField::FIELD_CAMPAIGN_ID => $campaign[FlagshipField::FIELD_ID], + FlagshipField::FIELD_VARIATION_GROUP_ID => $campaign[FlagshipField::FIELD_VARIATION_GROUP_ID], + FlagshipField::FIELD_VARIATION_ID => $variation[FlagshipField::FIELD_ID], + FlagshipField::FIELD_IS_REFERENCE => $variation[FlagshipField::FIELD_REFERENCE], + FlagshipField::FIELD_CAMPAIGN_TYPE => $modifications[FlagshipField::FIELD_CAMPAIGN_TYPE], + StrategyAbstract::ACTIVATED => false, + StrategyAbstract::FLAGS => $modifications[FlagshipField::FIELD_VALUE], + ]; } $visitorCache = [ - StrategyAbstract::VERSION => 1, - StrategyAbstract::DATA => [ - StrategyAbstract::VISITOR_ID => $visitor->getVisitorId(), - StrategyAbstract::ANONYMOUS_ID => $visitor->getAnonymousId(), - StrategyAbstract::CONSENT => $visitor->hasConsented(), - StrategyAbstract::CONTEXT => $visitor->getContext(), - StrategyAbstract::CAMPAIGNS => $campaigns, - StrategyAbstract::ASSIGNMENTS_HISTORY => $assignmentsHistory - ] - ]; + StrategyAbstract::VERSION => 1, + StrategyAbstract::DATA => [ + StrategyAbstract::VISITOR_ID => $visitor->getVisitorId(), + StrategyAbstract::ANONYMOUS_ID => $visitor->getAnonymousId(), + StrategyAbstract::CONSENT => $visitor->hasConsented(), + StrategyAbstract::CONTEXT => $visitor->getContext(), + StrategyAbstract::CAMPAIGNS => $campaigns, + StrategyAbstract::ASSIGNMENTS_HISTORY => $assignmentsHistory, + ], + ]; //Test fetchVisitorCampaigns $visitor->visitorCache = $visitorCache; @@ -179,14 +177,15 @@ public function testMethods() true, true, true, - ['lookupVisitor', 'cacheVisitor'] + [ + 'lookupVisitor', + 'cacheVisitor', + ] ); - $VisitorCacheImplementationMock->expects($this->never()) - ->method("cacheVisitor"); + $VisitorCacheImplementationMock->expects($this->never())->method("cacheVisitor"); - $VisitorCacheImplementationMock->expects($this->never()) - ->method("lookupVisitor"); + $VisitorCacheImplementationMock->expects($this->never())->method("lookupVisitor"); $config->setVisitorCacheImplementation($VisitorCacheImplementationMock); diff --git a/tests/Visitor/VisitorBuilderTest.php b/tests/Visitor/VisitorBuilderTest.php index 40d6ce54..b18d5a48 100644 --- a/tests/Visitor/VisitorBuilderTest.php +++ b/tests/Visitor/VisitorBuilderTest.php @@ -18,9 +18,7 @@ class VisitorBuilderTest extends TestCase public function testBuilder() { - $trackerManager = $this->getMockBuilder('Flagship\Api\TrackingManager') - ->onlyMethods(['addHit']) - ->disableOriginalConstructor()->getMock(); + $trackerManager = $this->getMockBuilder('Flagship\Api\TrackingManager')->onlyMethods(['addHit'])->disableOriginalConstructor()->getMock(); $container = new Container(); @@ -28,8 +26,7 @@ public function testBuilder() $hasConsented = true; $config = new DecisionApiConfig(); - $decisionManager = $this->getMockBuilder('Flagship\Decision\ApiManager') - ->disableOriginalConstructor()->getMock(); + $decisionManager = $this->getMockBuilder('Flagship\Decision\ApiManager')->disableOriginalConstructor()->getMock(); $configManager = new ConfigManager($config, $decisionManager, $trackerManager); $visitor = VisitorBuilder::builder( @@ -45,23 +42,20 @@ public function testBuilder() $this->assertNull($visitor->getAnonymousId()); $context = [ - 'age' => 20, - "sdk_osName" => PHP_OS, - "sdk_deviceType" => "server", - FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, - FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::FS_USERS => $visitorId, - ]; + 'age' => 20, + "sdk_osName" => PHP_OS, + "sdk_deviceType" => "server", + FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, + FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, + FlagshipConstant::FS_USERS => $visitorId, + ]; $onFetchFlagsStatusChanged = function (FetchFlagsStatusInterface $fetchFlagsStatus) { $this->assertSame($fetchFlagsStatus->getStatus(), FSFetchStatus::FETCH_REQUIRED); $this->assertSame($fetchFlagsStatus->getReason(), FSFetchReason::VISITOR_CREATED); }; - $visitor = VisitorBuilder::builder($visitorId, $hasConsented, $configManager, $container, "instanceId") - ->setIsAuthenticated(true) - ->setOnFetchFlagsStatusChanged($onFetchFlagsStatusChanged) - ->setContext($context)->build(); + $visitor = VisitorBuilder::builder($visitorId, $hasConsented, $configManager, $container, "instanceId")->setIsAuthenticated(true)->setOnFetchFlagsStatusChanged($onFetchFlagsStatusChanged)->setContext($context)->build(); $this->assertSame($context, $visitor->getContext()); $this->assertTrue($visitor->hasConsented()); diff --git a/tests/Visitor/VisitorDelegateTest.php b/tests/Visitor/VisitorDelegateTest.php index 924953a9..16df8216 100644 --- a/tests/Visitor/VisitorDelegateTest.php +++ b/tests/Visitor/VisitorDelegateTest.php @@ -28,20 +28,23 @@ class VisitorDelegateTest extends TestCase { public function testVisitorDelegateConstruct() { - $configData = ['envId' => 'env_value', 'apiKey' => 'key_value']; + $configData = [ + 'envId' => 'env_value', + 'apiKey' => 'key_value', + ]; $config = new DecisionApiConfig($configData['envId'], $configData['apiKey']); $visitorId = "visitor_id"; $newVisitorId = 'new_visitor_id'; $ageKey = 'age'; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25, - "sdk_osName" => PHP_OS, - "sdk_deviceType" => "server", - FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, - FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::FS_USERS => $visitorId, - ]; + 'name' => 'visitor_name', + 'age' => 25, + "sdk_osName" => PHP_OS, + "sdk_deviceType" => "server", + FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, + FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, + FlagshipConstant::FS_USERS => $visitorId, + ]; $trackerManager = $this->getMockForAbstractClass( TrackingManagerAbstract::class, @@ -50,8 +53,7 @@ public function testVisitorDelegateConstruct() false ); - $decisionManager = $this->getMockBuilder(ApiManager::class) - ->disableOriginalConstructor()->getMock(); + $decisionManager = $this->getMockBuilder(ApiManager::class)->disableOriginalConstructor()->getMock(); $configManager = new ConfigManager($config, $decisionManager, $trackerManager); @@ -72,23 +74,17 @@ public function testVisitorDelegateConstruct() $containerMock->method('get')->will($this->returnCallback($containerGetMethod)); $consentHit = new Event(EventCategory::USER_ENGAGEMENT, FlagshipConstant::FS_CONSENT); - $consentHit->setLabel(FlagshipConstant::SDK_LANGUAGE . ":" . "false") - ->setConfig($config) - ->setVisitorId($visitorId); + $consentHit->setLabel(FlagshipConstant::SDK_LANGUAGE . ":" . "false")->setConfig($config)->setVisitorId($visitorId); $consentHit2 = new Event(EventCategory::USER_ENGAGEMENT, FlagshipConstant::FS_CONSENT); - $consentHit2->setLabel(FlagshipConstant::SDK_LANGUAGE . ":" . "true") - ->setConfig($config) - ->setVisitorId($newVisitorId); - - $trackerManager->expects($this->exactly(2)) - ->method('addHit') - ->with( - $this->logicalOr( - $this->equalTo($consentHit), - $this->equalTo($consentHit2) - ) - ); + $consentHit2->setLabel(FlagshipConstant::SDK_LANGUAGE . ":" . "true")->setConfig($config)->setVisitorId($newVisitorId); + + $trackerManager->expects($this->exactly(2))->method('addHit')->with( + $this->logicalOr( + $this->equalTo($consentHit), + $this->equalTo($consentHit2) + ) + ); $visitorDelegate = new VisitorDelegate($containerMock, $configManager, $visitorId, false, $visitorContext); @@ -133,7 +129,10 @@ public function testVisitorDelegateConstruct() public function testSetAnonymous() { - $configData = ['envId' => 'env_value', 'apiKey' => 'key_value']; + $configData = [ + 'envId' => 'env_value', + 'apiKey' => 'key_value', + ]; $config = new DecisionApiConfig($configData['envId'], $configData['apiKey']); $visitorId = "visitor_id"; @@ -144,8 +143,7 @@ public function testSetAnonymous() false ); - $decisionManager = $this->getMockBuilder(ApiManager::class) - ->disableOriginalConstructor()->getMock(); + $decisionManager = $this->getMockBuilder(ApiManager::class)->disableOriginalConstructor()->getMock(); $configManager = new ConfigManager($config, $decisionManager, $trackerManager); @@ -176,16 +174,19 @@ public function testSetVisitorLog() ['error'] ); - $configData = ['envId' => 'env_value', 'apiKey' => 'key_value']; + $configData = [ + 'envId' => 'env_value', + 'apiKey' => 'key_value', + ]; $config = new DecisionApiConfig($configData['envId'], $configData['apiKey']); $config->setLogManager($logManagerStub); $visitorId = "visitor_id"; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25 - ]; + 'name' => 'visitor_name', + 'age' => 25, + ]; $trackerManager = $this->getMockForAbstractClass( TrackingManagerAbstract::class, @@ -194,8 +195,7 @@ public function testSetVisitorLog() false ); - $decisionManager = $this->getMockBuilder(ApiManager::class) - ->disableOriginalConstructor()->getMock(); + $decisionManager = $this->getMockBuilder(ApiManager::class)->disableOriginalConstructor()->getMock(); $configManager = new ConfigManager($config, $decisionManager, $trackerManager); @@ -209,11 +209,10 @@ public function testSetVisitorLog() ); $flagshipSdk = FlagshipConstant::FLAGSHIP_SDK; - $logManagerStub->expects($this->once()) - ->method('error')->with( - FlagshipConstant::VISITOR_ID_ERROR, - [FlagshipConstant::TAG => "setVisitorId"] - ); + $logManagerStub->expects($this->once())->method('error')->with( + FlagshipConstant::VISITOR_ID_ERROR, + [FlagshipConstant::TAG => "setVisitorId"] + ); $visitorDelegate->setVisitorId(''); } public function testMethods() @@ -227,14 +226,17 @@ public function testMethods() true, ['error'] ); - $configData = ['envId' => 'env_value', 'apiKey' => 'key_value']; + $configData = [ + 'envId' => 'env_value', + 'apiKey' => 'key_value', + ]; $config = new DecisionApiConfig($configData['envId'], $configData['apiKey']); $visitorId = "visitor_id"; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25 - ]; + 'name' => 'visitor_name', + 'age' => 25, + ]; $trackerManager = $this->getMockForAbstractClass( TrackingManagerAbstract::class, @@ -243,35 +245,30 @@ public function testMethods() false ); - $decisionManager = $this->getMockBuilder(ApiManager::class) - ->disableOriginalConstructor()->getMock(); + $decisionManager = $this->getMockBuilder(ApiManager::class)->disableOriginalConstructor()->getMock(); $configManager = new ConfigManager($config, $decisionManager, $trackerManager); $containerMock = $this->getMockBuilder( 'Flagship\Utils\Container' - )->onlyMethods(['get']) - ->disableOriginalConstructor() - ->getMock(); - - $defaultStrategy = $this->getMockBuilder('Flagship\Visitor\DefaultStrategy') - ->onlyMethods([ - 'initialContext', - 'updateContext', - 'updateContextCollection', - "cacheVisitor", - 'clearContext', - 'authenticate', - 'unauthenticate', - 'setConsent', - 'sendHit', - 'fetchFlags', - 'visitorExposed', - 'getFlagValue', - 'getFlagMetadata', - 'lookupVisitor' - ])->disableOriginalConstructor() - ->getMock(); + )->onlyMethods(['get'])->disableOriginalConstructor()->getMock(); + + $defaultStrategy = $this->getMockBuilder('Flagship\Visitor\DefaultStrategy')->onlyMethods([ + 'initialContext', + 'updateContext', + 'updateContextCollection', + "cacheVisitor", + 'clearContext', + 'authenticate', + 'unauthenticate', + 'setConsent', + 'sendHit', + 'fetchFlags', + 'visitorExposed', + 'getFlagValue', + 'getFlagMetadata', + 'lookupVisitor', + ])->disableOriginalConstructor()->getMock(); $containerMock->method('get')->willReturn($defaultStrategy); @@ -279,28 +276,22 @@ public function testMethods() $visitor = new VisitorDelegate($containerMock, $configManager, $visitorId, false, $visitorContext, true); - $defaultContext = [ - FlagshipContext::OS_NAME => PHP_OS, - ]; + $defaultContext = [FlagshipContext::OS_NAME => PHP_OS]; //test SetContext - $defaultStrategy->expects($this->exactly(2)) - ->method('updateContextCollection') - ->with( - $this->logicalOr( - $visitorContext, - $defaultContext - ) - ); + $defaultStrategy->expects($this->exactly(2))->method('updateContextCollection')->with( + $this->logicalOr( + $visitorContext, + $defaultContext + ) + ); $visitor->setContext($visitorContext); //test updateContext $key = "age"; $value = 20; - $defaultStrategy->expects($this->once()) - ->method('updateContext') - ->with($key, $value); + $defaultStrategy->expects($this->once())->method('updateContext')->with($key, $value); $visitor->updateContext($key, $value); @@ -314,8 +305,7 @@ public function testMethods() //Test authenticate $newVisitorId = "newVisitorId"; - $defaultStrategy->expects($this->once())->method('authenticate') - ->with($newVisitorId); + $defaultStrategy->expects($this->once())->method('authenticate')->with($newVisitorId); $visitor->authenticate($newVisitorId); //Test unauthenticate @@ -325,8 +315,7 @@ public function testMethods() //Test sendHit $hit = new Page("http://localhost"); - $defaultStrategy->expects($this->once()) - ->method('sendHit')->with($hit); + $defaultStrategy->expects($this->once())->method('sendHit')->with($hit); $visitor->sendHit($hit); @@ -337,39 +326,27 @@ public function testMethods() //Test userExposed $key = 'key'; $flagDTO = new FlagDTO(); - $defaultStrategy->expects($this->once())->method('visitorExposed') - ->with($key, true, $flagDTO); + $defaultStrategy->expects($this->once())->method('visitorExposed')->with($key, true, $flagDTO); $visitor->visitorExposed($key, true, $flagDTO); //Test getFlagValue $flagDTO = new FlagDTO(); $defaultValue = "defaultValue"; - $defaultStrategy->expects($this->once()) - ->method('getFlagValue') - ->with($key, $defaultValue, $flagDTO, true); + $defaultStrategy->expects($this->once())->method('getFlagValue')->with($key, $defaultValue, $flagDTO, true); $visitor->getFlagValue($key, $defaultValue, $flagDTO); //Test getFlagMetadata $flagDTO = new FlagDTO(); - $defaultStrategy->expects($this->exactly(1)) - ->method('getFlagMetadata') - ->with($key, $flagDTO); + $defaultStrategy->expects($this->exactly(1))->method('getFlagMetadata')->with($key, $flagDTO); $visitor->getFlagMetadata($key, $flagDTO); //Test getFlag $flagDTO = new FlagDTO(); - $flagDTO->setKey("key1") - ->setCampaignId('campaignID') - ->setVariationGroupId("varGroupID") - ->setVariationId('varID') - ->setIsReference(true)->setValue("value") - ->setCampaignType("ab"); - - $flagsDTO = [ - $flagDTO - ]; + $flagDTO->setKey("key1")->setCampaignId('campaignID')->setVariationGroupId("varGroupID")->setVariationId('varID')->setIsReference(true)->setValue("value")->setCampaignType("ab"); + + $flagsDTO = [$flagDTO]; $visitor->setFlagsDTO($flagsDTO); $flag = $visitor->getFlag('key1'); @@ -405,13 +382,13 @@ public function testJson() $config = new DecisionApiConfig(); $visitorId = "visitor_id"; $context = [ - "age" => 20, - "sdk_osName" => PHP_OS, - "sdk_deviceType" => "server", - FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, - FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::FS_USERS => $visitorId, - ]; + "age" => 20, + "sdk_osName" => PHP_OS, + "sdk_deviceType" => "server", + FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, + FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, + FlagshipConstant::FS_USERS => $visitorId, + ]; $trackerManager = $this->getMockForAbstractClass( TrackingManagerAbstract::class, [], @@ -419,18 +396,17 @@ public function testJson() false ); - $decisionManager = $this->getMockBuilder(ApiManager::class) - ->disableOriginalConstructor()->getMock(); + $decisionManager = $this->getMockBuilder(ApiManager::class)->disableOriginalConstructor()->getMock(); $configManager = new ConfigManager($config, $decisionManager, $trackerManager); $visitorDelegate = new VisitorDelegate(new Container(), $configManager, $visitorId, false, $context, true); $this->assertJsonStringEqualsJsonString( json_encode([ - 'visitorId' => $visitorId, - 'context' => $context, - 'hasConsent' => true - ]), + 'visitorId' => $visitorId, + 'context' => $context, + 'hasConsent' => true, + ]), json_encode($visitorDelegate) ); } @@ -449,16 +425,13 @@ public function testGetStrategy() $setStatusMethod = Utils::getMethod($instance, 'setStatus'); $setStatusMethod->invoke($instance, FSSdkStatus::SDK_NOT_INITIALIZED); - $trackerManager = $this->getMockBuilder('Flagship\Api\TrackingManager') - ->onlyMethods(['addHit']) - ->disableOriginalConstructor()->getMock(); + $trackerManager = $this->getMockBuilder('Flagship\Api\TrackingManager')->onlyMethods(['addHit'])->disableOriginalConstructor()->getMock(); $config = new DecisionApiConfig(); $visitorId = "visitor_id"; $context = ["age" => 20]; - $decisionManager = $this->getMockBuilder(ApiManager::class) - ->disableOriginalConstructor()->getMock(); + $decisionManager = $this->getMockBuilder(ApiManager::class)->disableOriginalConstructor()->getMock(); $configManager = new ConfigManager($config, $decisionManager, $trackerManager); $visitorDelegate = new VisitorDelegate(new Container(), $configManager, $visitorId, false, $context); diff --git a/tests/Visitor/VisitorTest.php b/tests/Visitor/VisitorTest.php index e3b77033..c82f2d6d 100644 --- a/tests/Visitor/VisitorTest.php +++ b/tests/Visitor/VisitorTest.php @@ -26,13 +26,16 @@ class VisitorTest extends TestCase */ public function testConstruct() { - $configData = ['envId' => 'env_value', 'apiKey' => 'key_value']; + $configData = [ + 'envId' => 'env_value', + 'apiKey' => 'key_value', + ]; $config = new DecisionApiConfig($configData['envId'], $configData['apiKey']); $visitorId = "visitor_id"; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25 - ]; + 'name' => 'visitor_name', + 'age' => 25, + ]; $trackerManager = new TrackingManager($config, new HttpClient()); @@ -64,43 +67,47 @@ public function testConstruct() public function testMethods() { - $configData = ['envId' => 'env_value', 'apiKey' => 'key_value']; + $configData = [ + 'envId' => 'env_value', + 'apiKey' => 'key_value', + ]; $config = new DecisionApiConfig($configData['envId'], $configData['apiKey']); $visitorId = "visitor_id"; $visitorContext = [ - 'name' => 'visitor_name', - 'age' => 25 - ]; + 'name' => 'visitor_name', + 'age' => 25, + ]; - $trackerManager = $this->getMockBuilder(TrackingManager::class) - ->onlyMethods(['addHit']) - ->disableOriginalConstructor()->getMock(); + $trackerManager = $this->getMockBuilder(TrackingManager::class)->onlyMethods(['addHit'])->disableOriginalConstructor()->getMock(); - $decisionManagerMock = $this->getMockBuilder(ApiManager::class) - ->disableOriginalConstructor()->getMock(); + $decisionManagerMock = $this->getMockBuilder(ApiManager::class)->disableOriginalConstructor()->getMock(); $configManager = new ConfigManager($config, $decisionManagerMock, $trackerManager); - $visitorDelegateMock = $this->getMockBuilder('Flagship\Visitor\VisitorDelegate') - ->onlyMethods([ - 'getContext', - 'setContext', - 'updateContext', - 'updateContextCollection', - 'clearContext', - 'authenticate', - 'unauthenticate', - 'getAnonymousId', - 'sendHit', - 'fetchFlags', - 'getFlag', - 'getFlags', - 'getFlagsDTO', - "getFetchStatus", - "setOnFetchFlagsStatusChanged" - ]) - ->setConstructorArgs([new Container(), $configManager, - $visitorId, false, $visitorContext, true])->getMock(); + $visitorDelegateMock = $this->getMockBuilder('Flagship\Visitor\VisitorDelegate')->onlyMethods([ + 'getContext', + 'setContext', + 'updateContext', + 'updateContextCollection', + 'clearContext', + 'authenticate', + 'unauthenticate', + 'getAnonymousId', + 'sendHit', + 'fetchFlags', + 'getFlag', + 'getFlags', + 'getFlagsDTO', + "getFetchStatus", + "setOnFetchFlagsStatusChanged", + ])->setConstructorArgs([ + new Container(), + $configManager, + $visitorId, + false, + $visitorContext, + true, + ])->getMock(); $visitor = new Visitor($visitorDelegateMock); @@ -109,25 +116,19 @@ public function testMethods() $visitor->getContext(); //test SetContext - $visitorDelegateMock->expects($this->once()) - ->method('setContext') - ->with($visitorContext); + $visitorDelegateMock->expects($this->once())->method('setContext')->with($visitorContext); $visitor->setContext($visitorContext); //test updateContext $key = "age"; $value = 20; - $visitorDelegateMock->expects($this->once()) - ->method('updateContext') - ->with($key, $value); + $visitorDelegateMock->expects($this->once())->method('updateContext')->with($key, $value); $visitor->updateContext($key, $value); //test updateContextCollection - $visitorDelegateMock->expects($this->once()) - ->method('updateContextCollection') - ->with($visitorContext); + $visitorDelegateMock->expects($this->once())->method('updateContextCollection')->with($visitorContext); $visitor->updateContextCollection($visitorContext); @@ -141,8 +142,7 @@ public function testMethods() //Test authenticate $newVisitorId = "newVisitorId"; - $visitorDelegateMock->expects($this->once())->method('authenticate') - ->with($newVisitorId); + $visitorDelegateMock->expects($this->once())->method('authenticate')->with($newVisitorId); $visitor->authenticate($newVisitorId); //Test unauthenticate @@ -151,36 +151,28 @@ public function testMethods() //Test sendHit $hit = new Page("http://localhost"); - $visitorDelegateMock->expects($this->once()) - ->method('sendHit')->with($hit); + $visitorDelegateMock->expects($this->once())->method('sendHit')->with($hit); $visitor->sendHit($hit); //Test fetchFlags - $visitorDelegateMock->expects($this->once()) - ->method('fetchFlags'); + $visitorDelegateMock->expects($this->once())->method('fetchFlags'); $visitor->fetchFlags(); //Test getFlag $key = 'key'; - $visitorDelegateMock->expects($this->once()) - ->method('getFlag') - ->with($key)->willReturn(new FSFlag($key, null)); + $visitorDelegateMock->expects($this->once())->method('getFlag')->with($key)->willReturn(new FSFlag($key, null)); $visitor->getFlag($key); //Test getFlags - $visitorDelegateMock->expects($this->once()) - ->method('getFlags') - ->willReturn(new FSFlagCollection(null)); + $visitorDelegateMock->expects($this->once())->method('getFlags')->willReturn(new FSFlagCollection(null)); $visitor->getFlags(); //Test getFetchStatus - $visitorDelegateMock->expects($this->once()) - ->method('getFetchStatus') - ->willReturn(new FetchFlagsStatus(FSFetchStatus::FETCHED, FSFetchReason::NONE)); + $visitorDelegateMock->expects($this->once())->method('getFetchStatus')->willReturn(new FetchFlagsStatus(FSFetchStatus::FETCHED, FSFetchReason::NONE)); $fetchStatus = $visitor->getFetchStatus(); $this->assertInstanceOf(FetchFlagsStatus::class, $fetchStatus); } @@ -190,19 +182,16 @@ public function testJson() $config = new DecisionApiConfig(); $visitorId = "visitor_id"; $context = [ - "age" => 20, - "sdk_osName" => PHP_OS, - "sdk_deviceType" => "server", - FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, - FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, - FlagshipConstant::FS_USERS => $visitorId, - ]; - $trackerManager = $this->getMockBuilder(TrackingManager::class) - ->onlyMethods(['addHit']) - ->disableOriginalConstructor()->getMock(); - - $decisionManagerMock = $this->getMockBuilder(ApiManager::class) - ->disableOriginalConstructor()->getMock(); + "age" => 20, + "sdk_osName" => PHP_OS, + "sdk_deviceType" => "server", + FlagshipConstant::FS_CLIENT => FlagshipConstant::SDK_LANGUAGE, + FlagshipConstant::FS_VERSION => FlagshipConstant::SDK_VERSION, + FlagshipConstant::FS_USERS => $visitorId, + ]; + $trackerManager = $this->getMockBuilder(TrackingManager::class)->onlyMethods(['addHit'])->disableOriginalConstructor()->getMock(); + + $decisionManagerMock = $this->getMockBuilder(ApiManager::class)->disableOriginalConstructor()->getMock(); $configManager = new ConfigManager($config, $decisionManagerMock, $trackerManager); $visitorDelegate = new VisitorDelegate(new Container(), $configManager, $visitorId, false, $context, true); @@ -211,10 +200,10 @@ public function testJson() $this->assertJsonStringEqualsJsonString( json_encode([ - 'visitorId' => $visitorId, - 'context' => $context, - 'hasConsent' => true - ]), + 'visitorId' => $visitorId, + 'context' => $context, + 'hasConsent' => true, + ]), json_encode($visitor) ); }