Completed
Pull Request — master (#1)
by Tim
74:28 queued 09:27
created

newChangeAddressRequest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 13
nc 1
nop 0
dl 0
loc 14
rs 9.8333
c 0
b 0
f 0
1
<?php
2
3
declare( strict_types = 1 );
4
5
namespace WMDE\Fundraising\AddressChangeContext\Tests\Unit\UseCases;
6
7
use PHPUnit\Framework\TestCase;
8
use WMDE\Fundraising\AddressChange\Domain\AddressChangeRepository;
9
use WMDE\Fundraising\AddressChange\Domain\Model\AddressChange;
10
use WMDE\Fundraising\AddressChange\UseCases\ChangeAddress\ChangeAddressRequest;
11
use WMDE\Fundraising\AddressChange\UseCases\ChangeAddress\ChangeAddressUseCase;
12
13
/**
14
 * @covers \WMDE\Fundraising\AddressChange\UseCases\ChangeAddress\ChangeAddressUseCase
15
 */
16
class ChangeAddressUseCaseTest extends TestCase {
17
18
	private const VALID_SAMPLE_UUID = 'd8441c6e-1f7a-4710-97d3-0e2126c86d40';
19
20
	public function testGivenValidAddressChangeRequest_successResponseIsReturned(): void {
21
		$mockAddressChangeRepository = $this->createMock( AddressChangeRepository::class );
22
		$mockAddressChangeRepository->method( 'getAddressChangeByUuid' )->willReturn(
0 ignored issues
show
Bug introduced by
The method method() does not exist on PHPUnit\Framework\MockObject\MockObject. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

22
		$mockAddressChangeRepository->/** @scrutinizer ignore-call */ 
23
                                method( 'getAddressChangeByUuid' )->willReturn(

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
23
			AddressChange::createNewPersonAddressChange( self::VALID_SAMPLE_UUID )
24
		);
25
		$useCase = new ChangeAddressUseCase( $mockAddressChangeRepository );
26
		$response = $useCase->changeAddress( $this->newChangeAddressRequest() );
27
		$this->assertTrue( $response->isSuccess() );
28
	}
29
30
	public function testGivenInvalidAddressChangeRequest_errorResponseIsReturned(): void {
31
		$mockAddressChangeRepository = $this->createMock( AddressChangeRepository::class );
32
		$mockAddressChangeRepository->method( 'getAddressChangeByUuid' )->willReturn(
33
			AddressChange::createNewPersonAddressChange( self::VALID_SAMPLE_UUID )
34
		);
35
		$useCase = new ChangeAddressUseCase( $mockAddressChangeRepository );
36
		$response = $useCase->changeAddress( $this->newMissingDataChangeAddressRequest() );
37
		$this->assertFalse( $response->isSuccess() );
38
	}
39
40
	public function testGivenUnknownAddressChangeRequestIdentifier_errorResponseIsReturned(): void {
41
		$mockAddressChangeRepository = $this->createMock( AddressChangeRepository::class );
42
		$mockAddressChangeRepository->method( 'getAddressChangeByUuid' )->willReturn(
43
			null
44
		);
45
		$useCase = new ChangeAddressUseCase( $mockAddressChangeRepository );
46
		$response = $useCase->changeAddress( $this->newChangeAddressRequest() );
47
		$this->assertFalse( $response->isSuccess() );
48
	}
49
50
	private function newChangeAddressRequest(): ChangeAddressRequest {
51
		$request = new ChangeAddressRequest();
52
		$request->setIdentifier( self::VALID_SAMPLE_UUID );
53
		$request->setAddress( 'Test' );
54
		$request->setAddressType( AddressChange::ADDRESS_TYPE_PERSON );
55
		$request->setCity( 'Test City' );
56
		$request->setCountry( 'Test Country' );
57
		$request->setFirstName( 'Test Name' );
58
		$request->setLastName( 'Test Last Name' );
59
		$request->setPostcode( '12345' );
60
		$request->setSalutation( 'Herr' );
61
		$request->setTitle( 'Prof. Dr.' );
62
		$request->freeze();
63
		return $request;
64
	}
65
66
	private function newMissingDataChangeAddressRequest(): ChangeAddressRequest {
67
		$request = new ChangeAddressRequest();
68
		$request->setIdentifier( self::VALID_SAMPLE_UUID );
69
		$request->setAddress( 'Test' );
70
		$request->setAddressType( AddressChange::ADDRESS_TYPE_PERSON );
71
		$request->setCity( '' );
72
		$request->setCountry( 'Test Country' );
73
		$request->setFirstName( 'Test Name' );
74
		$request->setLastName( 'Test Last Name' );
75
		$request->setPostcode( '12345' );
76
		$request->setSalutation( 'Herr' );
77
		$request->setTitle( 'Prof. Dr.' );
78
		$request->freeze();
79
		return $request;
80
	}
81
}
82