Skip to content

Commit

Permalink
enh: more added pest tests (CacheHeaderBuilder)
Browse files Browse the repository at this point in the history
  • Loading branch information
kamarton committed Jan 5, 2025
1 parent 2e97214 commit 73cb421
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 1 deletion.
25 changes: 24 additions & 1 deletion tests/Builders/CacheHeaderBuilder/NoCacheTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,27 @@
->noCache();
expect($builder->isNoCache())->toBeTrue()
->and($builder->withSharedMaxAge(60)->isNoCache())->toBeFalse();
});
});

it('is no cache multiple stage', function() {
$builder = (new CacheHeaderBuilder());
expect($builder->isNoCache())->toBeFalse();
$builder->noCache();
expect($builder->isNoCache())->toBeTrue();
$builder->reset();
expect($builder->isNoCache())->toBeFalse();

$builder->noCache();
$builder->public();
expect($builder->isNoCache())->toBeFalse();
});

it('no cache reset', function () {
$builder = (new CacheHeaderBuilder())
->noCache();
expect($builder->withReset()->toHeaders())->toBeEmpty()
->and($builder->withPrivate()->toHeaders())->toBe(['cache-control' => 'private'])
->and($builder->withPublic()->toHeaders())->toBe(['cache-control' => 'public'])
->and($builder->withNoStore()->toHeaders())->toBe(['cache-control' => 'no-store'])
->and($builder->withMustRevalidate()->toHeaders())->toBe(['cache-control' => 'must-revalidate']);
});
84 changes: 84 additions & 0 deletions tests/Builders/CacheHeaderBuilderPestTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<?php

declare(strict_types=1);

use SmartonDev\HttpCache\Builders\CacheHeaderBuilder;
use SmartonDev\HttpCache\Builders\ETagHeaderBuilder;

it('is empty', function () {
$builder = new CacheHeaderBuilder();
expect($builder->isEmpty())->toBeTrue()
->and($builder->withMaxAge(10)->isEmpty())->toBeFalse();
});

it('is empty multiple stage', function () {
$builder = new CacheHeaderBuilder();
expect($builder->isEmpty())->toBeTrue();
$builder->noCache();
expect($builder->isEmpty())->toBeFalse();
$builder->reset();
expect($builder->isEmpty())->toBeTrue();
});

it('is not empty', function () {
$builder = new CacheHeaderBuilder();
expect($builder->isNotEmpty())->toBeFalse()
->and($builder->withMaxAge(10)->isNotEmpty())->toBeTrue();
});

it('is not empty multiple stage', function () {
$builder = new CacheHeaderBuilder();
expect($builder->isNotEmpty())->toBeFalse();
$builder->noCache();
expect($builder->isNotEmpty())->toBeTrue();
$builder->reset();
expect($builder->isNotEmpty())->toBeFalse();
});

it('reset', function (CacheHeaderBuilder $builder) {
expect($builder->toHeaders())->not()->toBeEmpty();
$builder->reset();
expect($builder->toHeaders())->toBeEmpty();
})->with([
'no cache' => [(new CacheHeaderBuilder())->withNoCache()],
'private' => [(new CacheHeaderBuilder())->withPrivate()],
'public' => [(new CacheHeaderBuilder())->withPublic()],
'no store' => [(new CacheHeaderBuilder())->withNoStore()],
'must revalidate' => [(new CacheHeaderBuilder())->withMustRevalidate()],
'proxy revalidate' => [(new CacheHeaderBuilder())->withProxyRevalidate()],
'must understand' => [(new CacheHeaderBuilder())->withMustUnderstand()],
'immutable' => [(new CacheHeaderBuilder())->withImmutable()],
'no transform' => [(new CacheHeaderBuilder())->withNoTransform()],
'stale while revalidate' => [(new CacheHeaderBuilder())->withStaleWhileRevalidate(3600)],
'stale if error' => [(new CacheHeaderBuilder())->withStaleIfError(3600)],
'expires' => [(new CacheHeaderBuilder())->withExpires('Sun, 05 Sep 2021 00:00:00 GMT')],
'etag' => [(new CacheHeaderBuilder())->withETag((new ETagHeaderBuilder())->withETag('123456'))],
'age' => [(new CacheHeaderBuilder())->withAge(1)],
'shared max age' => [(new CacheHeaderBuilder())->withSharedMaxAge(3600)],
'max age' => [(new CacheHeaderBuilder())->withMaxAge(3600)],
'last modified' => [(new CacheHeaderBuilder())->withLastModified(1)],
]);

it('with reset', function (CacheHeaderBuilder $builder) {
expect($builder->toHeaders())->not()->toBeEmpty()
->and($builder->withReset()->toHeaders())->toBeEmpty()
->and($builder->toHeaders())->not()->toBeEmpty();
})->with([
'no cache' => [(new CacheHeaderBuilder())->withNoCache()],
'private' => [(new CacheHeaderBuilder())->withPrivate()],
'public' => [(new CacheHeaderBuilder())->withPublic()],
'no store' => [(new CacheHeaderBuilder())->withNoStore()],
'must revalidate' => [(new CacheHeaderBuilder())->withMustRevalidate()],
'proxy revalidate' => [(new CacheHeaderBuilder())->withProxyRevalidate()],
'must understand' => [(new CacheHeaderBuilder())->withMustUnderstand()],
'immutable' => [(new CacheHeaderBuilder())->withImmutable()],
'no transform' => [(new CacheHeaderBuilder())->withNoTransform()],
'stale while revalidate' => [(new CacheHeaderBuilder())->withStaleWhileRevalidate(3600)],
'stale if error' => [(new CacheHeaderBuilder())->withStaleIfError(3600)],
'expires' => [(new CacheHeaderBuilder())->withExpires('Sun, 05 Sep 2021 00:00:00 GMT')],
'etag' => [(new CacheHeaderBuilder())->withETag((new ETagHeaderBuilder())->withETag('123456'))],
'age' => [(new CacheHeaderBuilder())->withAge(1)],
'shared max age' => [(new CacheHeaderBuilder())->withSharedMaxAge(3600)],
'max age' => [(new CacheHeaderBuilder())->withMaxAge(3600)],
'last modified' => [(new CacheHeaderBuilder())->withLastModified(1)],
]);

0 comments on commit 73cb421

Please sign in to comment.