114 lines
2.9 KiB
JavaScript
114 lines
2.9 KiB
JavaScript
import { describe, expect, test } from "@odoo/hoot";
|
|
import {
|
|
MockServer,
|
|
defineModels,
|
|
fields,
|
|
getService,
|
|
makeMockEnv,
|
|
makeMockServer,
|
|
models,
|
|
} from "@web/../tests/web_test_helpers";
|
|
|
|
class Oui extends models.Model {
|
|
name = fields.Char();
|
|
|
|
_records = [
|
|
{
|
|
id: 1,
|
|
name: "John Doe",
|
|
},
|
|
];
|
|
}
|
|
|
|
defineModels([Oui]);
|
|
|
|
test("model name can be implicitly extracted from its constructor name", async () => {
|
|
const [AnonymousClass, Foo, ResCurrency, ResPartner] = defineModels([
|
|
class extends models.Model {},
|
|
class Foo extends models.Model {},
|
|
class ResCurrency extends models.Model {
|
|
_name = "project.task"; //
|
|
},
|
|
class ResPartner extends models.Model {},
|
|
]);
|
|
|
|
await makeMockServer();
|
|
|
|
expect(MockServer.env["anonymous"]).toBeInstanceOf(AnonymousClass);
|
|
expect(MockServer.env["foo"]).toBeInstanceOf(Foo);
|
|
expect(MockServer.env["project.task"]).toBeInstanceOf(ResCurrency);
|
|
expect(MockServer.env["res.partner"]).toBeInstanceOf(ResPartner);
|
|
|
|
expect(() => MockServer.env["res.currency"]).toThrow(
|
|
"could not get model from server environment"
|
|
);
|
|
});
|
|
|
|
test("model should be defined on the mock server", async () => {
|
|
await makeMockEnv();
|
|
|
|
await expect(getService("orm").searchRead("oui", [], ["id", "name"])).resolves.toEqual([
|
|
{
|
|
id: 1,
|
|
name: "John Doe",
|
|
},
|
|
]);
|
|
});
|
|
|
|
describe("level 1", () => {
|
|
Oui._fields.age = fields.Integer();
|
|
Oui._records[0].age = 42;
|
|
|
|
test("model can be overridden at a suite level", async () => {
|
|
await makeMockEnv();
|
|
|
|
await expect(
|
|
getService("orm").searchRead("oui", [], ["id", "name", "age"])
|
|
).resolves.toEqual([
|
|
{
|
|
id: 1,
|
|
name: "John Doe",
|
|
age: 42,
|
|
},
|
|
]);
|
|
});
|
|
|
|
test("model can be overridden at a test level", async () => {
|
|
Oui._fields.surname = fields.Char();
|
|
Oui._records[0].surname = "doedoe";
|
|
|
|
await makeMockEnv();
|
|
|
|
await expect(
|
|
getService("orm").searchRead("oui", [], ["id", "name", "age", "surname"])
|
|
).resolves.toEqual([
|
|
{
|
|
id: 1,
|
|
name: "John Doe",
|
|
age: 42,
|
|
surname: "doedoe",
|
|
},
|
|
]);
|
|
});
|
|
|
|
describe("level 2", () => {
|
|
Oui._fields.email = fields.Char();
|
|
Oui._records[0].email = "john@doe.com";
|
|
|
|
test("model overrides are incremental", async () => {
|
|
await makeMockEnv();
|
|
|
|
await expect(
|
|
getService("orm").searchRead("oui", [], ["id", "name", "age", "email"])
|
|
).resolves.toEqual([
|
|
{
|
|
id: 1,
|
|
name: "John Doe",
|
|
age: 42,
|
|
email: "john@doe.com",
|
|
},
|
|
]);
|
|
});
|
|
});
|
|
});
|