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

	function get_dialog_with_duration(hide_days = 0, hide_seconds = 0) {
		return cy.dialog({
			title: "Duration",
			fields: [
				{
					fieldname: "duration",
					fieldtype: "Duration",
					hide_days: hide_days,
					hide_seconds: hide_seconds,
				},
			],
		});
	}

	it("should set duration", () => {
		get_dialog_with_duration().as("dialog");
		cy.get(".xhiveframework-control[data-fieldname=duration] input").first().click();
		cy.get(".duration-input[data-duration=days]")
			.type(45, { force: true })
			.blur({ force: true });
		cy.get(".duration-input[data-duration=minutes]").type(30).blur({ force: true });
		cy.get(".xhiveframework-control[data-fieldname=duration] input")
			.first()
			.should("have.value", "45d 30m");
		cy.get(".xhiveframework-control[data-fieldname=duration] input").first().blur();
		cy.get(".duration-picker").should("not.be.visible");
		cy.get("@dialog").then((dialog) => {
			let value = dialog.get_value("duration");
			expect(value).to.equal(3889800);
			cy.hide_dialog();
		});
	});

	it("should hide days or seconds according to duration options", () => {
		get_dialog_with_duration(1, 1).as("dialog");
		cy.get(".xhiveframework-control[data-fieldname=duration] input").first();
		cy.get(".duration-input[data-duration=days]").should("not.be.visible");
		cy.get(".duration-input[data-duration=seconds]").should("not.be.visible");
	});
});
