/** * @test */ public function shouldRequestGetTransactionDetailsAndUpdateModelIfTransactionIdSetInModel() { $gatewayMock = $this->createGatewayMock(); $gatewayMock->expects($this->once())->method('execute')->with($this->isInstanceOf('Payum\\Paypal\\ProHosted\\Nvp\\Request\\Api\\GetTransactionDetails'))->will($this->returnCallback(function (GetTransactionDetails $request) { $model = $request->getModel(); $model['foo'] = 'fooVal'; $model['AMT'] = 33; })); $action = new SyncAction(); $action->setGateway($gatewayMock); $details = new \ArrayObject(array('AMT' => 11, 'txn_id' => 'aTxn_id')); $action->execute($sync = new Sync($details)); $this->assertArrayHasKey('foo', (array) $details); $this->assertEquals('fooVal', $details['foo']); $this->assertArrayHasKey('AMT', (array) $details); $this->assertEquals(33, $details['AMT']); }