Files
odoo_source/addons/web/static/tests/mockserver_tests.js
T
Lucas Lefèvre 058ba7b907 [FIX] web: mock all name_get behaviors
The mock implementation of `name_get` does not fully reflect
the real server implementation.

The real implementation is described in tests added in
this commit.

Note: in my wildest dreams, the mock server tests would be run
against the real *and* the mock implementation to ensure they
do not diverge.

closes odoo/odoo#62430

X-original-commit: c8f59bfd5c8ddb7c7abf1108111507e667393208
Related: odoo/enterprise#15017
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Signed-off-by: Lucas Lefèvre (lul) <lul@odoo.com>
2020-11-26 15:29:52 +00:00

136 lines
4.4 KiB
JavaScript

odoo.define('web.mockserver_tests', function (require) {
"use strict";
const MockServer = require("web.MockServer");
QUnit.module("MockServer", {
beforeEach() {
this.data = {
"res.partner": {
fields: {
name: {
string: "Name",
type: "string",
},
email: {
string: "Email",
type: "string",
},
},
records: [{ id: 1, name: "Jean-Michel", email: "jean.michel@example.com" }],
},
};
},
}, function () {
QUnit.test("performRpc: search_read with an empty array of fields", async function (assert) {
assert.expect(1);
const server = new MockServer(this.data, {});
const result = await server.performRpc("", {
model: "res.partner",
method: "search_read",
args: [],
kwargs: {
fields: [],
},
});
const expectedFields = ["id", "email", "name", "display_name"];
assert.strictEqual(_.difference(expectedFields, Object.keys(result[0])).length, 0,
"should contains all the fields");
});
QUnit.test("performRpc: search_read without fields", async function (assert) {
assert.expect(1);
const server = new MockServer(this.data, {});
const result = await server.performRpc("", {
model: "res.partner",
method: "search_read",
args: [],
kwargs: {},
});
const expectedFields = ["id", "email", "name", "display_name"];
assert.strictEqual(_.difference(expectedFields, Object.keys(result[0])).length, 0,
"should contains all the fields");
});
QUnit.test("performRpc: name_get with no args", async function (assert) {
assert.expect(2);
const server = new MockServer(this.data, {});
try {
await server.performRpc("", {
model: "res.partner",
method: "name_get",
args: [],
kwargs: {},
});
} catch (error) {
assert.step("name_get failed")
}
assert.verifySteps(["name_get failed"])
});
QUnit.test("performRpc: name_get with undefined arg", async function (assert) {
assert.expect(1);
const server = new MockServer(this.data, {});
const result = await server.performRpc("", {
model: "res.partner",
method: "name_get",
args: [undefined],
kwargs: {},
});
assert.deepEqual(result, [])
});
QUnit.test("performRpc: name_get with a single id", async function (assert) {
assert.expect(1);
const server = new MockServer(this.data, {});
const result = await server.performRpc("", {
model: "res.partner",
method: "name_get",
args: [1],
kwargs: {},
});
assert.deepEqual(result, [[1, "Jean-Michel"]]);
});
QUnit.test("performRpc: name_get with array of ids", async function (assert) {
assert.expect(1);
const server = new MockServer(this.data, {});
const result = await server.performRpc("", {
model: "res.partner",
method: "name_get",
args: [[1]],
kwargs: {},
});
assert.deepEqual(result, [[1, "Jean-Michel"]]);
});
QUnit.test("performRpc: name_get with invalid id", async function (assert) {
assert.expect(2);
const server = new MockServer(this.data, {});
try {
await server.performRpc("", {
model: "res.partner",
method: "name_get",
args: [11111],
kwargs: {},
});
} catch (error) {
assert.step("name_get failed")
}
assert.verifySteps(["name_get failed"])
});
QUnit.test("performRpc: name_get with id and undefined id", async function (assert) {
assert.expect(1);
const server = new MockServer(this.data, {});
const result = await server.performRpc("", {
model: "res.partner",
method: "name_get",
args: [[undefined, 1]],
kwargs: {},
});
assert.deepEqual(result, [[null, "False"], [1, "Jean-Michel"]]);
});
});
});