Skip to content

Commit

Permalink
Expand test for non-German donation data
Browse files Browse the repository at this point in the history
Use donor data for an imaginary French donor.

Remove BIC from donor data to test that BICs are no longer needed
See https://phabricator.wikimedia.org/T192921
  • Loading branch information
gbirke committed May 4, 2018
1 parent 83cbb64 commit 329af1b
Showing 1 changed file with 54 additions and 25 deletions.
79 changes: 54 additions & 25 deletions tests/EdgeToEdge/Routes/AddDonationRouteTest.php
Expand Up @@ -12,11 +12,13 @@
use WMDE\Fundraising\Entities\Donation;
use WMDE\Fundraising\Frontend\App\RouteHandlers\ShowDonationConfirmationHandler;
use WMDE\Fundraising\Frontend\Factories\FunFunFactory;
use WMDE\Fundraising\Frontend\Infrastructure\NullDomainNameValidator;
use WMDE\Fundraising\Frontend\Infrastructure\PageViewTracker;
use WMDE\Fundraising\Frontend\Tests\EdgeToEdge\WebRouteTestCase;
use WMDE\Fundraising\Frontend\Tests\Fixtures\FixedTokenGenerator;
use WMDE\Fundraising\PaymentContext\DataAccess\Sofort\Transfer\Client as SofortClient;
use WMDE\Fundraising\PaymentContext\DataAccess\Sofort\Transfer\Response as SofortResponse;
use WMDE\FunValidators\Validators\EmailValidator;

/**
* @licence GNU GPL v2+
Expand Down Expand Up @@ -308,6 +310,58 @@ private function newComplementableFormInput(): array {
];
}

public function testGivenNonGermanDonor_donationGetsPersisted(): void {
$this->createEnvironment( [], function ( Client $client, FunFunFactory $factory ): void {
$factory->setEmailValidator( new EmailValidator( new NullDomainNameValidator() ) );

$client->followRedirects( false );

$client->request(
'POST',
'/donation/add',
$this->newFrenchDonorFormInput()
);

$donation = $this->getDonationFromDatabase( $factory );

$data = $donation->getDecodedData();
$this->assertSame( 'Claire', $data['vorname'] );
$this->assertSame( 'Jennesaispas', $data['nachname'] );
$this->assertSame( 'Claire Jennesaispas', $donation->getDonorFullName() );
$this->assertSame( 'Ruelle Argile 12', $data['strasse'] );
$this->assertSame( '12345', $data['plz'] );
$this->assertSame( 'Unlieu', $data['ort'] );
$this->assertSame( 'Unlieu', $donation->getDonorCity() );
$this->assertSame( 'FR', $data['country'] );
$this->assertSame( 'claire@jennesaispas.fr', $data['email'] );
$this->assertSame( 'claire@jennesaispas.fr', $donation->getDonorEmail() );
$this->assertSame( 'FR7630066100410001057380116', $data['iban'] );
$this->assertSame( '', $data['bic'] );
$this->assertSame( '', $data['konto'] );
$this->assertSame( '', $data['blz'] );
$this->assertSame( '', $data['bankname'] );
} );
}

private function newFrenchDonorFormInput(): array {
return [
'betrag' => '5,51',
'zahlweise' => 'BEZ',
'periode' => 0,
'iban' => 'FR7630066100410001057380116',
'addressType' => 'person',
'salutation' => 'Frau',
'title' => '',
'firstName' => 'Claire',
'lastName' => 'Jennesaispas',
'street' => 'Ruelle Argile 12',
'postcode' => '12345',
'city' => 'Unlieu',
'country' => 'FR',
'email' => 'claire@jennesaispas.fr',
];
}

private function getDonationFromDatabase( FunFunFactory $factory ): Donation {
$donationRepo = $factory->getEntityManager()->getRepository( Donation::class );
$donation = $donationRepo->find( 1 );
Expand Down Expand Up @@ -758,31 +812,6 @@ public function testGivenCommasInStreetInput_donationGetsPersisted(): void {
} );
}

public function testGivenSufficientForeignBankData_donationGetsPersisted(): void {
$this->createEnvironment( [], function ( Client $client, FunFunFactory $factory ): void {
$formInput = $this->newValidFormInput();
$formInput['iban'] = 'AT022050302101023600';
$formInput['bic'] = 'SPIHAT22XXX';
$formInput['konto'] = '';
$formInput['blz'] = '';
$formInput['bankname'] = '';
$client->request(
'POST',
'/donation/add',
$formInput
);

$donation = $this->getDonationFromDatabase( $factory );
$data = $donation->getDecodedData();

$this->assertSame( 'AT022050302101023600', $data['iban'] );
$this->assertSame( 'SPIHAT22XXX', $data['bic'] );
$this->assertSame( '', $data['konto'] );
$this->assertSame( '', $data['blz'] );
$this->assertSame( '', $data['bankname'] );
} );
}

public function testCookieFlagsSecureAndHttpOnlyAreSet(): void {
$client = new Client(
$this->createSilexApplication(),
Expand Down

0 comments on commit 329af1b

Please sign in to comment.