Esempio n. 1
0
 /**
  * {@inheritDoc}
  */
 public function execute($request, $catchInteractive = false)
 {
     $action = null;
     try {
         $this->extensions->onPreExecute($request);
         if (false == ($action = $this->findActionSupported($request))) {
             throw RequestNotSupportedException::create($request);
         }
         $this->extensions->onExecute($request, $action);
         $action->execute($request);
         $this->extensions->onPostExecute($request, $action);
     } catch (InteractiveRequestInterface $interactiveRequest) {
         $interactiveRequest = $this->extensions->onInteractiveRequest($interactiveRequest, $request, $action) ?: $interactiveRequest;
         if ($catchInteractive) {
             return $interactiveRequest;
         }
         throw $interactiveRequest;
     } catch (\Exception $e) {
         $this->extensions->onException($e, $request, $action ?: null);
         throw $e;
     }
     return null;
 }
 /**
  * @test
  */
 public function shouldCallOnInteractiveRequestWithNewRequestIfFirstExtensionReturnNew()
 {
     $expectedInteractiveRequest = $this->getMock('Payum\\Core\\Request\\InteractiveRequestInterface');
     $expectedNewInteractiveRequest = $this->getMock('Payum\\Core\\Request\\InteractiveRequestInterface');
     $expectedAction = $this->getMock('Payum\\Core\\Action\\ActionInterface');
     $expectedRequest = new \stdClass();
     $extensionFirst = $this->createExtensionMock();
     $extensionFirst->expects($this->once())->method('onInteractiveRequest')->with($this->identicalTo($expectedInteractiveRequest), $this->identicalTo($expectedRequest), $this->identicalTo($expectedAction))->will($this->returnValue($expectedNewInteractiveRequest));
     $extensionSecond = $this->createExtensionMock();
     $extensionSecond->expects($this->once())->method('onInteractiveRequest')->with($this->identicalTo($expectedNewInteractiveRequest), $this->identicalTo($expectedRequest), $this->identicalTo($expectedAction));
     $collection = new ExtensionCollection();
     $collection->addExtension($extensionFirst);
     $collection->addExtension($extensionSecond);
     $result = $collection->onInteractiveRequest($expectedInteractiveRequest, $expectedRequest, $expectedAction);
     $this->assertSame($expectedNewInteractiveRequest, $result);
 }