2626use CM \Payments \Model \Data \Payment as CMPaymentData ;
2727use CM \Payments \Service \PaymentService ;
2828use CM \Payments \Test \Unit \UnitTestCase ;
29+ use Magento \Framework \Event \ManagerInterface ;
2930use Magento \Sales \Api \Data \OrderAddressInterface ;
3031use Magento \Sales \Api \Data \OrderPaymentInterface ;
3132use Magento \Sales \Api \OrderRepositoryInterface ;
@@ -79,6 +80,11 @@ class PaymentServiceTest extends UnitTestCase
7980 */
8081 private $ cmPaymentsLoggerMock ;
8182
83+ /**
84+ * @var ManagerInterface|\PHPUnit\Framework\MockObject\MockObject
85+ */
86+ private $ eventManagerMock ;
87+
8288 public function testCreateIdealPayment ()
8389 {
8490 $ this ->paymentClientMock ->expects ($ this ->once ())->method ('create ' )->willReturn (
@@ -107,6 +113,51 @@ public function testCreateIdealPayment()
107113 );
108114 }
109115
116+ public function testEventDispatch ()
117+ {
118+ $ paymentCreateResponse = new \CM \Payments \Client \Model \Response \PaymentCreate (
119+ [
120+ 'id ' => 'pid4911257676t ' ,
121+ 'status ' => 'REDIRECTED_FOR_AUTHORIZATION ' ,
122+ 'urls ' => [
123+ 0 => [
124+ 'purpose ' => 'REDIRECT ' ,
125+ 'method ' => 'GET ' ,
126+ //phpcs:ignore
127+ 'url ' => 'https://test.docdatapayments.com/ps_sim/idealbanksimulator.jsf?trxid=1625579689224&ec=4911257676&returnUrl=https%3A%2F%2Ftestsecure.docdatapayments.com%2Fps%2FreturnFromAuthorization%3FpaymentReference%3D49112576765AD00EC846B52EAED61E9FC2530CFF90%26checkDigitId%3D49112576765AD00EC846B52EAED61E9FC2530CFF90 ' ,
128+ 'order ' => 1 ,
129+ ],
130+ ]
131+ ]
132+ );
133+
134+ $ this ->paymentClientMock ->expects ($ this ->once ())->method ('create ' )->willReturn (
135+ $ paymentCreateResponse
136+ );
137+ $ order = $ this ->getOrderMock ();
138+ $ paymentCreate = new PaymentCreate (
139+ MethodServiceInterface::API_METHODS_MAPPING [ConfigProvider::CODE_IDEAL ],
140+ [
141+ 'ideal_details ' => ['issuer_id ' => 'INGBNL2A ' ]
142+ ]
143+ );
144+ $ paymentCreateRequest = new PaymentCreateRequest ('0287A1617D93780EF28044B98438BF2F ' , $ paymentCreate );
145+
146+ $ cmPayment = new CMPayment (
147+ $ paymentCreateResponse ->getId (),
148+ $ paymentCreateResponse ->getStatus (),
149+ $ paymentCreateResponse ->getRedirectUrl (),
150+ $ paymentCreateResponse ->getUrls ()
151+ );
152+
153+ $ this ->eventManagerMock ->expects ($ this ->exactly (2 ))->method ('dispatch ' )->withConsecutive (
154+ ['cmpayments_before_payment_create ' , ['order ' => $ order , 'paymentCreateRequest ' => $ paymentCreateRequest ]],
155+ ['cmpayments_after_payment_create ' , ['order ' => $ order , 'cmPayment ' => $ cmPayment ]]
156+ );
157+
158+ $ this ->paymentService ->create ((string )$ order ->getEntityId ());
159+ }
160+
110161 /**
111162 * @return OrderInterface
112163 */
@@ -181,6 +232,10 @@ protected function setUp(): void
181232 ->disableOriginalConstructor ()
182233 ->getMock ();
183234
235+ $ this ->eventManagerMock = $ this ->getMockBuilder (ManagerInterface::class)
236+ ->disableOriginalConstructor ()
237+ ->getMock ();
238+
184239 $ this ->orderRepositoryMock ->method ('get ' )->willReturn ($ this ->getOrderMock ());
185240 $ this ->orderRepositoryMock ->method ('save ' );
186241 $ this ->cmOrderRepositoryMock ->method ('save ' );
@@ -205,6 +260,7 @@ protected function setUp(): void
205260 $ this ->cmPaymentFactoryMock ,
206261 $ this ->cmPaymentRepositoryMock ,
207262 $ this ->cmOrderRepositoryMock ,
263+ $ this ->eventManagerMock ,
208264 $ this ->cmPaymentsLoggerMock
209265 );
210266 }
0 commit comments