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.

98 lines
3.6 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 datetime import date, timedelta
  5. import odoo
  6. from odoo.fields import Date
  7. from odoo.addons.base_rest.controllers.main import _PseudoCollection
  8. from odoo.addons.component.core import WorkContext
  9. from .common import BaseEMCRestCase
  10. class TestSRController(BaseEMCRestCase):
  11. def setUp(self):
  12. super().setUp()
  13. collection = _PseudoCollection("emc.services", self.env)
  14. emc_services_env = WorkContext(
  15. model_name="rest.service.registration", collection=collection
  16. )
  17. self.service = emc_services_env.component(usage="subscription_request")
  18. def test_service(self):
  19. # kept as example
  20. # useful if you need to change data in database and check db type
  21. result = self.service.get(self.demo_request_1.id)
  22. self.assertEquals(self.demo_request_1_dict, result)
  23. all_sr = self.service.search()
  24. self.assertTrue(all_sr)
  25. sr_date = self.demo_request_1.date
  26. date_from = Date.to_string(sr_date - timedelta(days=1))
  27. date_to = Date.to_string(sr_date + timedelta(days=1))
  28. date_sr = self.service.search(date_from=date_from, date_to=date_to)
  29. self.assertTrue(date_sr)
  30. def test_route_get(self):
  31. id_ = self.demo_request_1.id
  32. route = "/api/subscription_request/%s" % id_
  33. content = self.http_get_content(route)
  34. self.assertEquals(self.demo_request_1_dict, content)
  35. @odoo.tools.mute_logger("odoo.addons.base_rest.http")
  36. def test_route_get_returns_not_found(self):
  37. route = "/api/subscription_request/%s" % "99999"
  38. response = self.http_get(route)
  39. self.assertEquals(response.status_code, 404)
  40. def test_route_get_string_returns_method_not_allowed(self):
  41. route = "/api/subscription_request/%s" % "abc"
  42. response = self.http_get(route)
  43. self.assertEquals(response.status_code, 405)
  44. def test_route_search_all(self):
  45. route = "/api/subscription_request"
  46. content = self.http_get_content(route)
  47. self.assertIn(self.demo_request_1_dict, content["rows"])
  48. def test_route_search_by_date(self):
  49. sr_date = self.demo_request_1.date
  50. date_from = Date.to_string(sr_date - timedelta(days=1))
  51. date_to = Date.to_string(sr_date + timedelta(days=1))
  52. route = "/api/subscription_request?date_from=%s" % date_from
  53. content = self.http_get_content(route)
  54. self.assertIn(self.demo_request_1_dict, content["rows"])
  55. route = "/api/subscription_request?date_to=%s" % date_to
  56. content = self.http_get_content(route)
  57. self.assertIn(self.demo_request_1_dict, content["rows"])
  58. route = "/api/subscription_request?date_from=%s&date_to=%s" % (
  59. date_from,
  60. date_to,
  61. )
  62. content = self.http_get_content(route)
  63. self.assertIn(self.demo_request_1_dict, content["rows"])
  64. route = "/api/subscription_request?date_from=%s" % "2300-01-01"
  65. content = self.http_get_content(route)
  66. self.assertEquals(content["count"], 0)
  67. route = "/api/subscription_request?date_to=%s" % "1900-01-01"
  68. content = self.http_get_content(route)
  69. self.assertEquals(content["count"], 0)
  70. @odoo.tools.mute_logger("odoo.addons.base_rest.http")
  71. def test_route_search_acd_date_returns_bad_request(self):
  72. route = "/api/subscription_request?date_from=%s" % "20200101"
  73. response = self.http_get(route)
  74. self.assertEquals(response.status_code, 400)
  75. # def test_route_create(self):