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.
 
 
 
 
 
 

129 line
3.1 KiB

  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. });