public function shouldCorrectlyConvertOrderToDetailsAndSetItBack()
{
$gatewayMock = $this->getMock('Payum\\Core\\GatewayInterface');
$gatewayMock->expects($this->once())->method('execute')->with($this->isInstanceOf('Payum\\Core\\Request\\GetCurrency'))->willReturnCallback(function (GetCurrency $request) {
$request->name = 'US Dollar';
$request->alpha3 = 'USD';
$request->numeric = 123;
$request->exp = 2;
$request->country = 'US';
});
$payment = new Payment();
$payment->setNumber('theNumber');
$payment->setCurrencyCode('USD');
$payment->setTotalAmount(123);
$payment->setDescription('the description');
$payment->setClientId('theClientId');
$payment->setClientEmail('theClientEmail');
$action = new ConvertPaymentAction();
$action->setGateway($gatewayMock);
$action->execute($convert = new Convert($payment, 'array'));
$details = $convert->getResult();
$this->assertNotEmpty($details);
$this->assertArrayHasKey('INVNUM', $details);
$this->assertEquals('theNumber', $details['INVNUM']);
$this->assertArrayHasKey('AMT', $details);
$this->assertEquals(123, $details['AMT']);
$this->assertArrayHasKey('CURRENCYCODE', $details);
$this->assertEquals('USD', $details['CURRENCYCODE']);
}