function testUnserializeAndStripeFailures() { $billingAddress = $this->getUSAddress(); $lineItem = $this->getElectronicServiceLineItem(); $successOutput = []; /** @var Basket $view */ $view = $this->prepareBasket($lineItem, $successOutput, $billingAddress); $state = $view->getStateForTesting(); $serialised = serialize($view); /** @var Basket $unserialised */ $unserialised = unserialize($serialised); $unserialised->updateView(['transactionSuccessCallback' => $this->successCallback]); $state = $view->getStateForTesting(); $this->assertTrue($state->readyForPaymentInfo()); // Check stripe method fails StripeFacade::$testMode = true; /** @var Basket $uns */ $unserialised = unserialize($serialised); $this->failOn3DifferentCountries($unserialised); /** @var Basket $uns */ $unserialised = unserialize($serialised); $this->failOnOnlyIPandCardMatch($unserialised); /** @var Basket $uns */ $unserialised = unserialize($serialised); $this->succeedOnSameAddressAndCardCountries($unserialised, $successOutput); /** @var Basket $uns */ $unserialised = unserialize($serialised); $this->succeedOnAllCountriesMatch($unserialised, $successOutput); }