Skip to content

Commit 2c4b1ea

Browse files
authored
Merge pull request #117 from keboola/adamvyborny-CM-649-retry-on-unknown-metric
Retry on unknown metric
2 parents d42017f + 7423d2e commit 2c4b1ea

3 files changed

Lines changed: 63 additions & 11 deletions

File tree

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"ext-json": "*",
1010
"keboola/common-exceptions": "^1.1",
1111
"keboola/csv": "^1.1",
12-
"keboola/google-client-bundle": "^5.3",
12+
"keboola/google-client-bundle": "^5.4",
1313
"keboola/php-component": "^9.4",
1414
"keboola/storage-api-client": "^12.9",
1515
"symfony/config": "^5.2",

composer.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/Keboola/GoogleAnalyticsExtractor/GoogleAnalytics/ClientTest.php

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44

55
namespace Keboola\GoogleAnalyticsExtractor\GoogleAnalytics;
66

7+
use GuzzleHttp\Exception\ClientException;
78
use Keboola\Google\ClientBundle\Google\RestApi;
8-
use Keboola\GoogleAnalyticsExtractor\Configuration\Config;
9-
use Keboola\GoogleAnalyticsExtractor\Configuration\ConfigDefinition;
9+
use Monolog\Handler\TestHandler;
10+
use Monolog\Logger;
1011
use PHPUnit\Framework\Assert;
1112
use PHPUnit\Framework\TestCase;
1213
use Psr\Log\NullLogger;
@@ -16,14 +17,22 @@ class ClientTest extends TestCase
1617
/** @var Client */
1718
protected $client;
1819

20+
/** @var \Monolog\Logger */
21+
private Logger $logger;
22+
1923
public function setUp(): void
2024
{
25+
$testHandler = new TestHandler();
26+
$this->logger = new Logger('Google Analytics API tests');
27+
$this->logger->pushHandler($testHandler);
28+
2129
$this->client = new Client(
2230
new RestApi(
2331
(string) getenv('CLIENT_ID'),
2432
(string) getenv('CLIENT_SECRET'),
2533
(string) getenv('ACCESS_TOKEN'),
26-
(string) getenv('REFRESH_TOKEN')
34+
(string) getenv('REFRESH_TOKEN'),
35+
$this->logger,
2736
),
2837
new NullLogger(),
2938
[]
@@ -89,4 +98,47 @@ public function testGetBatch(): void
8998
Assert::assertNotEmpty($reports[1]['data']);
9099
Assert::assertEquals('sessions', $reports[1]['query']['name']);
91100
}
101+
102+
public function testRetryOnUnknownMetric(): void
103+
{
104+
$query = [
105+
'name' => 'sessions',
106+
'endpoint' => Client::REPORTS_URL,
107+
'query' => [
108+
'viewId' => getenv('VIEW_ID'),
109+
'metrics' => [
110+
['expression' => 'ga:metric2'],
111+
['expression' => 'ga:metric1'],
112+
['expression' => 'ga:goal11Completions'],
113+
],
114+
'dimensions' => [
115+
['name' => 'ga:date'],
116+
['name' => 'ga:source'],
117+
['name' => 'ga:country'],
118+
['name' => 'ga:pagePath'],
119+
],
120+
'dateRanges' => [[
121+
'startDate' => date('Y-m-d', strtotime('-12 months')),
122+
'endDate' => date('Y-m-d', strtotime('now')),
123+
]],
124+
],
125+
];
126+
127+
try {
128+
$this->client->getBatch($query);
129+
} catch (ClientException $e) {
130+
$this->assertStringContainsString('400 Bad Request', $e->getMessage());
131+
}
132+
133+
/** @var TestHandler $testHandler */
134+
$testHandler = $this->logger->getHandlers()[0];
135+
for ($i = 1; $i <= 6; $i++) {
136+
/** @var \Monolog\LogRecord $record */
137+
$record = $testHandler->getRecords()[$i];
138+
$this->assertEquals(
139+
sprintf('Retrying request (%dx) - reason: Bad Request', $i),
140+
$record['message']
141+
);
142+
}
143+
}
92144
}

0 commit comments

Comments
 (0)