import { expect, getFixture, test } from "@odoo/hoot"; import { queryAllAttributes, queryAllTexts, queryFirst } from "@odoo/hoot-dom"; import { contains, defineModels, fieldInput, fields, models, mountView, onRpc, } from "../../web_test_helpers"; class Product extends models.Model { url = fields.Char(); } defineModels([Product]); onRpc("has_group", () => true); test("UrlField in form view", async () => { Product._records = [{ id: 1, url: "https://www.example.com" }]; await mountView({ type: "form", resModel: "product", resId: 1, arch: `
`, }); expect(`.o_field_widget input[type="text"]`).toHaveCount(1); expect(`.o_field_widget input[type="text"]`).toHaveValue("https://www.example.com"); expect(`.o_field_url a`).toHaveAttribute("href", "https://www.example.com"); await fieldInput("url").edit("https://www.odoo.com"); expect(`.o_field_widget input[type="text"]`).toHaveValue("https://www.odoo.com"); }); test("in form view (readonly)", async () => { Product._records = [{ id: 1, url: "https://www.example.com" }]; await mountView({ type: "form", resModel: "product", resId: 1, arch: ``, }); expect("a.o_field_widget.o_form_uri").toHaveCount(1); expect("a.o_field_widget.o_form_uri").toHaveAttribute("href", "https://www.example.com"); expect("a.o_field_widget.o_form_uri").toHaveAttribute("target", "_blank"); expect("a.o_field_widget.o_form_uri").toHaveText("https://www.example.com"); }); test("it takes its text content from the text attribute", async () => { Product._records = [{ id: 1, url: "https://www.example.com" }]; await mountView({ type: "form", resModel: "product", resId: 1, arch: '', }); expect(`.o_field_url a`).toHaveText("https://another.com"); }); test("href attribute and website_path option", async () => { Product._fields.url1 = fields.Char(); Product._fields.url2 = fields.Char(); Product._fields.url3 = fields.Char(); Product._fields.url4 = fields.Char(); Product._records = [ { id: 1, url1: "http://www.url1.com", url2: "www.url2.com", url3: "http://www.url3.com", url4: "https://url4.com", }, ]; await mountView({ type: "form", resModel: "product", resId: 1, arch: ` `, }); expect(`.o_field_widget[name="url1"] a`).toHaveAttribute("href", "http://www.url1.com"); expect(`.o_field_widget[name="url2"] a`).toHaveAttribute("href", "www.url2.com"); expect(`.o_field_widget[name="url3"] a`).toHaveAttribute("href", "http://www.url3.com"); expect(`.o_field_widget[name="url4"] a`).toHaveAttribute("href", "https://url4.com"); }); test("in editable list view", async () => { Product._records = [ { id: 1, url: "example.com" }, { id: 2, url: "odoo.com" }, ]; await mountView({ type: "list", resModel: "product", arch: '