The support for "active_test" context key has been introduced in c2918c1
However, the context key is ignored in many mocked ORM methods (if not all).
This commit adds support for the `search` and `search_read` methods.
Note: this is done to easily write some tests in odoo/enterprise#16363
and it might be usefull to test futures features (or fixes) using this
context key.
closes odoo/odoo#66393
X-original-commit: 0ad1c1631eb233b3e8f98b40f8c0813d0ad7acbe
Related: odoo/enterprise#16447
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Signed-off-by: Lucas Lefèvre (lul) <lul@odoo.com>
202 lines
6.6 KiB
JavaScript
202 lines
6.6 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",
|
|
},
|
|
active: {
|
|
string: "Active",
|
|
type: "bool",
|
|
default: true,
|
|
},
|
|
},
|
|
records: [
|
|
{ id: 1, name: "Jean-Michel", email: "jean.michel@example.com" },
|
|
{ id: 2, name: "Raoul", email: "raoul@example.com", active: false },
|
|
],
|
|
},
|
|
};
|
|
},
|
|
}, 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"]]);
|
|
});
|
|
|
|
QUnit.test("performRpc: search with active_test=false", async function (assert) {
|
|
assert.expect(1);
|
|
const server = new MockServer(this.data, {});
|
|
const result = await server.performRpc("", {
|
|
model: "res.partner",
|
|
method: "search",
|
|
args: [[]],
|
|
kwargs: {
|
|
context: { active_test: false },
|
|
},
|
|
});
|
|
assert.deepEqual(result, [1, 2]);
|
|
});
|
|
|
|
QUnit.test("performRpc: search with active_test=true", async function (assert) {
|
|
assert.expect(1);
|
|
const server = new MockServer(this.data, {});
|
|
const result = await server.performRpc("", {
|
|
model: "res.partner",
|
|
method: "search",
|
|
args: [[]],
|
|
kwargs: {
|
|
context: { active_test: true },
|
|
},
|
|
});
|
|
assert.deepEqual(result, [1]);
|
|
});
|
|
|
|
QUnit.test("performRpc: search_read with active_test=false", 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: ["name"],
|
|
context: { active_test: false },
|
|
},
|
|
});
|
|
assert.deepEqual(result, [{id: 1, name: "Jean-Michel"}, {id: 2, name: "Raoul"}]);
|
|
});
|
|
|
|
QUnit.test("performRpc: search_read with active_test=true", 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: ["name"],
|
|
context: { active_test: true },
|
|
},
|
|
});
|
|
assert.deepEqual(result, [{id: 1, name: "Jean-Michel"}]);
|
|
});
|
|
});
|
|
});
|