|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- context("Control Link", () => {
- before(() => {
- cy.login();
- cy.visit("/app/website");
- });
-
- beforeEach(() => {
- cy.visit("/app/website");
- cy.create_records({
- doctype: "ToDo",
- description: "this is a test todo for link",
- }).as("todos");
- });
-
- function get_dialog_with_link() {
- return cy.dialog({
- title: "Link",
- fields: [
- {
- label: "Select ToDo",
- fieldname: "link",
- fieldtype: "Link",
- options: "ToDo",
- },
- ],
- });
- }
-
- function get_dialog_with_gender_link() {
- return cy.dialog({
- title: "Link",
- fields: [
- {
- label: "Select Gender",
- fieldname: "link",
- fieldtype: "Link",
- options: "Gender",
- },
- ],
- });
- }
-
- it("should set the valid value", () => {
- get_dialog_with_link().as("dialog");
-
- cy.insert_doc(
- "Property Setter",
- {
- doctype: "Property Setter",
- doc_type: "ToDo",
- property: "show_title_field_in_link",
- property_type: "Check",
- doctype_or_field: "DocType",
- value: "0",
- },
- true
- );
-
- cy.intercept("POST", "/api/method/xhiveframework.desk.search.search_link").as("search_link");
-
- cy.get(".xhiveframework-control[data-fieldname=link] input").focus().as("input");
- cy.wait("@search_link");
- cy.get("@input").type("todo for link", { delay: 200 });
- cy.wait("@search_link");
- cy.get(".xhiveframework-control[data-fieldname=link]").findByRole("listbox").should("be.visible");
- cy.get(".xhiveframework-control[data-fieldname=link] input").type("{enter}", { delay: 100 });
- cy.get(".xhiveframework-control[data-fieldname=link] input").blur();
- cy.get("@dialog").then((dialog) => {
- cy.get("@todos").then((todos) => {
- let value = dialog.get_value("link");
- expect(value).to.eq(todos[0]);
- });
- });
- });
-
- it("should unset invalid value", () => {
- get_dialog_with_link().as("dialog");
-
- cy.intercept("POST", "/api/method/xhiveframework.client.validate_link").as("validate_link");
-
- cy.get(".xhiveframework-control[data-fieldname=link] input")
- .type("invalid value", { delay: 100 })
- .blur();
- cy.wait("@validate_link");
- cy.get(".xhiveframework-control[data-fieldname=link] input").should("have.value", "");
- });
-
- it("should be possible set empty value explicitly", () => {
- get_dialog_with_link().as("dialog");
-
- cy.intercept("POST", "/api/method/xhiveframework.client.validate_link").as("validate_link");
-
- cy.get(".xhiveframework-control[data-fieldname=link] input").type(" ", { delay: 100 }).blur();
- cy.wait("@validate_link");
- cy.get(".xhiveframework-control[data-fieldname=link] input").should("have.value", "");
- cy.window()
- .its("cur_dialog")
- .then((dialog) => {
- expect(dialog.get_value("link")).to.equal("");
- });
- });
-
- it("should route to form on arrow click", () => {
- get_dialog_with_link().as("dialog");
-
- cy.intercept("POST", "/api/method/xhiveframework.client.validate_link").as("validate_link");
- cy.intercept("POST", "/api/method/xhiveframework.desk.search.search_link").as("search_link");
-
- cy.get("@todos").then((todos) => {
- cy.get(".xhiveframework-control[data-fieldname=link] input").as("input");
- cy.get("@input").focus();
- cy.wait("@search_link");
- cy.get("@input").type(todos[0]).blur();
- cy.wait("@validate_link");
- cy.get("@input").focus();
- cy.wait(500); // wait for arrow to show
- cy.get(".xhiveframework-control[data-fieldname=link] .btn-open").should("be.visible").click();
- cy.location("pathname").should("eq", `/app/todo/${todos[0]}`);
- });
- });
-
- it("show title field in link", () => {
- cy.insert_doc(
- "Property Setter",
- {
- doctype: "Property Setter",
- doc_type: "ToDo",
- property: "show_title_field_in_link",
- property_type: "Check",
- doctype_or_field: "DocType",
- value: "1",
- },
- true
- );
-
- cy.reload();
-
- get_dialog_with_link().as("dialog");
- cy.window()
- .its("xhiveframework")
- .then((xhiveframework) => {
- if (!xhiveframework.boot) {
- xhiveframework.boot = {
- link_title_doctypes: ["ToDo"],
- };
- } else {
- xhiveframework.boot.link_title_doctypes = ["ToDo"];
- }
- });
-
- cy.intercept("POST", "/api/method/xhiveframework.desk.search.search_link").as("search_link");
-
- cy.get(".xhiveframework-control[data-fieldname=link] input").focus().as("input");
- cy.wait("@search_link");
- cy.get("@input").type("todo for link", { delay: 200 });
- cy.wait("@search_link");
- cy.get(".xhiveframework-control[data-fieldname=link] ul").should("be.visible");
- cy.get(".xhiveframework-control[data-fieldname=link] input").type("{enter}", { delay: 100 });
- cy.get(".xhiveframework-control[data-fieldname=link] input").blur();
- cy.get("@dialog").then((dialog) => {
- cy.get("@todos").then((todos) => {
- let field = dialog.get_field("link");
- let value = field.get_value();
- let label = field.get_label_value();
-
- expect(value).to.eq(todos[0]);
- expect(label).to.eq("this is a test todo for link");
- });
- });
- });
-
- it("should update dependant fields (via fetch_from)", () => {
- cy.get("@todos").then((todos) => {
- cy.visit(`/app/todo/${todos[0]}`);
- cy.intercept("POST", "/api/method/xhiveframework.desk.search.search_link").as("search_link");
- cy.intercept("POST", "/api/method/xhiveframework.client.validate_link").as("validate_link");
-
- cy.get(".xhiveframework-control[data-fieldname=assigned_by] input").focus().as("input");
- cy.get("@input").clear().type(cy.config("testUser"), { delay: 300 }).blur();
- cy.wait("@validate_link");
- cy.get(".xhiveframework-control[data-fieldname=assigned_by_full_name] .control-value").should(
- "contain",
- "XhiveFramework"
- );
-
- cy.window().its("cur_frm.doc.assigned_by").should("eq", cy.config("testUser"));
-
- // invalid input
- cy.get("@input").clear().type("invalid input", { delay: 100 }).blur();
- cy.get(".xhiveframework-control[data-fieldname=assigned_by_full_name] .control-value").should(
- "contain",
- ""
- );
-
- cy.window().its("cur_frm.doc.assigned_by").should("eq", null);
-
- // set valid value again
- cy.get("@input").clear().focus();
- cy.wait("@search_link");
- cy.get("@input").type(cy.config("testUser"), { delay: 100 }).blur();
- cy.wait("@validate_link");
-
- cy.window().its("cur_frm.doc.assigned_by").should("eq", cy.config("testUser"));
-
- // clear input
- cy.get("@input").clear().blur();
- cy.get(".xhiveframework-control[data-fieldname=assigned_by_full_name] .control-value").should(
- "contain",
- ""
- );
-
- cy.window().its("cur_frm.doc.assigned_by").should("eq", "");
- });
- });
-
- it("should set default values", () => {
- cy.insert_doc(
- "Property Setter",
- {
- doctype_or_field: "DocField",
- doc_type: "ToDo",
- field_name: "assigned_by",
- property: "default",
- property_type: "Text",
- value: "Administrator",
- },
- true
- );
- cy.reload();
- cy.new_form("ToDo");
- cy.fill_field("description", "new", "Text Editor").wait(200);
- cy.save();
- cy.get(".xhiveframework-control[data-fieldname=assigned_by_full_name] .control-value").should(
- "contain",
- "Administrator"
- );
- // if user clears default value explicitly, system should not reset default again
- cy.get_field("assigned_by").clear().blur();
- cy.save();
- cy.get_field("assigned_by").should("have.value", "");
- cy.get(".xhiveframework-control[data-fieldname=assigned_by_full_name] .control-value").should(
- "contain",
- ""
- );
- });
-
- it("show translated text for Gender link field with language de with input in de", () => {
- cy.call("xhiveframework.tests.ui_test_helpers.insert_translations").then(() => {
- cy.window()
- .its("xhiveframework")
- .then((xhiveframework) => {
- cy.set_value("User", xhiveframework.user.name, { language: "de" });
- });
-
- cy.clear_cache();
- cy.wait(500);
-
- get_dialog_with_gender_link().as("dialog");
- cy.intercept("POST", "/api/method/xhiveframework.desk.search.search_link").as("search_link");
-
- cy.get(".xhiveframework-control[data-fieldname=link] input").focus().as("input");
- cy.wait("@search_link");
- cy.get("@input").type("Sonstiges", { delay: 200 });
- cy.wait("@search_link");
- cy.get(".xhiveframework-control[data-fieldname=link] ul").should("be.visible");
- cy.get(".xhiveframework-control[data-fieldname=link] input").type("{enter}", { delay: 100 });
- cy.get(".xhiveframework-control[data-fieldname=link] input").blur();
- cy.get("@dialog").then((dialog) => {
- let field = dialog.get_field("link");
- let value = field.get_value();
- let label = field.get_label_value();
-
- expect(value).to.eq("Other");
- expect(label).to.eq("Sonstiges");
- });
- });
- });
-
- it("show text for Gender link field with language en", () => {
- cy.window()
- .its("xhiveframework")
- .then((xhiveframework) => {
- cy.set_value("User", xhiveframework.user.name, { language: "en" });
- });
-
- cy.clear_cache();
- cy.wait(500);
-
- get_dialog_with_gender_link().as("dialog");
- cy.intercept("POST", "/api/method/xhiveframework.desk.search.search_link").as("search_link");
-
- cy.get(".xhiveframework-control[data-fieldname=link] input").focus().as("input");
- cy.wait("@search_link");
- cy.get("@input").type("Non-Conforming", { delay: 200 });
- cy.wait("@search_link");
- cy.get(".xhiveframework-control[data-fieldname=link] ul").should("be.visible");
- cy.get(".xhiveframework-control[data-fieldname=link] input").type("{enter}", { delay: 100 });
- cy.get(".xhiveframework-control[data-fieldname=link] input").blur();
- cy.get("@dialog").then((dialog) => {
- let field = dialog.get_field("link");
- let value = field.get_value();
- let label = field.get_label_value();
-
- expect(value).to.eq("Non-Conforming");
- expect(label).to.eq("Non-Conforming");
- });
- });
-
- it("show custom link option", () => {
- cy.window()
- .its("xhiveframework")
- .then((xhiveframework) => {
- xhiveframework.ui.form.ControlLink.link_options = (link) => {
- return [
- {
- html:
- "<span class='text-primary custom-link-option'>" +
- "<i class='fa fa-search' style='margin-right: 5px;'></i> " +
- "Custom Link Option" +
- "</span>",
- label: "Custom Link Option",
- value: "custom__link_option",
- action: () => {},
- },
- ];
- };
-
- get_dialog_with_link().as("dialog");
- cy.get(".xhiveframework-control[data-fieldname=link] input").focus().as("input");
- cy.get("@input").type("custom", { delay: 100 });
- cy.get(".custom-link-option").should("be.visible");
- });
- });
- });
|