* 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>
128 lines
3.1 KiB
JavaScript
128 lines
3.1 KiB
JavaScript
import datetime_doctype from '../fixtures/datetime_doctype';
|
|
const doctype_name = datetime_doctype.name;
|
|
|
|
context('Control Date, Time and DateTime', () => {
|
|
before(() => {
|
|
cy.login();
|
|
cy.visit('/desk');
|
|
cy.insert_doc('DocType', datetime_doctype, true);
|
|
});
|
|
|
|
describe('Date formats', () => {
|
|
let date_formats = [
|
|
{
|
|
date_format: 'dd-mm-yyyy',
|
|
part: 2,
|
|
length: 4,
|
|
separator: '-'
|
|
},
|
|
{
|
|
date_format: 'mm/dd/yyyy',
|
|
part: 0,
|
|
length: 2,
|
|
separator: '/'
|
|
}
|
|
];
|
|
|
|
date_formats.forEach(d => {
|
|
it('test date format ' + d.date_format, () => {
|
|
cy.set_value('System Settings', 'System Settings', {
|
|
date_format: d.date_format
|
|
});
|
|
cy.window()
|
|
.its('frappe')
|
|
.then(frappe => {
|
|
// update sys_defaults value to avoid a reload
|
|
frappe.sys_defaults.date_format = d.date_format;
|
|
});
|
|
|
|
cy.new_form(doctype_name);
|
|
cy.get('.form-control[data-fieldname=date]').focus();
|
|
cy.get('.datepickers-container .datepicker.active')
|
|
.should('be.visible');
|
|
cy.get(
|
|
'.datepickers-container .datepicker.active .datepicker--cell-day.-current-'
|
|
).click();
|
|
|
|
cy.window()
|
|
.its('cur_frm')
|
|
.then(cur_frm => {
|
|
let formatted_value = cur_frm.get_field('date').input.value;
|
|
let parts = formatted_value.split(d.separator);
|
|
expect(parts[d.part].length).to.equal(d.length);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('Time formats', () => {
|
|
let time_formats = [
|
|
{
|
|
time_format: 'HH:mm:ss',
|
|
value: ' 11:00:12',
|
|
match_value: '11:00:12'
|
|
},
|
|
{
|
|
time_format: 'HH:mm',
|
|
value: ' 11:00:12',
|
|
match_value: '11:00'
|
|
}
|
|
];
|
|
|
|
time_formats.forEach(d => {
|
|
it('test time format ' + d.time_format, () => {
|
|
cy.set_value('System Settings', 'System Settings', {
|
|
time_format: d.time_format
|
|
});
|
|
cy.window()
|
|
.its('frappe')
|
|
.then(frappe => {
|
|
frappe.sys_defaults.time_format = d.time_format;
|
|
});
|
|
cy.new_form(doctype_name);
|
|
cy.fill_field('time', d.value, 'Time').blur();
|
|
cy.get_field('time').should('have.value', d.match_value);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('DateTime formats', () => {
|
|
let datetime_formats = [
|
|
{
|
|
date_format: 'dd.mm.yyyy',
|
|
time_format: 'HH:mm:ss',
|
|
value: ' 02.12.2019 11:00:12',
|
|
doc_value: '2019-12-02 11:00:12',
|
|
input_value: '02.12.2019 11:00:12'
|
|
},
|
|
{
|
|
date_format: 'mm-dd-yyyy',
|
|
time_format: 'HH:mm',
|
|
value: ' 12-02-2019 11:00:00',
|
|
doc_value: '2019-12-02 11:00:00',
|
|
input_value: '12-02-2019 11:00'
|
|
}
|
|
];
|
|
datetime_formats.forEach(d => {
|
|
it(`test datetime format ${d.date_format} ${d.time_format}`, () => {
|
|
cy.set_value('System Settings', 'System Settings', {
|
|
date_format: d.date_format,
|
|
time_format: d.time_format
|
|
});
|
|
cy.window()
|
|
.its('frappe')
|
|
.then(frappe => {
|
|
frappe.sys_defaults.date_format = d.date_format;
|
|
frappe.sys_defaults.time_format = d.time_format;
|
|
});
|
|
cy.new_form(doctype_name);
|
|
cy.fill_field('datetime', d.value, 'Datetime').blur();
|
|
cy.get_field('datetime').should('have.value', d.input_value);
|
|
|
|
cy.window()
|
|
.its('cur_frm.doc.datetime')
|
|
.should('eq', d.doc_value);
|
|
});
|
|
});
|
|
});
|
|
});
|