Skip to content

Commit

Permalink
Fixed filters behavior in endpoint /reports
Browse files Browse the repository at this point in the history
  • Loading branch information
Progi1984 committed Feb 7, 2024
1 parent f1ee370 commit 97406c0
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 11 deletions.
17 changes: 9 additions & 8 deletions src/Controller/ReportController.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,18 @@ public function __construct(
public function reports(Request $request): JsonResponse
{
$executionFilters = [];
$requestParams = $request->query->all();

if ($request->query->has('filter_platform')) {
$executionFilters['platform'] = $request->query->get('filter_platform');
} elseif ($request->query->has('filter_browser')) {
$executionFilters['platform'] = $request->query->get('filter_browser');
if (isset($requestParams['filter_platform'])) {
$executionFilters['platform'] = $requestParams['filter_platform'];
} elseif (isset($requestParams['filter_browser'])) {
$executionFilters['platform'] = $requestParams['filter_browser'];
}
if ($request->query->has('filter_campaign')) {
$executionFilters['campaign'] = $request->query->get('filter_campaign');
if (isset($requestParams['filter_campaign'])) {
$executionFilters['campaign'] = $requestParams['filter_campaign'];
}
if ($request->query->has('filter_version')) {
$executionFilters['version'] = $request->query->get('filter_version');
if (isset($requestParams['filter_version'])) {
$executionFilters['version'] = $requestParams['filter_version'];
}
$executions = $this->executionRepository->findBy($executionFilters, [
'start_date' => 'DESC',
Expand Down
33 changes: 30 additions & 3 deletions tests/Controller/ReportControllerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,18 +39,22 @@ public function testCorsReports(): void
$this->assertEquals($response->headers->get('access-control-allow-origin'), '*');
}

public function testReports(): void
/**
* @dataProvider dataProviderReportFilters
* @param array<string, string> $query
*/
public function testReportsFilters(array $query, int $count): void
{
$client = static::createClient();
$client->request('GET', '/reports');
$client->request('GET', '/reports' . ($query ? '?' . http_build_query($query) : ''));
$response = $client->getResponse();

$this->assertTrue($response->isSuccessful());
$this->assertTrue($response->headers->has('content-type'));
$this->assertEquals('application/json', $response->headers->get('content-type'));

$content = json_decode($response->getContent(), true);
$this->assertGreaterThan(0, count($content));
$this->assertEquals($count, count($content));
$datePrevious = null;
foreach ($content as $item) {
if ($datePrevious) {
Expand All @@ -61,16 +65,28 @@ public function testReports(): void
$this->assertIsInt($item['id']);
$this->assertArrayHasKey('date', $item);
$this->assertArrayHasKey('version', $item);
if (isset($query['filter_version'])) {
$this->assertEquals($item['version'], $query['filter_version']);
}
$this->assertArrayHasKey('campaign', $item);
$this->assertContains($item['campaign'], array_merge(
ReportMochaImporter::FILTER_CAMPAIGNS,
ReportPlaywrightImporter::FILTER_CAMPAIGNS
));
if (isset($query['filter_campaign[0]'])) {
$this->assertEquals($item['campaign'], $query['filter_campaign[0]']);
}
$this->assertArrayHasKey('browser', $item);
$this->assertContains($item['browser'], ReportMochaImporter::FILTER_PLATFORMS);
$this->assertArrayHasKey('platform', $item);
$this->assertContains($item['platform'], ReportMochaImporter::FILTER_PLATFORMS);
$this->assertEquals($item['browser'], $item['platform']);
if (isset($query['filter_platform'])) {
$this->assertEquals($item['platform'], $query['filter_platform']);
}
if (isset($query['filter_browser'])) {
$this->assertEquals($item['platform'], $query['filter_browser']);
}
$this->assertArrayHasKey('start_date', $item);
$this->assertArrayHasKey('end_date', $item);
$this->assertArrayHasKey('duration', $item);
Expand All @@ -91,6 +107,17 @@ public function testReports(): void
}
}

public static function dataProviderReportFilters(): array

Check failure on line 110 in tests/Controller/ReportControllerTest.php

View workflow job for this annotation

GitHub Actions / PHP Static Analysis

Method App\Tests\Controller\ReportControllerTest::dataProviderReportFilters() return type has no value type specified in iterable type array.
{
return [
[[], 6],
[['filter_campaign[0]' => 'functional'], 6],
[['filter_platform' => 'chromium'], 6],
[['filter_browser' => 'chromium'], 6],
[['filter_version' => 'develop'], 6],
];
}

public function testReportNotFound(): void
{
$client = static::createClient();
Expand Down

0 comments on commit 97406c0

Please sign in to comment.