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.

87 lines
3.2 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. # Copyright 2017 Creu Blanca <https://creublanca.es/>
  2. # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
  3. from odoo.tests import common
  4. from datetime import date
  5. from dateutil.relativedelta import relativedelta
  6. class TestSequence(common.TransactionCase):
  7. def setUp(self):
  8. super().setUp()
  9. self.date = date(2018, 3, 14)
  10. def get_sequence(self, method):
  11. return self.env['ir.sequence'].create({
  12. 'name': 'Test sequence',
  13. 'implementation': 'standard',
  14. 'use_date_range': True,
  15. 'range_reset': method,
  16. 'padding': '5'
  17. })
  18. def test_none(self):
  19. sequence = self.get_sequence(False)
  20. self.assertFalse(sequence.date_range_ids)
  21. self.assertEqual('00001', sequence.with_context(
  22. ir_sequence_date=self.date).next_by_id())
  23. range = sequence.date_range_ids
  24. self.assertTrue(range)
  25. self.assertEqual(date(2018, 1, 1), range.date_from)
  26. self.assertEqual(date(2018, 12, 31), range.date_to)
  27. def test_daily(self):
  28. sequence = self.get_sequence('daily')
  29. self.assertFalse(sequence.date_range_ids)
  30. self.assertEqual('00001', sequence.with_context(
  31. ir_sequence_date=self.date).next_by_id())
  32. range = sequence.date_range_ids
  33. self.assertTrue(range)
  34. self.assertEqual(self.date, range.date_from)
  35. self.assertEqual(self.date, range.date_to)
  36. def test_weekly(self):
  37. sequence = self.get_sequence('weekly')
  38. self.assertFalse(sequence.date_range_ids)
  39. self.assertEqual('00001', sequence.with_context(
  40. ir_sequence_date=self.date).next_by_id())
  41. range = sequence.date_range_ids
  42. self.assertTrue(range)
  43. self.assertEqual(date(2018, 3, 12), range.date_from)
  44. self.assertEqual(date(2018, 3, 18), range.date_to)
  45. def test_monthly(self):
  46. sequence = self.get_sequence('monthly')
  47. self.assertFalse(sequence.date_range_ids)
  48. self.assertEqual('00001', sequence.with_context(
  49. ir_sequence_date=self.date).next_by_id())
  50. range = sequence.date_range_ids
  51. self.assertTrue(range)
  52. self.assertEqual(date(2018, 3, 1), range.date_from)
  53. self.assertEqual(date(2018, 3, 31), range.date_to)
  54. def test_yearly(self):
  55. sequence = self.get_sequence('yearly')
  56. self.assertFalse(sequence.date_range_ids)
  57. self.assertEqual('00001', sequence.with_context(
  58. ir_sequence_date=self.date).next_by_id())
  59. range = sequence.date_range_ids
  60. self.assertTrue(range)
  61. self.assertEqual(date(2018, 1, 1), range.date_from)
  62. self.assertEqual(date(2018, 12, 31), range.date_to)
  63. def test_monthly_existing(self):
  64. sequence = self.get_sequence('monthly')
  65. self.env['ir.sequence.date_range'].create({
  66. 'date_from': date(2018, 3, 1),
  67. 'date_to': date(2018, 3, 10),
  68. 'sequence_id': sequence.id,
  69. })
  70. self.env['ir.sequence.date_range'].create({
  71. 'date_from': date(2018, 3, 20),
  72. 'date_to': date(2018, 3, 25),
  73. 'sequence_id': sequence.id,
  74. })
  75. self.assertEqual('00001', sequence.with_context(
  76. ir_sequence_date=self.date).next_by_id())