/** * Test saveAction controller action - Update an existing customer * * @depends testAddCustomerPaymentDataWithDebit */ public function testUpdateCustomerPaymentDataWithSepa($dummyDataId) { $dummyData = $this->repository->find($dummyDataId); $sepa = $this->manager->getRepository('Shopware\\Models\\Payment\\Payment')->findOneBy(array('name' => 'sepa')); $debit = $this->manager->getRepository('Shopware\\Models\\Payment\\Payment')->findOneBy(array('name' => 'debit')); $this->assertEquals($debit->getId(), $dummyData->getPaymentId()); $this->assertCount(1, $dummyData->getPaymentData()->toArray()); $params = array('id' => $dummyData->getId(), 'paymentId' => $sepa->getId(), 'paymentData' => array(array('accountHolder' => '', 'accountNumber' => '', 'bankCode' => '', 'bankName' => 'European bank name', 'bic' => '123bic312', 'iban' => '456iban654', 'useBillingData' => true))); $this->Request()->setMethod('POST')->setPost($params); $this->dispatch('/backend/Customer/save'); $jsonBody = $this->View()->getAssign(); $this->assertTrue($this->View()->success); $this->assertEquals($sepa->getId(), $jsonBody['data']['paymentId']); $this->manager->refresh($dummyData); $this->assertEquals($sepa->getId(), $dummyData->getPaymentId()); $paymentDataArray = $dummyData->getPaymentData()->toArray(); $this->assertCount(2, $paymentDataArray); // Old debit payment data is still there, it's just not used currently /** @var \Shopware\Models\Customer\PaymentData $paymentData */ $paymentData = array_shift($paymentDataArray); $this->assertInstanceOf('\\Shopware\\Models\\Customer\\PaymentData', $paymentData); $this->assertEquals('Account Holder Name', $paymentData->getAccountHolder()); $this->assertEquals('1234567890', $paymentData->getAccountNumber()); $this->assertEquals('2345678901', $paymentData->getBankCode()); $this->assertEquals('Bank name', $paymentData->getBankName()); $this->assertEmpty($paymentData->getBic()); $this->assertEmpty($paymentData->getIban()); $this->assertFalse($paymentData->getUseBillingData()); // New SEPA data /** @var \Shopware\Models\Customer\PaymentData $paymentData */ $paymentData = array_shift($paymentDataArray); $this->assertInstanceOf('\\Shopware\\Models\\Customer\\PaymentData', $paymentData); $this->assertEmpty($paymentData->getAccountHolder()); $this->assertEmpty($paymentData->getAccountNumber()); $this->assertEmpty($paymentData->getBankCode()); $this->assertEquals('European bank name', $paymentData->getBankName()); $this->assertEquals('123bic312', $paymentData->getBic()); $this->assertEquals('456iban654', $paymentData->getIban()); $this->assertTrue($paymentData->getUseBillingData()); $this->manager->remove($dummyData); $this->manager->flush(); }