View source
<?php
declare (strict_types=1);
namespace PantheonSystems\CDNBehatHelpers\tests;
use PHPUnit\Framework\TestCase;
use PantheonSystems\CDNBehatHelpers\AgeTracker;
final class AgeTrackerTest extends TestCase {
public function testGetTrackedHeaders($path, array $headers_set) {
$AgeTracker = new AgeTracker();
foreach ($headers_set as $headers) {
$AgeTracker
->trackHeaders($path, $headers);
}
$actual_tracked_headers = $AgeTracker
->getTrackedHeaders($path);
$this
->assertEquals($headers_set, $actual_tracked_headers);
}
public function providerPathsAndHeaders() {
$data = array();
$data[] = [
'/home',
$this
->cacheLifeIncreasing(),
];
$data[] = [
'/cache-got-cleared',
$this
->cacheGotClearedHeaders(),
];
return $data;
}
public function providerExpectedCacheClears() {
$data = array();
$data[] = [
'/home',
$this
->cacheLifeIncreasing(),
false,
];
$data[] = [
'/cache-got-cleared',
$this
->cacheGotClearedHeaders(),
true,
];
return $data;
}
public function testCheckCacheClear($path, array $headers_set, $expected_cache_clear) {
$AgeTracker = new AgeTracker();
foreach ($headers_set as $headers) {
$AgeTracker
->trackHeaders($path, $headers);
}
$this
->assertEquals($expected_cache_clear, $AgeTracker
->wasCacheClearedBetweenLastTwoRequests($path));
$this
->assertEquals(!$expected_cache_clear, $AgeTracker
->ageIncreasedBetweenLastTwoRequests($path));
}
protected function cacheLifeIncreasing() {
return [
[
'cache-control' => 'max-age=600, public',
'age' => 3,
'x-timer' => 'S1502402462.916272,VS0,VE1',
],
[
'cache-control' => 'max-age=600, public',
'age' => 10,
'x-timer' => 'S1502402469.916272,VS0,VE1',
],
];
}
protected function cacheGotClearedHeaders() {
return [
[
'cache-control' => 'max-age=600, public',
'age' => 30,
'x-timer' => 'S1502402462.916272,VS0,VE1',
],
[
'cache-control' => 'max-age=600, public',
'age' => 0,
'x-timer' => 'S1502402469.916272,VS0,VE1',
],
];
}
}