100 lines
3.4 KiB
JavaScript
100 lines
3.4 KiB
JavaScript
/** @odoo-module **/
|
|
|
|
import { getGroupBy } from "@web/search/utils/group_by";
|
|
import { DEFAULT_INTERVAL } from "@web/search/utils/dates";
|
|
|
|
const fields = {
|
|
display_name: { string: "Displayed name", type: "char" },
|
|
foo: {
|
|
string: "Foo",
|
|
type: "char",
|
|
default: "My little Foo Value",
|
|
store: true,
|
|
sortable: true,
|
|
},
|
|
date_field: { string: "Date", type: "date", store: true, sortable: true },
|
|
float_field: { string: "Float", type: "float" },
|
|
bar: { string: "Bar", type: "many2one", relation: "partner" },
|
|
};
|
|
|
|
QUnit.module("GroupBy Class", {}, () => {
|
|
QUnit.module("Without field validation");
|
|
QUnit.test("simple valid group by", async function (assert) {
|
|
assert.expect(6);
|
|
let groupBy = getGroupBy("display_name");
|
|
assert.strictEqual(groupBy.fieldName, "display_name");
|
|
assert.strictEqual(groupBy.interval, null);
|
|
assert.strictEqual(groupBy.spec, "display_name");
|
|
groupBy = getGroupBy("display_name:quarter");
|
|
assert.strictEqual(groupBy.fieldName, "display_name");
|
|
assert.strictEqual(groupBy.interval, "quarter");
|
|
assert.strictEqual(groupBy.spec, "display_name:quarter");
|
|
});
|
|
QUnit.test("simple invalid group by", async function (assert) {
|
|
assert.expect(3);
|
|
try {
|
|
getGroupBy(":day");
|
|
} catch {
|
|
assert.step("Error 1");
|
|
}
|
|
try {
|
|
getGroupBy("diay_name:yar");
|
|
} catch {
|
|
assert.step("Error 2");
|
|
}
|
|
assert.verifySteps(["Error 1", "Error 2"]);
|
|
});
|
|
QUnit.module("With field validation");
|
|
QUnit.test("simple valid group by", async function (assert) {
|
|
assert.expect(3);
|
|
const groupBy = getGroupBy("display_name", fields);
|
|
assert.strictEqual(groupBy.fieldName, "display_name");
|
|
assert.strictEqual(groupBy.interval, null);
|
|
assert.strictEqual(groupBy.spec, "display_name");
|
|
});
|
|
QUnit.test("simple invalid group by", async function (assert) {
|
|
assert.expect(5);
|
|
try {
|
|
getGroupBy("", fields);
|
|
} catch {
|
|
assert.step("Error 1");
|
|
}
|
|
try {
|
|
getGroupBy("display_name:day", fields);
|
|
} catch {
|
|
assert.step("Error 2");
|
|
}
|
|
try {
|
|
getGroupBy("diay_name:year", fields);
|
|
} catch {
|
|
assert.step("Error 3");
|
|
}
|
|
try {
|
|
getGroupBy("diay_name:yar", fields);
|
|
} catch {
|
|
assert.step("Error 4");
|
|
}
|
|
assert.verifySteps(["Error 1", "Error 2", "Error 3", "Error 4"]);
|
|
});
|
|
QUnit.test("simple valid date group by", async function (assert) {
|
|
assert.expect(6);
|
|
let groupBy = getGroupBy("date_field:year", fields);
|
|
assert.strictEqual(groupBy.fieldName, "date_field");
|
|
assert.strictEqual(groupBy.interval, "year");
|
|
assert.strictEqual(groupBy.spec, "date_field:year");
|
|
groupBy = getGroupBy("date_field", fields);
|
|
assert.strictEqual(groupBy.fieldName, "date_field");
|
|
assert.strictEqual(groupBy.interval, DEFAULT_INTERVAL);
|
|
assert.strictEqual(groupBy.spec, `date_field:${DEFAULT_INTERVAL}`);
|
|
});
|
|
QUnit.test("simple invalid date group by", async function (assert) {
|
|
assert.expect(2);
|
|
try {
|
|
getGroupBy("date_field:yar", fields);
|
|
} catch {
|
|
assert.step("Error");
|
|
}
|
|
assert.verifySteps(["Error"]);
|
|
});
|
|
});
|