context("Control Icon", () => {
	before(() => {
		cy.login();
		cy.visit("/app/website");
	});

	function get_dialog_with_icon() {
		return cy.dialog({
			title: "Icon",
			fields: [
				{
					label: "Icon",
					fieldname: "icon",
					fieldtype: "Icon",
				},
			],
		});
	}

	it("should set icon", () => {
		get_dialog_with_icon().as("dialog");
		cy.get(".xhiveframework-control[data-fieldname=icon]").findByRole("textbox").click();

		cy.get(".icon-picker .icon-wrapper[id=heart-active]").first().click();
		cy.get(".xhiveframework-control[data-fieldname=icon]")
			.findByRole("textbox")
			.should("have.value", "heart-active");
		cy.get("@dialog").then((dialog) => {
			let value = dialog.get_value("icon");
			expect(value).to.equal("heart-active");
		});

		cy.get(".icon-picker .icon-wrapper[id=heart]").first().click();
		cy.get(".xhiveframework-control[data-fieldname=icon]")
			.findByRole("textbox")
			.should("have.value", "heart");
		cy.get("@dialog").then((dialog) => {
			let value = dialog.get_value("icon");
			expect(value).to.equal("heart");
		});
	});

	it("search for icon and clear search input", () => {
		let search_text = "ed";
		cy.get(".icon-picker").findByRole("searchbox").click().type(search_text);
		cy.get(".icon-section .icon-wrapper:not(.hidden)").then((i) => {
			cy.get(`.icon-section .icon-wrapper[id*='${search_text}']`).then((icons) => {
				expect(i.length).to.equal(icons.length);
			});
		});

		cy.get(".icon-picker").findByRole("searchbox").clear().blur();
		cy.get(".icon-section .icon-wrapper").should("not.have.class", "hidden");
	});
});
