/** * @covers ::transferFiles */ public function testTransferFiles() { $shops = array(119200, 1321); $tmpDir = '/tmp/dir'; $docContent1 = 'data1'; $docContent2 = 'data2'; $docContent3 = 'data3'; $vendor1 = new Vendor('*****@*****.**', mt_rand(), mt_rand(), 771); $vendor2 = new Vendor('*****@*****.**', mt_rand(), mt_rand(), 772); $document1 = new Document(2006); $document2 = new Document(3011); // Getting documents list $this->mirakl->getFiles($shops)->willReturn(Mirakl::getShopDocuments($shops))->shouldBeCalled(); // Retrieving vendors $this->vendorManager->findByMiraklId(119200)->willReturn($vendor1)->shouldBeCalledTimes(1); $this->vendorManager->findByMiraklId(1321)->willReturn($vendor2)->shouldBeCalledTimes(1); // Checking documents $this->documentManager->findByVendor($vendor1)->willReturn(array(new Document(2008, "LEGAL_IDENTITY_OF_REPRESENTATIVE")))->shouldBeCalledTimes(1); $this->documentManager->findByVendor($vendor2)->willReturn(array(new Document(3006, "ALL_PROOF_OF_BANK_ACCOUNT")))->shouldBeCalledTimes(1); // Download missing documents $this->mirakl->downloadDocuments(array(2006), Argument::any())->willReturn($docContent1)->shouldBeCalledTimes(1); $this->mirakl->downloadDocuments(array(3008), Argument::any())->willReturn($docContent2)->shouldBeCalledTimes(1); $this->mirakl->downloadDocuments(array(3011), Argument::any())->willReturn($docContent3)->shouldBeCalledTimes(1); // Save files on disk $prophet = new PHPProphet(); $prophecy = $prophet->prophesize('HiPay\\Wallet\\Mirakl\\Vendor'); $prophecy->file_put_contents(Argument::containingString('/tmp/dir/'), Argument::containingString('data'))->willReturn(true)->shouldBeCalledTimes(3); $prophecy->reveal(); // Sending documents to HiPay Wallet $this->hipay->uploadDocument(771, HiPay::DOCUMENT_ALL_PROOF_OF_BANK_ACCOUNT, Argument::any(), Argument::any())->shouldBeCalledTimes(1); $this->hipay->uploadDocument(772, HiPay::DOCUMENT_LEGAL_IDENTITY_OF_REPRESENTATIVE, Argument::any(), Argument::any())->willThrow(new ClientErrorResponseException())->shouldBeCalledTimes(1); $this->hipay->uploadDocument(772, HiPay::DOCUMENT_LEGAL_PROOF_OF_REGISTRATION_NUMBER, Argument::any(), Argument::any())->shouldBeCalledTimes(1); // Save document in DB $this->documentManager->create(2006, Argument::type("DateTime"), "ALL_PROOF_OF_BANK_ACCOUNT", $vendor1)->willReturn($document1)->shouldBeCalledTimes(1); $this->documentManager->create(3011, Argument::type("DateTime"), "LEGAL_PROOF_OF_REGISTRATION_NUMBER", $vendor2)->willReturn($document2)->shouldBeCalledTimes(1); $this->documentManager->save(Argument::exact($document1))->shouldBeCalledTimes(1); $this->documentManager->save(Argument::exact($document2))->shouldBeCalledTimes(1); $this->vendorProcessor->transferFiles($shops, $tmpDir); $prophet->checkPredictions(); }
/** * @param $file * @param bool|true $withOperatorOperation */ public function setOrderTestProphecy($file, $withOperatorOperation = true) { $this->mirakl->getTransactions(Argument::type('integer'), Argument::is(null), Argument::is(null), Argument::is(null), Argument::is(null), Argument::is(null), Argument::type("string"), Argument::cetera())->will(function ($args) use($file) { $shopId = $args[0]; $paymentVoucher = $args[6]; $array = Mirakl::getOrderTransactions($shopId, $paymentVoucher, $file); return $array; })->shouldBeCalled(); $this->transactionValidator->isValid(Argument::type('array'))->willReturn(true)->shouldBeCalled(); $this->operationManager->create(Argument::type('float'), Argument::type('DateTime'), Argument::type('string'), Argument::type('int'))->will(function ($args) { list($amount, $cycleDate, $paymentVoucher, $miraklId) = $args; return new Operation($amount, $cycleDate, $paymentVoucher, $miraklId); })->shouldBeCalled(); if ($withOperatorOperation) { $this->operationManager->create(Argument::type('float'), Argument::type('DateTime'), Argument::type('string'), Argument::is(null))->will(function ($args) { list($amount, $cycleDate, $paymentVoucher, $miraklId) = $args; return new Operation($amount, $cycleDate, $paymentVoucher, $miraklId); })->shouldBeCalled(); } }