/** * @test */ public function shouldNotOverrideProvidesValue() { $payment = new Payment(); $payment->setNumber('1234'); $payment->setCurrencyCode('USD'); $payment->setTotalAmount(123); $payment->setDescription('the description'); $payment->setClientId('theClientId'); $payment->setClientEmail('theClientEmail'); $payment->setDetails(array('Ds_Merchant_MerchantURL' => 'a_merchant_url', 'Ds_Merchant_TransactionType' => 1, 'Ds_Merchant_ConsumerLanguage' => '002')); $apiMock = $this->createApiMock(); $apiMock->expects($this->once())->method('ensureCorrectOrderNumber')->with($payment->getNumber())->willReturn($payment->getNumber()); $apiMock->expects($this->once())->method('getISO4127')->with($payment->getCurrencyCode())->willReturn(840); $apiMock->expects($this->once())->method('getMerchantCode')->willReturn('a_merchant_code'); $apiMock->expects($this->once())->method('getMerchantTerminalCode')->willReturn('001'); $tokenMock = $this->getMock('Payum\\Core\\Security\\TokenInterface'); $action = new ConvertPaymentAction(); $action->setApi($apiMock); $action->execute(new Convert($payment, 'array', $tokenMock)); $details = $payment->getDetails(); $this->assertNotEmpty($details); $this->assertArrayHasKey('Ds_Merchant_MerchantURL', $details); $this->assertEquals('a_merchant_url', $details['Ds_Merchant_MerchantURL']); $this->assertArrayHasKey('Ds_Merchant_TransactionType', $details); $this->assertEquals(1, $details['Ds_Merchant_TransactionType']); $this->assertArrayHasKey('Ds_Merchant_ConsumerLanguage', $details); $this->assertEquals('002', $details['Ds_Merchant_ConsumerLanguage']); }