Completed
Pull Request — master (#649)
by Jeroen De
50:49
created

newSucceedingAmountValidator()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 8
rs 9.4285
cc 1
eloc 6
nc 1
nop 0
1
<?php
2
3
declare( strict_types = 1 );
4
5
namespace WMDE\Fundraising\Frontend\DonatingContext\Tests\Integration\UseCases\AddDonation;
6
7
use WMDE\Fundraising\Frontend\DonatingContext\UseCases\AddDonation\AddDonationPolicyValidator;
8
use WMDE\Fundraising\Frontend\Tests\Data\ValidAddDonationRequest;
9
use WMDE\Fundraising\Frontend\Tests\Unit\Validation\ValidatorTestCase;
10
use WMDE\Fundraising\Frontend\Validation\AmountPolicyValidator;
11
use WMDE\Fundraising\Frontend\Validation\ConstraintViolation;
12
use WMDE\Fundraising\Frontend\Validation\TextPolicyValidator;
13
use WMDE\Fundraising\Frontend\Validation\ValidationResult;
14
15
/**
16
 * @covers WMDE\Fundraising\Frontend\DonatingContext\UseCases\AddDonation\AddDonationPolicyValidator
17
 *
18
 * @licence GNU GPL v2+
19
 * @author Gabriel Birke < [email protected] >
20
 */
21
class AddDonationPolicyValidatorTest extends ValidatorTestCase {
22
23
	public function testTooHighAmountGiven_needsModerationReturnsTrue() {
24
		$succeedingTextPolicy = $this->createMock( TextPolicyValidator::class );
25
		$succeedingTextPolicy->method( 'textIsHarmless' )->willReturn( true );
26
		$policyValidator = new AddDonationPolicyValidator(
27
			$this->newFailingAmountValidator(),
28
			$succeedingTextPolicy
29
		);
30
		$this->assertTrue( $policyValidator->needsModeration( ValidAddDonationRequest::getRequest() ) );
31
	}
32
33
	public function testGivenBadWords_needsModerationReturnsTrue() {
34
		$failingTextPolicyValidator = $this->createMock( TextPolicyValidator::class );
35
		$failingTextPolicyValidator->method( 'hasHarmlessContent' )
36
			->willReturn( false );
37
38
		$policyValidator = new AddDonationPolicyValidator(
39
			$this->newSucceedingAmountValidator(),
40
			$failingTextPolicyValidator
41
		);
42
		$this->assertTrue( $policyValidator->needsModeration( ValidAddDonationRequest::getRequest() ) );
43
	}
44
45
	private function newFailingAmountValidator(): AmountPolicyValidator {
46
		$amountPolicyValidator = $this->getMockBuilder( AmountPolicyValidator::class )
47
			->disableOriginalConstructor()
48
			->getMock();
49
50
		$amountPolicyValidator->method( 'validate' )->willReturn(
51
			new ValidationResult( new ConstraintViolation( 1000, 'too-high', 'amount' ) )
52
		);
53
		return $amountPolicyValidator;
54
	}
55
56
	private function newSucceedingAmountValidator(): AmountPolicyValidator {
57
		$amountPolicyValidator = $this->getMockBuilder( AmountPolicyValidator::class )
58
			->disableOriginalConstructor()
59
			->getMock();
60
61
		$amountPolicyValidator->method( 'validate' )->willReturn( new ValidationResult() );
62
		return $amountPolicyValidator;
63
	}
64
}
65