AlreadyDonatedControllerTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 26
c 1
b 0
f 0
dl 0
loc 49
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A test_given_no_parameter_controller_defaults_to_maximum_lifetime() 0 10 1
A test_given_a_parameter_that_exceeds_maximum_duration_controller_defaults_to_maximum_lifetime() 0 10 1
A test_given_a_parameter_controller_defaults_to_parameter_lifetime_in_hours() 0 10 1
A test_given_a_parameter_with_invalid_value_controller_defaults_to_maximum_lifetime() 0 10 1
1
<?php
2
3
namespace WMDE\BannerServer\Tests\Unit\Controller;
4
5
use PHPUnit\Framework\Attributes\CoversClass;
0 ignored issues
show
Bug introduced by
The type PHPUnit\Framework\Attributes\CoversClass was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
6
use PHPUnit\Framework\TestCase;
7
use Symfony\Component\HttpFoundation\Request;
8
use Symfony\Component\HttpFoundation\Response;
9
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
10
use WMDE\BannerServer\Controller\AlreadyDonatedController;
11
12
#[CoversClass( AlreadyDonatedController::class )]
13
class AlreadyDonatedControllerTest extends TestCase {
14
15
	public function test_given_no_parameter_controller_defaults_to_maximum_lifetime(): void {
16
		$controller = new AlreadyDonatedController();
17
18
		$response = $controller->index( new Request( [ 'c' => 'fundraising' ] ) );
19
20
		$this->assertSame( Response::HTTP_OK, $response->getStatusCode() );
21
		$firstCookie = $response->headers->getCookies( ResponseHeaderBag::COOKIES_FLAT )[0];
22
		$expectedDate = ( new \DateTime() )->add( new \DateInterval( AlreadyDonatedController::MAX_INTERVAL_LENGTH ) );
23
24
		$this->assertEqualsWithDelta( $expectedDate->getTimestamp(), $firstCookie->getExpiresTime(), 5 );
25
	}
26
27
	public function test_given_a_parameter_controller_defaults_to_parameter_lifetime_in_hours(): void {
28
		$controller = new AlreadyDonatedController();
29
30
		$response = $controller->index( new Request( [ 'c' => 'fundraising', 'd' => '48' ] ) );
31
32
		$this->assertSame( Response::HTTP_OK, $response->getStatusCode() );
33
		$firstCookie = $response->headers->getCookies( ResponseHeaderBag::COOKIES_FLAT )[0];
34
		$expectedDate = ( new \DateTime() )->add( new \DateInterval( 'PT48H' ) );
35
36
		$this->assertEqualsWithDelta( $expectedDate->getTimestamp(), $firstCookie->getExpiresTime(), 5 );
37
	}
38
39
	public function test_given_a_parameter_that_exceeds_maximum_duration_controller_defaults_to_maximum_lifetime(): void {
40
		$controller = new AlreadyDonatedController();
41
42
		$response = $controller->index( new Request( [ 'c' => 'fundraising', 'd' => 6 * 7 * 24 ] ) );
43
44
		$this->assertSame( Response::HTTP_OK, $response->getStatusCode() );
45
		$firstCookie = $response->headers->getCookies( ResponseHeaderBag::COOKIES_FLAT )[0];
46
		$expectedDate = ( new \DateTime() )->add( new \DateInterval( AlreadyDonatedController::MAX_INTERVAL_LENGTH ) );
47
48
		$this->assertEqualsWithDelta( $expectedDate->getTimestamp(), $firstCookie->getExpiresTime(), 5 );
49
	}
50
51
	public function test_given_a_parameter_with_invalid_value_controller_defaults_to_maximum_lifetime(): void {
52
		$controller = new AlreadyDonatedController();
53
54
		$response = $controller->index( new Request( [ 'c' => 'fundraising', 'd' => 'forever' ] ) );
55
56
		$this->assertSame( Response::HTTP_OK, $response->getStatusCode() );
57
		$firstCookie = $response->headers->getCookies( ResponseHeaderBag::COOKIES_FLAT )[0];
58
		$expectedDate = ( new \DateTime() )->add( new \DateInterval( AlreadyDonatedController::MAX_INTERVAL_LENGTH ) );
59
60
		$this->assertEqualsWithDelta( $expectedDate->getTimestamp(), $firstCookie->getExpiresTime(), 5 );
61
	}
62
63
}
64