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.

100 lines
3.7 KiB

  1. # Copyright 2020 Coop IT Easy SCRL fs
  2. # Robin Keunen <robin@coopiteasy.be>
  3. # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
  4. from psycopg2 import IntegrityError
  5. import odoo
  6. from odoo.fields import Date
  7. from odoo.tests import TransactionCase
  8. class TestExternalIdMixin(TransactionCase):
  9. def test_res_partner_api_external_id(self):
  10. partner = self.env["res.partner"].create({"name": "Test Partner"})
  11. self.assertFalse(partner._api_external_id)
  12. self.assertFalse(partner.external_id_sequence_id)
  13. external_id = partner.get_api_external_id()
  14. self.assertTrue(bool(partner._api_external_id))
  15. self.assertTrue(bool(partner.external_id_sequence_id))
  16. self.assertEquals(external_id, partner.get_api_external_id())
  17. def test_subscription_request_api_external_id(self):
  18. share_type = self.browse_ref(
  19. "easy_my_coop.product_template_share_type_2_demo"
  20. ).product_variant_id
  21. sr = self.env["subscription.request"].create(
  22. {
  23. "name": "test create request",
  24. "email": "test@demo.net",
  25. "address": "schaerbeekstraat",
  26. "zip_code": "1111",
  27. "city": "Brussels",
  28. "country_id": self.ref("base.be"),
  29. "date": Date.today(),
  30. "source": "manual",
  31. "ordered_parts": 3,
  32. "share_product_id": share_type.id,
  33. "lang": "en_US",
  34. }
  35. )
  36. self.assertFalse(sr._api_external_id)
  37. self.assertFalse(sr.external_id_sequence_id)
  38. external_id = sr.get_api_external_id()
  39. self.assertTrue(bool(sr._api_external_id))
  40. self.assertTrue(bool(sr.external_id_sequence_id))
  41. self.assertEquals(external_id, sr.get_api_external_id())
  42. def test_account_journal_api_external_id(self):
  43. bank = self.env["res.partner.bank"].create(
  44. {
  45. "acc_number": "test",
  46. "partner_id": self.env.user.company_id.partner_id.id,
  47. }
  48. )
  49. journal = self.env["account.journal"].create(
  50. {
  51. "name": "test journal",
  52. "code": "123",
  53. "type": "bank",
  54. "company_id": self.env.ref("base.main_company").id,
  55. "bank_account_id": bank.id,
  56. }
  57. )
  58. self.assertFalse(journal._api_external_id)
  59. self.assertFalse(journal.external_id_sequence_id)
  60. external_id = journal.get_api_external_id()
  61. self.assertTrue(bool(journal._api_external_id))
  62. self.assertTrue(bool(journal.external_id_sequence_id))
  63. self.assertEquals(external_id, journal.get_api_external_id())
  64. def test_account_invoice_api_external_id(self):
  65. invoice = self.env["account.invoice"].create({"name": "create passes"})
  66. self.assertFalse(invoice._api_external_id)
  67. self.assertFalse(invoice.external_id_sequence_id)
  68. external_id = invoice.get_api_external_id()
  69. self.assertTrue(bool(invoice._api_external_id))
  70. self.assertTrue(bool(invoice.external_id_sequence_id))
  71. self.assertEquals(external_id, invoice.get_api_external_id())
  72. @odoo.tools.mute_logger("odoo.sql_db")
  73. def test_duplicate_api_external_id_raises(self):
  74. invoice_1 = self.env["account.invoice"].create(
  75. {"name": "create passes"}
  76. )
  77. external_id = invoice_1.get_api_external_id()
  78. self.assertTrue(bool(invoice_1._api_external_id))
  79. invoice_2 = self.env["account.invoice"].create(
  80. {"name": "create passes"}
  81. )
  82. with self.assertRaises(IntegrityError):
  83. invoice_2._api_external_id = external_id