Files
odoo_source/addons/web/static/tests/views/view_service_tests.js
T
Mathieu Duckerts-Antoine b134c1e45e [REF] web: new view service API
We simplify and document the view service API.
2021-08-16 12:53:50 +00:00

97 lines
2.6 KiB
JavaScript

/** @odoo-module */
import { makeTestEnv } from "../helpers/mock_env";
import { viewService } from "@web/views/view_service";
import { registry } from "@web/core/registry";
import { makeMockServer } from "../helpers/mock_server";
import { ormService } from "@web/core/orm_service";
QUnit.module("View service", (hooks) => {
let serverData;
hooks.beforeEach(() => {
const views = {
"take.five,99,list": `<list><field name="display_name" /><list>`,
};
const models = {
"take.five": {
fields: {},
records: [],
},
};
serverData = { models, views };
registry.category("services").add("views", viewService).add("orm", ormService);
});
QUnit.test("stores calls in cache in success", async (assert) => {
assert.expect(2);
const mockRPC = (route, args) => {
if (route.includes("load_views")) {
assert.step("load_views");
}
};
makeMockServer(serverData, mockRPC);
const env = await makeTestEnv();
await env.services.views.loadViews(
{
resModel: "take.five",
views: [[99, "list"]],
},
{}
);
await env.services.views.loadViews(
{
resModel: "take.five",
views: [[99, "list"]],
},
{}
);
assert.verifySteps(["load_views"]);
});
QUnit.test("stores calls in cache when failed", async (assert) => {
assert.expect(5);
const mockRPC = (route, args) => {
if (route.includes("load_views")) {
assert.step("load_views");
return Promise.reject("my little error");
}
};
makeMockServer(serverData, mockRPC);
const env = await makeTestEnv();
try {
await env.services.views.loadViews(
{
resModel: "take.five",
views: [[99, "list"]],
},
{}
);
} catch (error) {
assert.strictEqual(error, "my little error");
}
try {
await env.services.views.loadViews(
{
resModel: "take.five",
views: [[99, "list"]],
},
{}
);
} catch (error) {
assert.strictEqual(error, "my little error");
}
assert.verifySteps(["load_views", "load_views"]);
});
});