Completed
Pull Request — master (#19)
by Tim
03:20
created

CampaignCollectionTest::getTestbucket()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace WMDE\BannerServer\Tests\Unit\Entity\BannerSelection;
6
7
use WMDE\BannerServer\Entity\BannerSelection\Banner;
8
use WMDE\BannerServer\Entity\BannerSelection\Bucket;
9
use WMDE\BannerServer\Entity\BannerSelection\Campaign;
10
use WMDE\BannerServer\Entity\BannerSelection\CampaignCollection;
11
use WMDE\BannerServer\Tests\Utils\FakeRandomInteger;
12
13
class CampaignCollectionTest extends \PHPUnit\Framework\TestCase {
14
15
	private function getTestbucket(): Bucket {
16
		return new Bucket(
17
			'test',
18
			new Banner( 'TestMain' )
19
		);
20
	}
21
22
	public function test_given_date_returns_active_campaign() {
23
		$campaignCollection = new CampaignCollection(
24
			new Campaign(
25
				'C18_WMDE_Test_future',
26
				new \DateTime( '2099-10-01 14:00:00' ),
27
				new \DateTime( '2099-10-31 14:00:00' ),
28
				1,
29
				new FakeRandomInteger( 1 ),
30
				$this->getTestbucket()
31
			),
32
			new Campaign(
33
				'C18_WMDE_Test_present',
34
				new \DateTime( '2018-10-01 14:00:00' ),
35
				new \DateTime( '2018-10-31 14:00:00' ),
36
				1,
37
				new FakeRandomInteger( 1 ),
38
				$this->getTestbucket()
39
			),
40
			new Campaign(
41
				'C18_WMDE_Test_past',
42
				new \DateTime( '1999-10-01 14:00:00' ),
43
				new \DateTime( '1999-10-31 14:00:00' ),
44
				1,
45
				new FakeRandomInteger( 1 ),
46
				$this->getTestbucket()
47
			)
48
		);
49
50
		$campaign = $campaignCollection->getCampaign( new \DateTime( '2018-10-22 13:59:59' ) );
51
		$this->assertNotNull( $campaign );
52
		$this->assertEquals( $campaign->getIdentifier(), 'C18_WMDE_Test_present' );
53
	}
54
55
	public function test_given_date_out_of_range_does_not_return_campaign() {
56
		$campaignCollection = new CampaignCollection(
57
			new Campaign(
58
				'C18_WMDE_Test_present',
59
				new \DateTime( '2018-10-01 14:00:00' ),
60
				new \DateTime( '2018-10-31 14:00:00' ),
61
				1,
62
				new FakeRandomInteger( 1 ),
63
				$this->getTestbucket()
64
			),
65
			new Campaign(
66
				'C18_WMDE_Test_past',
67
				new \DateTime( '1999-10-01 14:00:00' ),
68
				new \DateTime( '1999-10-31 14:00:00' ),
69
				1,
70
				new FakeRandomInteger( 1 ),
71
				$this->getTestbucket()
72
			)
73
		);
74
75
		$this->assertEquals(
76
			$campaignCollection->getCampaign( new \DateTime( '2017-09-01 14:00:00' ) ),
77
			null
78
		);
79
80
		$this->assertNull( $campaignCollection->getCampaign( new \DateTime( '2017-09-01 14:00:00' ) ) );
81
	}
82
}
83