seitime-frappe/cypress/integration/control_float.js
2023-11-07 18:07:06 +01:00

108 lines
2.3 KiB
JavaScript

context("Control Float", () => {
before(() => {
cy.login();
cy.visit("/app/website");
});
function get_dialog_with_float() {
return cy.dialog({
title: "Float Check",
fields: [
{
fieldname: "float_number",
fieldtype: "Float",
Label: "Float",
},
],
});
}
it("check value changes", () => {
get_dialog_with_float().as("dialog");
let data = get_data();
data.forEach((x) => {
cy.window()
.its("frappe")
.then((frappe) => {
frappe.boot.sysdefaults.number_format = x.number_format;
});
x.values.forEach((d) => {
cy.get_field("float_number", "Float").clear();
cy.wait(200);
cy.fill_field("float_number", d.input, "Float").blur();
cy.get_field("float_number", "Float").should("have.value", d.blur_expected);
cy.wait(100);
cy.get_field("float_number", "Float").focus();
cy.wait(100);
cy.get_field("float_number", "Float").blur();
cy.wait(100);
cy.get_field("float_number", "Float").focus();
cy.wait(100);
cy.get_field("float_number", "Float").should("have.value", d.focus_expected);
});
});
});
function get_data() {
return [
{
number_format: "#.###,##",
values: [
{
input: "364.87,334",
blur_expected: "36.487,334",
focus_expected: "36.487,334",
},
{
input: "36487,335",
blur_expected: "36.487,335",
focus_expected: "36.487,335",
},
{
input: "2*(2+47)+1,5+1",
blur_expected: "100,500",
focus_expected: "100,500",
},
],
},
{
number_format: "#,###.##",
values: [
{
input: "464,87.334",
blur_expected: "46,487.334",
focus_expected: "46,487.334",
},
{
input: "46487.335",
blur_expected: "46,487.335",
focus_expected: "46,487.335",
},
{
input: "3*(2+47)+1.5+1",
blur_expected: "149.500",
focus_expected: "149.500",
},
],
},
{
// '.' is the parseFloat's decimal separator
number_format: "#.###,##",
values: [
{
input: "12.345",
blur_expected: "12.345,000",
focus_expected: "12.345,000",
},
{
// parseFloat would reduce 12,340 to 12,34 if this string was ever to be parsed
input: "12.340",
blur_expected: "12.340,000",
focus_expected: "12.340,000",
},
],
},
];
}
});