seitime-frappe/cypress/integration/control_dynamic_link.js
2025-12-01 19:31:27 +01:00

162 lines
4 KiB
JavaScript

context("Dynamic Link", () => {
before(() => {
cy.login();
cy.visit("/desk/doctype");
return cy
.window()
.its("frappe")
.then((frappe) => {
return frappe.xcall("frappe.tests.ui_test_helpers.create_doctype", {
name: "Test Dynamic Link",
fields: [
{
label: "Document Type",
fieldname: "doc_type",
fieldtype: "Link",
options: "DocType",
in_list_view: 1,
in_standard_filter: 1,
},
{
label: "Document ID",
fieldname: "doc_id",
fieldtype: "Dynamic Link",
options: "doc_type",
in_list_view: 1,
in_standard_filter: 1,
},
],
});
});
});
function get_dialog_with_dynamic_link() {
return cy.dialog({
title: "Dynamic Link",
fields: [
{
label: "Document Type",
fieldname: "doc_type",
fieldtype: "Link",
options: "DocType",
in_list_view: 1,
},
{
label: "Document ID",
fieldname: "doc_id",
fieldtype: "Dynamic Link",
options: "doc_type",
in_list_view: 1,
},
],
});
}
function get_dialog_with_dynamic_link_option() {
return cy.dialog({
title: "Dynamic Link",
fields: [
{
label: "Document Type",
fieldname: "doc_type",
fieldtype: "Link",
options: "DocType",
in_list_view: 1,
},
{
label: "Document ID",
fieldname: "doc_id",
fieldtype: "Dynamic Link",
get_options: () => {
return "User";
},
in_list_view: 1,
},
],
});
}
it("Creating a dynamic link by passing option as function and verifying it in a dialog", () => {
get_dialog_with_dynamic_link_option().as("dialog");
cy.get_field("doc_type").clear();
cy.fill_field("doc_type", "User", "Link");
cy.get_field("doc_id").click();
//Checking if the listbox have length greater than 0
cy.get('[data-fieldname="doc_id"]')
.find(".awesomplete")
.find("div")
.its("length")
.should("be.gte", 0);
cy.get(".btn-modal-close").click({ force: true });
});
it("Creating a dynamic link and verifying it in a dialog", () => {
get_dialog_with_dynamic_link().as("dialog");
cy.wait(500);
cy.get_field("doc_type").clear();
cy.fill_field("doc_type", "User", "Link");
cy.get_field("doc_id").click();
//Checking if the listbox have length greater than 0
cy.get('[data-fieldname="doc_id"]')
.find(".awesomplete")
.find("div")
.its("length")
.should("be.gte", 0);
cy.get(".btn-modal-close").click({ force: true, multiple: true });
});
it("Shows dynamic link options in list filters", () => {
cy.visit("/desk/test-dynamic-link");
//Clicking on the Document ID field
cy.get_field("doc_type").clear();
//Entering User in the Doctype field
cy.fill_field("doc_type", "User", "Link", { delay: 500 });
cy.get_field("doc_id").click();
//Checking if the listbox have length greater than 0
cy.get('[data-fieldname="doc_id"]')
.find(".awesomplete")
.find("div")
.its("length")
.should("be.gte", 0);
});
it("Shows dynamic link options in new form", () => {
//Opening a new form for dynamic link doctype
cy.new_form("Test Dynamic Link");
cy.get_field("doc_type").clear();
//Entering User in the Doctype field
cy.fill_field("doc_type", "User", "Link", { delay: 500 });
cy.get_field("doc_id").click();
//Checking if the listbox have length greater than 0
cy.get('[data-fieldname="doc_id"]')
.find(".awesomplete")
.find("div")
.its("length")
.should("be.gte", 0);
cy.get_field("doc_type").clear();
});
it("Shows error when invalid DocType is passed", () => {
cy.new_form("Test Dynamic Link");
cy.get_field("doc_type").clear();
//Entering System Settings in the Doctype field
cy.fill_field("doc_type", "System Settings", "Link", { delay: 500 });
cy.get_field("doc_id").click();
//Checking if the system throws error
cy.get(".modal-title").should("have.text", "Error");
cy.get(".msgprint").should(
"have.text",
"System Settings is not a valid DocType for Dynamic Link"
);
});
});