您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

datetime.js 3.1 KiB

feat: Optionally remove seconds from datetime (#8531) * fix: Add updated datepicker; fixed seconds formatting bug. Seconds between 0 and 9 were not zero-padded. * feat: Add framework for time format * feat: datetime server-side formatters. * tests: Added server-side datetime formatter tests * feat: Update client-side datetime formatters * tests: Add Cypress client-side formatting tests. * fix: JSON errors * fix: Update to not hard-code admin password * fix: Change to using bulk_update rather than the REST API * tests: Use Custom doctype for testing, not Standard * fix: Codacy style fixes * fix: Commonify update_datetime_picker in date.js, datetime.js, time.js Fix order of time_format in System Settings Restore get_user_fmt in utils/datetime.js * feat: Drastically reduce scale of Cypress testing (to make tests faster) Full testing is possible by setting 'fast_mode' to false in the spec file. * fix: Fix issues with datepicker/timepicker expansion * fix: typo * style: Various style fixes as requested by DeppSource: Python * fix: Timepicker not hiding on 'now' button. Force hiding on click. * style: Codacy style fixes. * fix: Use datepicker from node_modules * test: Refactor Datetime UI tests - cy.get_field - cy.set_value - cy.insert_doc with ignore_duplicate - Nominal datetime tests to cover most formats - Formatting with prettier * test: Datetime UI tests; wait for cur_frm.doc.datetime to update * tests: Add whitespace to typed input - Clear input only for Time field * test: Wait timeout 200 * test: Fix form test Co-authored-by: Faris Ansari <netchampfaris@users.noreply.github.com>
5 年前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import datetime_doctype from '../fixtures/datetime_doctype';
  2. const doctype_name = datetime_doctype.name;
  3. context('Control Date, Time and DateTime', () => {
  4. before(() => {
  5. cy.login();
  6. cy.visit('/desk');
  7. cy.insert_doc('DocType', datetime_doctype, true);
  8. });
  9. describe('Date formats', () => {
  10. let date_formats = [
  11. {
  12. date_format: 'dd-mm-yyyy',
  13. part: 2,
  14. length: 4,
  15. separator: '-'
  16. },
  17. {
  18. date_format: 'mm/dd/yyyy',
  19. part: 0,
  20. length: 2,
  21. separator: '/'
  22. }
  23. ];
  24. date_formats.forEach(d => {
  25. it('test date format ' + d.date_format, () => {
  26. cy.set_value('System Settings', 'System Settings', {
  27. date_format: d.date_format
  28. });
  29. cy.window()
  30. .its('frappe')
  31. .then(frappe => {
  32. // update sys_defaults value to avoid a reload
  33. frappe.sys_defaults.date_format = d.date_format;
  34. });
  35. cy.new_form(doctype_name);
  36. cy.get('.form-control[data-fieldname=date]').focus();
  37. cy.get('.datepickers-container .datepicker.active')
  38. .should('be.visible');
  39. cy.get(
  40. '.datepickers-container .datepicker.active .datepicker--cell-day.-current-'
  41. ).click();
  42. cy.window()
  43. .its('cur_frm')
  44. .then(cur_frm => {
  45. let formatted_value = cur_frm.get_field('date').input.value;
  46. let parts = formatted_value.split(d.separator);
  47. expect(parts[d.part].length).to.equal(d.length);
  48. });
  49. });
  50. });
  51. });
  52. describe('Time formats', () => {
  53. let time_formats = [
  54. {
  55. time_format: 'HH:mm:ss',
  56. value: ' 11:00:12',
  57. match_value: '11:00:12'
  58. },
  59. {
  60. time_format: 'HH:mm',
  61. value: ' 11:00:12',
  62. match_value: '11:00'
  63. }
  64. ];
  65. time_formats.forEach(d => {
  66. it('test time format ' + d.time_format, () => {
  67. cy.set_value('System Settings', 'System Settings', {
  68. time_format: d.time_format
  69. });
  70. cy.window()
  71. .its('frappe')
  72. .then(frappe => {
  73. frappe.sys_defaults.time_format = d.time_format;
  74. });
  75. cy.new_form(doctype_name);
  76. cy.fill_field('time', d.value, 'Time').blur();
  77. cy.get_field('time').should('have.value', d.match_value);
  78. });
  79. });
  80. });
  81. describe('DateTime formats', () => {
  82. let datetime_formats = [
  83. {
  84. date_format: 'dd.mm.yyyy',
  85. time_format: 'HH:mm:ss',
  86. value: ' 02.12.2019 11:00:12',
  87. doc_value: '2019-12-02 11:00:12',
  88. input_value: '02.12.2019 11:00:12'
  89. },
  90. {
  91. date_format: 'mm-dd-yyyy',
  92. time_format: 'HH:mm',
  93. value: ' 12-02-2019 11:00:00',
  94. doc_value: '2019-12-02 11:00:00',
  95. input_value: '12-02-2019 11:00'
  96. }
  97. ];
  98. datetime_formats.forEach(d => {
  99. it(`test datetime format ${d.date_format} ${d.time_format}`, () => {
  100. cy.set_value('System Settings', 'System Settings', {
  101. date_format: d.date_format,
  102. time_format: d.time_format
  103. });
  104. cy.window()
  105. .its('frappe')
  106. .then(frappe => {
  107. frappe.sys_defaults.date_format = d.date_format;
  108. frappe.sys_defaults.time_format = d.time_format;
  109. });
  110. cy.new_form(doctype_name);
  111. cy.fill_field('datetime', d.value, 'Datetime').blur();
  112. cy.get_field('datetime').should('have.value', d.input_value);
  113. cy.window()
  114. .its('cur_frm.doc.datetime')
  115. .should('eq', d.doc_value);
  116. });
  117. });
  118. });
  119. });