diff options
| author | Lucas Lefèvre <lul@odoo.com> | 2020-11-25 15:49:53 +0000 |
|---|---|---|
| committer | Lucas Lefèvre <lul@odoo.com> | 2020-11-25 15:55:16 +0000 |
| commit | c8f59bfd5c8ddb7c7abf1108111507e667393208 (patch) | |
| tree | 780abd89506e1a94d69fb91365e61724ce2d6bf1 /addons/web | |
| parent | fe3dbfb77eb403bb6eb69cd9d667fd8baa714ff7 (diff) | |
[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#62347
Related: odoo/enterprise#14990
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Diffstat (limited to 'addons/web')
| -rw-r--r-- | addons/web/static/tests/helpers/mock_server.js | 8 | ||||
| -rw-r--r-- | addons/web/static/tests/mockserver_tests.js | 80 |
2 files changed, 87 insertions, 1 deletions
diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index 09196e9e5c3..14ea43b9922 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -1209,12 +1209,18 @@ var MockServer = Class.extend({ */ _mockNameGet: function (model, args) { var ids = args[0]; + if (!args.length) { + throw new Error("name_get: expected one argument"); + } + else if (!ids) { + return [] + } if (!_.isArray(ids)) { ids = [ids]; } var records = this.data[model].records; var names = _.map(ids, function (id) { - return [id, _.findWhere(records, {id: id}).display_name]; + return id ? [id, _.findWhere(records, {id: id}).display_name] : [null, "False"]; }); return names; }, diff --git a/addons/web/static/tests/mockserver_tests.js b/addons/web/static/tests/mockserver_tests.js index 3144bfa4a56..a913bee3250 100644 --- a/addons/web/static/tests/mockserver_tests.js +++ b/addons/web/static/tests/mockserver_tests.js @@ -51,5 +51,85 @@ QUnit.module("MockServer", { 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"]]); + }); }); }); |
