public function testCreateFromQuote() { $currency = new Currency('USD'); $this->dispatcher->shouldReceive('dispatch')->withAnyArgs(); $client = new Client(); $client->setName('Test Client'); $client->setWebsite('http://example.com'); $client->setCreated(new \DateTime('NOW')); $tax = new Tax(); $tax->setName('VAT'); $tax->setRate('14'); $tax->setType(Tax::TYPE_INCLUSIVE); $item = new Item(); $item->setTax($tax); $item->setDescription('Item Description'); $item->setCreated(new \DateTime('now')); $item->setPrice(new Money(120, $currency)); $item->setQty(10); $item->setTotal(new Money(12 * 10, $currency)); $quote = new Quote(); $quote->setBaseTotal(new Money(123, $currency)); $quote->setDiscount(new Money(12, $currency)); $quote->setNotes('Notes'); $quote->setTax(new Money(432, $currency)); $quote->setTerms('Terms'); $quote->setTotal(new Money(987, $currency)); $quote->setClient($client); $quote->addItem($item); $invoice = $this->manager->createFromQuote($quote); $this->assertSame($quote->getTotal(), $invoice->getTotal()); $this->assertSame($quote->getBaseTotal(), $invoice->getBaseTotal()); $this->assertSame($quote->getDiscount(), $invoice->getDiscount()); $this->assertSame($quote->getNotes(), $invoice->getNotes()); $this->assertSame($quote->getTerms(), $invoice->getTerms()); $this->assertSame($quote->getTax(), $invoice->getTax()); $this->assertSame($client, $invoice->getClient()); $this->assertSame('new', $invoice->getStatus()); $this->assertNotSame($quote->getUuid(), $invoice->getUuid()); $this->assertNull($invoice->getId()); $this->assertCount(1, $invoice->getItems()); /** @var \CSBill\InvoiceBundle\Entity\item[] $invoiceItem */ $invoiceItem = $invoice->getItems(); $this->assertInstanceOf('CSBill\\InvoiceBundle\\Entity\\item', $invoiceItem[0]); $this->assertSame($item->getTax(), $invoiceItem[0]->getTax()); $this->assertSame($item->getDescription(), $invoiceItem[0]->getDescription()); $this->assertInstanceOf('DateTime', $invoiceItem[0]->getCreated()); $this->assertSame($item->getPrice(), $invoiceItem[0]->getPrice()); $this->assertSame($item->getQty(), $invoiceItem[0]->getQty()); }