You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.5 KiB
101 lines
3.5 KiB
# Copyright 2020 Coop IT Easy SCRL fs
|
|
# Robin Keunen <robin@coopiteasy.be>
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
|
|
|
from odoo.fields import Date
|
|
|
|
from odoo.addons.base_rest.controllers.main import _PseudoCollection
|
|
from odoo.addons.component.core import WorkContext
|
|
|
|
from .common import BaseEMCRestCase
|
|
|
|
|
|
class TestAccountInvoiceController(BaseEMCRestCase):
|
|
@classmethod
|
|
def setUpClass(cls, *args, **kwargs):
|
|
super().setUpClass(*args, **kwargs)
|
|
|
|
def setUp(self):
|
|
res = super().setUp()
|
|
collection = _PseudoCollection("emc.services", self.env)
|
|
emc_services_env = WorkContext(
|
|
model_name="rest.service.registration", collection=collection
|
|
)
|
|
self.ai_service = emc_services_env.component(usage="invoice")
|
|
|
|
self.share_type_A = self.browse_ref(
|
|
"easy_my_coop.product_template_share_type_1_demo"
|
|
)
|
|
self._capital_release_create()
|
|
|
|
today = Date.to_string(Date.today())
|
|
self.demo_invoice_dict = {
|
|
"id": 1,
|
|
"name": "Capital Release Example",
|
|
"partner": {"id": 1, "name": "Catherine des Champs"},
|
|
"account": {"id": 1, "name": "Cooperators"},
|
|
"journal": {"id": 1, "name": "Subscription Journal"},
|
|
"subscription_request": {},
|
|
"state": "open",
|
|
"date": today,
|
|
"date_invoice": today,
|
|
"date_due": today,
|
|
"type": "out_invoice",
|
|
"invoice_lines": [
|
|
{
|
|
"name": "Share Type A",
|
|
"product": {"id": 1, "name": "Part A - Founder"},
|
|
"price_unit": 100.0,
|
|
"quantity": 2.0,
|
|
"account": {"id": 2, "name": "Equity"},
|
|
}
|
|
],
|
|
}
|
|
return res
|
|
|
|
def _capital_release_create(self):
|
|
self.coop_candidate = self.env["res.partner"].create(
|
|
{
|
|
"name": "Catherine des Champs",
|
|
"company_id": self.company.id,
|
|
"property_account_receivable_id": self.receivable.id,
|
|
"property_account_payable_id": self.payable.id,
|
|
}
|
|
)
|
|
|
|
capital_release_line = [
|
|
(
|
|
0,
|
|
False,
|
|
{
|
|
"name": "Share Type A",
|
|
"account_id": self.equity_account.id,
|
|
"quantity": 2.0,
|
|
"price_unit": 100.0,
|
|
"product_id": self.share_type_A.product_variant_id.id,
|
|
},
|
|
)
|
|
]
|
|
|
|
self.capital_release = self.env["account.invoice"].create(
|
|
{
|
|
"name": "Capital Release Example",
|
|
"partner_id": self.coop_candidate.id,
|
|
"type": "out_invoice",
|
|
"invoice_line_ids": capital_release_line,
|
|
"account_id": self.cooperator_account.id,
|
|
"journal_id": self.subscription_journal.id,
|
|
}
|
|
)
|
|
self.capital_release.action_invoice_open()
|
|
|
|
def test_service_get(self):
|
|
external_id = self.capital_release.get_api_external_id()
|
|
result = self.ai_service.get(external_id)
|
|
self.assertEquals(self.demo_invoice_dict, result)
|
|
|
|
def test_route_get(self):
|
|
external_id = self.capital_release.get_api_external_id()
|
|
route = "/api/invoice/%s" % external_id
|
|
content = self.http_get_content(route)
|
|
self.assertEquals(self.demo_invoice_dict, content)
|