選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 
 

120 行
4.0 KiB

  1. # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
  2. # MIT License. See license.txt
  3. from __future__ import unicode_literals
  4. import unittest
  5. import frappe
  6. from frappe.utils import now_datetime
  7. from frappe.model.naming import getseries
  8. from frappe.model.naming import append_number_if_name_exists, revert_series_if_last
  9. class TestNaming(unittest.TestCase):
  10. def tearDown(self):
  11. # Reset ToDo autoname to hash
  12. todo_doctype = frappe.get_doc('DocType', 'ToDo')
  13. todo_doctype.autoname = 'hash'
  14. todo_doctype.save()
  15. def test_append_number_if_name_exists(self):
  16. '''
  17. Append number to name based on existing values
  18. if Bottle exists
  19. Bottle -> Bottle-1
  20. if Bottle-1 exists
  21. Bottle -> Bottle-2
  22. '''
  23. note = frappe.new_doc('Note')
  24. note.title = 'Test'
  25. note.insert()
  26. title2 = append_number_if_name_exists('Note', 'Test')
  27. self.assertEqual(title2, 'Test-1')
  28. title2 = append_number_if_name_exists('Note', 'Test', 'title', '_')
  29. self.assertEqual(title2, 'Test_1')
  30. def test_format_autoname(self):
  31. '''
  32. Test if braced params are replaced in format autoname
  33. '''
  34. doctype = 'ToDo'
  35. todo_doctype = frappe.get_doc('DocType', doctype)
  36. todo_doctype.autoname = 'format:TODO-{MM}-{status}-{##}'
  37. todo_doctype.save()
  38. description = 'Format'
  39. todo = frappe.new_doc(doctype)
  40. todo.description = description
  41. todo.insert()
  42. series = getseries('', 2)
  43. series = str(int(series)-1)
  44. if len(series) < 2:
  45. series = '0' + series
  46. self.assertEqual(todo.name, 'TODO-{month}-{status}-{series}'.format(
  47. month=now_datetime().strftime('%m'), status=todo.status, series=series))
  48. def test_revert_series(self):
  49. from datetime import datetime
  50. year = datetime.now().year
  51. series = 'TEST-{}-'.format(year)
  52. key = 'TEST-.YYYY.-'
  53. name = 'TEST-{}-00001'.format(year)
  54. frappe.db.sql("""INSERT INTO `tabSeries` (name, current) values (%s, 1)""", (series,))
  55. revert_series_if_last(key, name)
  56. current_index = frappe.db.sql("""SELECT current from `tabSeries` where name = %s""", series, as_dict=True)[0]
  57. self.assertEqual(current_index.get('current'), 0)
  58. frappe.db.sql("""delete from `tabSeries` where name = %s""", series)
  59. series = 'TEST-{}-'.format(year)
  60. key = 'TEST-.YYYY.-.#####'
  61. name = 'TEST-{}-00002'.format(year)
  62. frappe.db.sql("""INSERT INTO `tabSeries` (name, current) values (%s, 2)""", (series,))
  63. revert_series_if_last(key, name)
  64. current_index = frappe.db.sql("""SELECT current from `tabSeries` where name = %s""", series, as_dict=True)[0]
  65. self.assertEqual(current_index.get('current'), 1)
  66. frappe.db.sql("""delete from `tabSeries` where name = %s""", series)
  67. series = 'TEST-'
  68. key = 'TEST-'
  69. name = 'TEST-00003'
  70. frappe.db.sql("DELETE FROM `tabSeries` WHERE `name`=%s", series)
  71. frappe.db.sql("""INSERT INTO `tabSeries` (name, current) values (%s, 3)""", (series,))
  72. revert_series_if_last(key, name)
  73. current_index = frappe.db.sql("""SELECT current from `tabSeries` where name = %s""", series, as_dict=True)[0]
  74. self.assertEqual(current_index.get('current'), 2)
  75. frappe.db.sql("""delete from `tabSeries` where name = %s""", series)
  76. series = 'TEST1-'
  77. key = 'TEST1-.#####.-2021-22'
  78. name = 'TEST1-00003-2021-22'
  79. frappe.db.sql("DELETE FROM `tabSeries` WHERE `name`=%s", series)
  80. frappe.db.sql("""INSERT INTO `tabSeries` (name, current) values (%s, 3)""", (series,))
  81. revert_series_if_last(key, name)
  82. current_index = frappe.db.sql("""SELECT current from `tabSeries` where name = %s""", series, as_dict=True)[0]
  83. self.assertEqual(current_index.get('current'), 2)
  84. frappe.db.sql("""delete from `tabSeries` where name = %s""", series)
  85. series = ''
  86. key = '.#####.-2021-22'
  87. name = '00003-2021-22'
  88. frappe.db.sql("DELETE FROM `tabSeries` WHERE `name`=%s", series)
  89. frappe.db.sql("""INSERT INTO `tabSeries` (name, current) values (%s, 3)""", (series,))
  90. revert_series_if_last(key, name)
  91. current_index = frappe.db.sql("""SELECT current from `tabSeries` where name = %s""", series, as_dict=True)[0]
  92. self.assertEqual(current_index.get('current'), 2)
  93. frappe.db.sql("""delete from `tabSeries` where name = %s""", series)