/**
  * @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']);
 }