Skip to content

Commit

Permalink
Merge pull request #720 from wmde/fix-paypaldata-old-donations
Browse files Browse the repository at this point in the history
Ensure default values in PaypalData
  • Loading branch information
JeroenDeDauw committed Oct 22, 2016
2 parents ece7eeb + 9680efe commit baccfc5
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -445,20 +445,20 @@ private function getPayPalDataFromEntity( DoctrineDonation $dd ) {
if ( array_key_exists( 'paypal_payer_id', $data ) ) {
return ( new PayPalData() )
->setPayerId( $data['paypal_payer_id'] )
->setSubscriberId( $data['paypal_subscr_id'] )
->setPayerStatus( $data['paypal_payer_status'] )
->setAddressStatus( isset( $data['paypal_address_status'] ) ? $data['paypal_address_status'] : 'unknown' )
->setAmount( Euro::newFromString( $data['paypal_mc_gross'] ) )
->setCurrencyCode( $data['paypal_mc_currency'] )
->setFee( Euro::newFromString( $data['paypal_mc_fee'] ) )
->setSettleAmount( Euro::newFromString( $data['paypal_settle_amount'] ) )
->setFirstName( $data['paypal_first_name'] )
->setLastName( $data['paypal_last_name'] )
->setAddressName( $data['paypal_address_name'] )
->setPaymentId( $data['ext_payment_id'] )
->setPaymentType( $data['ext_payment_type'] )
->setPaymentStatus( $data['ext_payment_status'] )
->setPaymentTimestamp( $data['ext_payment_timestamp'] )
->setSubscriberId( $data['paypal_subscr_id'] ?? '' )
->setPayerStatus( $data['paypal_payer_status'] ?? '' )
->setAddressStatus( $data['paypal_address_status'] ?? '' )
->setAmount( Euro::newFromString( $data['paypal_mc_gross'] ?? '0' ) )
->setCurrencyCode( $data['paypal_mc_currency'] ?? '' )
->setFee( Euro::newFromString( $data['paypal_mc_fee'] ?? '0' ) )
->setSettleAmount( Euro::newFromString( $data['paypal_settle_amount'] ?? '0' ) )
->setFirstName( $data['paypal_first_name'] ?? '' )
->setLastName( $data['paypal_last_name'] ?? '' )
->setAddressName( $data['paypal_address_name'] ?? '' )
->setPaymentId( $data['ext_payment_id'] ?? '' )
->setPaymentType( $data['ext_payment_type'] ?? '' )
->setPaymentStatus( $data['ext_payment_status'] ?? '' )
->setPaymentTimestamp( $data['ext_payment_timestamp'] ?? '' )
->freeze()->assertNoNullFields();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
use WMDE\Fundraising\Frontend\DonationContext\Domain\Model\Donation;
use WMDE\Fundraising\Frontend\DonationContext\Domain\Repositories\GetDonationException;
use WMDE\Fundraising\Frontend\DonationContext\Domain\Repositories\StoreDonationException;
use WMDE\Fundraising\Frontend\PaymentContext\Domain\Model\PaymentType;
use WMDE\Fundraising\Frontend\PaymentContext\Domain\Model\PayPalPayment;
use WMDE\Fundraising\Frontend\Tests\Data\ValidDoctrineDonation;
use WMDE\Fundraising\Frontend\Tests\Data\ValidDonation;
use WMDE\Fundraising\Frontend\Tests\Fixtures\ThrowingEntityManager;
Expand Down Expand Up @@ -249,4 +251,25 @@ public function testPersistingDonationWithoutCommentCausesCommentToBeCleared() {
$this->assertDoctrineEntityIsInDatabase( $expectedDoctrineEntity );
}

public function testDonationWithIncompletePaypalDataCanBeLoaded() {
$donationId = $this->createPaypalDonationWithMissingFields();
$repository = $this->newRepository();
$donation = $repository->getDonationById( $donationId );
/** @var PayPalPayment $paypalPayment */
$paypalPayment = $donation->getPaymentMethod();
$this->assertNotNull( $paypalPayment->getPayPalData() );
$this->assertSame( '', $paypalPayment->getPayPalData()->getFirstName() );
}

private function createPaypalDonationWithMissingFields(): int {
$doctrineDonation = ValidDoctrineDonation::newDirectDebitDoctrineDonation();
$doctrineDonation->setPaymentType( PaymentType::PAYPAL );
$doctrineDonation->encodeAndSetData( array_merge( $doctrineDonation->getDecodedData(), [
'paypal_payer_id' => '1'
] ) );
$this->entityManager->persist( $doctrineDonation );
$this->entityManager->flush();
return $doctrineDonation->getId();
}

}

0 comments on commit baccfc5

Please sign in to comment.