diff --git a/addons/base_automation/static/tests/base_automation_error_dialog.js b/addons/base_automation/static/tests/base_automation_error_dialog.js index 5f96ea5d384..31a4643f245 100644 --- a/addons/base_automation/static/tests/base_automation_error_dialog.js +++ b/addons/base_automation/static/tests/base_automation_error_dialog.js @@ -1,20 +1,23 @@ /** @odoo-modules */ -import { browser } from "@web/core/browser/browser"; -import { registry } from "@web/core/registry"; -import { errorService } from "@web/core/errors/error_service"; -import { dialogService } from "@web/core/dialog/dialog_service"; -import { MainComponentsContainer } from "@web/core/main_components_container"; -import { notificationService } from "@web/core/notifications/notification_service"; -import { uiService } from "@web/core/ui/ui_service"; -import { hotkeyService } from "@web/core/hotkeys/hotkey_service"; import { registerCleanup } from "@web/../tests/helpers/cleanup"; import { makeTestEnv } from "@web/../tests/helpers/mock_env"; -import { makeFakeRPCService, makeFakeLocalizationService } from "@web/../tests/helpers/mock_services"; -import { RPCError } from "@web/core/network/rpc_service"; +import { makeServerError } from "@web/../tests/helpers/mock_server"; +import { + makeFakeLocalizationService, + makeFakeRPCService, +} from "@web/../tests/helpers/mock_services"; +import { browser } from "@web/core/browser/browser"; +import { dialogService } from "@web/core/dialog/dialog_service"; +import { errorService } from "@web/core/errors/error_service"; +import { hotkeyService } from "@web/core/hotkeys/hotkey_service"; +import { MainComponentsContainer } from "@web/core/main_components_container"; +import { notificationService } from "@web/core/notifications/notification_service"; +import { registry } from "@web/core/registry"; +import { uiService } from "@web/core/ui/ui_service"; +import { getFixture, mount, nextTick, patchWithCleanup } from "@web/../tests/helpers/utils"; import { BaseAutomationErrorDialog } from "../src/js/base_automation_error_dialog"; -import { patchWithCleanup,getFixture, mount, nextTick } from "@web/../tests/helpers/utils"; const { toRaw } = owl; @@ -23,7 +26,6 @@ const serviceRegistry = registry.category("services"); let target; QUnit.module("base_automation", {}, function () { - let unhandledRejectionCb; QUnit.module("Error Dialog", { async beforeEach() { @@ -55,7 +57,6 @@ QUnit.module("base_automation", {}, function () { QUnit.test("Error due to an automated action", async function (assert) { assert.expect(4); - const error = new RPCError(); const errorContext = { exception_class: "base_automation", base_automation: { @@ -63,14 +64,11 @@ QUnit.module("base_automation", {}, function () { name: "Test base automation error dialog", }, }; - Object.assign(error, { + + const error = makeServerError({ subType: "Odoo Client Error", message: "Message", - data: { - debug: "Traceback", - context: errorContext, - }, - exceptionName: errorContext.exception_class, + context: errorContext, }); patchWithCleanup(BaseAutomationErrorDialog.prototype, { @@ -99,21 +97,17 @@ QUnit.module("base_automation", {}, function () { }); await unhandledRejectionCb(errorEvent); await nextTick(); - assert.containsOnce(target, '.modal .fa-clipboard'); - assert.containsOnce(target, '.modal .o_disable_action_button'); - assert.containsOnce(target, '.modal .o_edit_action_button'); + assert.containsOnce(target, ".modal .fa-clipboard"); + assert.containsOnce(target, ".modal .o_disable_action_button"); + assert.containsOnce(target, ".modal .o_edit_action_button"); }); QUnit.test("Error not due to an automated action", async function (assert) { assert.expect(3); - const error = new RPCError(); - Object.assign(error, { + const error = makeServerError({ subType: "Odoo Client Error", message: "Message", - data: { - debug: "Traceback", - }, }); const env = await makeTestEnv(); @@ -131,9 +125,8 @@ QUnit.module("base_automation", {}, function () { }); await unhandledRejectionCb(errorEvent); await nextTick(); - assert.containsOnce(target, '.modal .fa-clipboard'); - assert.containsNone(target, '.modal .o_disable_action_button'); - assert.containsNone(target, '.modal .o_edit_action_button'); + assert.containsOnce(target, ".modal .fa-clipboard"); + assert.containsNone(target, ".modal .o_disable_action_button"); + assert.containsNone(target, ".modal .o_edit_action_button"); }); - }); diff --git a/addons/spreadsheet/static/tests/charts/model/odoo_chart_plugin_test.js b/addons/spreadsheet/static/tests/charts/model/odoo_chart_plugin_test.js index 26e706129d7..2b17a541181 100644 --- a/addons/spreadsheet/static/tests/charts/model/odoo_chart_plugin_test.js +++ b/addons/spreadsheet/static/tests/charts/model/odoo_chart_plugin_test.js @@ -7,7 +7,7 @@ import { nextTick } from "@web/../tests/helpers/utils"; import { createSpreadsheetWithChart, insertChartInSpreadsheet } from "../../utils/chart"; import { createModelWithDataSource, waitForDataSourcesLoaded } from "../../utils/model"; import * as spreadsheet from "@odoo/o-spreadsheet"; -import { RPCError } from "@web/core/network/rpc_service"; +import { makeServerError } from "@web/../tests/helpers/mock_server"; const { toZone } = spreadsheet.helpers; @@ -411,9 +411,7 @@ QUnit.module("spreadsheet > odoo chart plugin", {}, () => { args.method === "web_read_group" && !hasAccessRights ) { - const error = new RPCError(); - error.data = { message: "ya done!" }; - throw error; + throw makeServerError({ description: "ya done!" }); } }, }); diff --git a/addons/spreadsheet/static/tests/data_fetching/data_source_test.js b/addons/spreadsheet/static/tests/data_fetching/data_source_test.js index 7af839011d8..9e44f3babf2 100644 --- a/addons/spreadsheet/static/tests/data_fetching/data_source_test.js +++ b/addons/spreadsheet/static/tests/data_fetching/data_source_test.js @@ -3,7 +3,7 @@ import { nextTick } from "@web/../tests/helpers/utils"; import { LoadableDataSource } from "@spreadsheet/data_sources/data_source"; import { Deferred } from "@web/core/utils/concurrency"; -import { RPCError } from "@web/core/network/rpc_service"; +import { makeServerError } from "@web/../tests/helpers/mock_server"; QUnit.module("spreadsheet data source", {}, () => { QUnit.test( @@ -60,9 +60,7 @@ QUnit.module("spreadsheet data source", {}, () => { notify: () => {}, orm: { call: () => { - const error = new RPCError(); - error.data = { message: "Ya done!" }; - throw error; + throw makeServerError({ description: "Ya done!" }); }, }, }); diff --git a/addons/spreadsheet/static/tests/lists/list_plugin_test.js b/addons/spreadsheet/static/tests/lists/list_plugin_test.js index 000d9ed7f0e..edabece18ca 100644 --- a/addons/spreadsheet/static/tests/lists/list_plugin_test.js +++ b/addons/spreadsheet/static/tests/lists/list_plugin_test.js @@ -2,6 +2,7 @@ import { session } from "@web/session"; import { nextTick, patchWithCleanup } from "@web/../tests/helpers/utils"; +import { makeServerError } from "@web/../tests/helpers/mock_server"; import CommandResult from "@spreadsheet/o_spreadsheet/cancelled_reason"; import { createModelWithDataSource, waitForDataSourcesLoaded } from "../utils/model"; @@ -17,7 +18,6 @@ import { } from "../utils/getters"; import { createSpreadsheetWithList } from "../utils/list"; import { registry } from "@web/core/registry"; -import { RPCError } from "@web/core/network/rpc_service"; import { getBasicServerData } from "../utils/data"; QUnit.module("spreadsheet > list plugin", {}, () => { @@ -571,9 +571,7 @@ QUnit.module("spreadsheet > list plugin", {}, () => { args.method === "search_read" && !hasAccessRights ) { - const error = new RPCError(); - error.data = { message: "ya done!" }; - throw error; + throw makeServerError({ description: "ya done!" }); } }, }); diff --git a/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js b/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js index e6a41ec2411..ba17c058e17 100644 --- a/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js +++ b/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js @@ -18,7 +18,7 @@ import { } from "@spreadsheet/../tests/utils/model"; import { makeDeferred, nextTick, patchWithCleanup } from "@web/../tests/helpers/utils"; import { session } from "@web/session"; -import { RPCError } from "@web/core/network/rpc_service"; +import { makeServerError } from "@web/../tests/helpers/mock_server"; QUnit.module("spreadsheet > pivot plugin", {}, () => { QUnit.test("can select a Pivot from cell formula", async function (assert) { @@ -763,9 +763,7 @@ QUnit.module("spreadsheet > pivot plugin", {}, () => { args.method === "read_group" && !hasAccessRights ) { - const error = new RPCError(); - error.data = { message: "ya done!" }; - throw error; + throw makeServerError({ description: "ya done!" }); } }, }); diff --git a/addons/survey/static/tests/components/question_page_one2many_field_tests.js b/addons/survey/static/tests/components/question_page_one2many_field_tests.js index 775e1da3a94..93a61c227a1 100644 --- a/addons/survey/static/tests/components/question_page_one2many_field_tests.js +++ b/addons/survey/static/tests/components/question_page_one2many_field_tests.js @@ -2,7 +2,8 @@ import { click, editInput, getFixture, nextTick, triggerHotkey } from "@web/../tests/helpers/utils"; import { makeView, setupViewRegistries } from "@web/../tests/views/helpers"; -import { RPCError } from "@web/core/network/rpc_service"; + +import { makeServerError } from "@web/../tests/helpers/mock_server"; QUnit.module("QuestionPageOneToManyField", (hooks) => { let serverData; @@ -188,14 +189,11 @@ QUnit.module("QuestionPageOneToManyField", (hooks) => { mockRPC(route, args) { if (args.method === "write" && args.model === "survey") { assert.step("save parent form"); - const surveyValidationError = new RPCError(); - Object.assign(surveyValidationError, { - exceptionName: "odoo.exceptions.ValidationError", - data: { - message: "This isn't right!", - }, + throw makeServerError({ + description: "This isn't right!", + type: "ValidationError", }); - return Promise.reject(surveyValidationError); + } }, }); diff --git a/addons/web/static/src/views/fields/relational_utils.js b/addons/web/static/src/views/fields/relational_utils.js index ccba128d750..fdac9aa429a 100644 --- a/addons/web/static/src/views/fields/relational_utils.js +++ b/addons/web/static/src/views/fields/relational_utils.js @@ -278,7 +278,7 @@ export class Many2XAutocomplete extends Component { const context = this.getCreationContext(request); return this.openMany2X({ context }); } - throw e; + throw e.message ? e.message : e; } }, }); diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index c84f83943b3..f7c0574fa3a 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -16,6 +16,7 @@ import { intersection } from "@web/core/utils/arrays"; import { deepCopy, pick } from "@web/core/utils/objects"; import { makeFakeRPCService, makeMockFetch } from "./mock_services"; import { patchWithCleanup } from "./utils"; +import { makeErrorFromResponse } from "@web/core/network/rpc_service"; const serviceRegistry = registry.category("services"); @@ -104,6 +105,21 @@ function makeLogger(prefix, title) { return { request, response }; } +export function makeServerError({ code, context, description, message, subType, type } = {}) { + return makeErrorFromResponse({ + code: code || 200, + message: message || "Odoo Server Error", + data: { + name: `odoo.exceptions.${type || "UserError"}`, + debug: "traceback", + arguments: [], + context: context || {}, + subType, + message: description, + }, + }); +} + /** * @param {Element} tree * @param {(node: Element) => any} cb diff --git a/addons/web/static/tests/views/fields/binary_field_tests.js b/addons/web/static/tests/views/fields/binary_field_tests.js index 25b7758b244..6e42e2222aa 100644 --- a/addons/web/static/tests/views/fields/binary_field_tests.js +++ b/addons/web/static/tests/views/fields/binary_field_tests.js @@ -1,6 +1,7 @@ /** @odoo-module **/ import { registerCleanup } from "@web/../tests/helpers/cleanup"; +import { makeServerError } from "@web/../tests/helpers/mock_server"; import { makeMockXHR } from "@web/../tests/helpers/mock_services"; import { click, @@ -12,7 +13,6 @@ import { } from "@web/../tests/helpers/utils"; import { makeView, setupViewRegistries } from "@web/../tests/views/helpers"; import { browser } from "@web/core/browser/browser"; -import { RPCError } from "@web/core/network/rpc_service"; const BINARY_FILE = "R0lGODlhDAAMAKIFAF5LAP/zxAAAANyuAP/gaP///wAAAAAAACH5BAEAAAUALAAAAAAMAAwAAAMlWLPcGjDKFYi9lxKBOaGcF35DhWHamZUW0K4mAbiwWtuf0uxFAgA7"; @@ -482,9 +482,7 @@ QUnit.module("Fields", (hooks) => { serverData.models.partner.onchanges = { document: function (obj) { if (obj.document) { - const error = new RPCError(); - error.exceptionName = "odoo.exceptions.ValidationError"; - throw error; + throw makeServerError({ type: "ValidationError" }); } }, }; diff --git a/addons/web/static/tests/views/fields/many2many_tags_field_tests.js b/addons/web/static/tests/views/fields/many2many_tags_field_tests.js index ca7ab85d064..84710067baf 100644 --- a/addons/web/static/tests/views/fields/many2many_tags_field_tests.js +++ b/addons/web/static/tests/views/fields/many2many_tags_field_tests.js @@ -1,8 +1,6 @@ /** @odoo-module **/ -import { AutoComplete } from "@web/core/autocomplete/autocomplete"; -import { browser } from "@web/core/browser/browser"; -import { many2ManyTagsFieldColorEditable } from "@web/views/fields/many2many_tags/many2many_tags_field"; +import { makeServerError } from "@web/../tests/helpers/mock_server"; import { click, clickDiscard, @@ -19,8 +17,10 @@ import { triggerEvent, triggerHotkey, } from "@web/../tests/helpers/utils"; -import { RPCError } from "@web/core/network/rpc_service"; import { makeView, setupViewRegistries } from "@web/../tests/views/helpers"; +import { AutoComplete } from "@web/core/autocomplete/autocomplete"; +import { browser } from "@web/core/browser/browser"; +import { many2ManyTagsFieldColorEditable } from "@web/views/fields/many2many_tags/many2many_tags_field"; let serverData; let target; @@ -1483,9 +1483,7 @@ QUnit.module("Fields", (hooks) => { arch: '
', mockRPC(route, args) { if (args.method === "name_create") { - const error = new RPCError("Something went wrong"); - error.exceptionName = "odoo.exceptions.ValidationError"; - throw error; + throw makeServerError({ type: "ValidationError" }); } if (args.method === "create") { assert.deepEqual(args.args[0], { diff --git a/addons/web/static/tests/views/fields/many2one_field_tests.js b/addons/web/static/tests/views/fields/many2one_field_tests.js index f5a7366e6d8..7bed8b46668 100644 --- a/addons/web/static/tests/views/fields/many2one_field_tests.js +++ b/addons/web/static/tests/views/fields/many2one_field_tests.js @@ -2,6 +2,7 @@ import { registerCleanup } from "@web/../tests/helpers/cleanup"; import { makeTestEnv } from "@web/../tests/helpers/mock_env"; +import { makeServerError } from "@web/../tests/helpers/mock_server"; import { addRow, click, @@ -26,15 +27,14 @@ import { import { editSearch, getFacetTexts, - toggleSearchBarMenu, toggleMenuItem, + toggleSearchBarMenu, validateSearch, } from "@web/../tests/search/helpers"; import { makeView, makeViewInDialog, setupViewRegistries } from "@web/../tests/views/helpers"; import { createWebClient, doAction } from "@web/../tests/webclient/helpers"; import { browser } from "@web/core/browser/browser"; import { errorService } from "@web/core/errors/error_service"; -import { RPCError } from "@web/core/network/rpc_service"; import { registry } from "@web/core/registry"; import { session } from "@web/session"; import { Field } from "@web/views/fields/field"; @@ -3024,9 +3024,7 @@ QUnit.module("Fields", (hooks) => { arch: '
', mockRPC(route, { args, method }) { if (method === "name_create") { - const error = new RPCError("Something went wrong"); - error.exceptionName = "odoo.exceptions.ValidationError"; - throw error; + throw makeServerError({ type: "ValidationError" }); } if (method === "create") { assert.deepEqual(args[0], { name: "xyz" }); @@ -3067,7 +3065,7 @@ QUnit.module("Fields", (hooks) => { arch: '
', mockRPC(route, { args, method }) { if (method === "name_create") { - return new RPCError("Something went wrong"); + throw makeServerError(); } }, }); @@ -3099,9 +3097,7 @@ QUnit.module("Fields", (hooks) => { arch: '
', mockRPC(route, { args, method }) { if (method === "name_create") { - const error = new RPCError("Something went wrong"); - error.exceptionName = "odoo.exceptions.ValidationError"; - throw error; + throw makeServerError({ type: "ValidationError" }); } if (method === "create") { assert.deepEqual(args[0], { name: "xyz" }); diff --git a/addons/web/static/tests/views/form/form_view_tests.js b/addons/web/static/tests/views/form/form_view_tests.js index c0c2a238156..0cf039b297e 100644 --- a/addons/web/static/tests/views/form/form_view_tests.js +++ b/addons/web/static/tests/views/form/form_view_tests.js @@ -2,6 +2,7 @@ import { Component, EventBus, xml } from "@odoo/owl"; import { registerCleanup } from "@web/../tests/helpers/cleanup"; +import { makeServerError } from "@web/../tests/helpers/mock_server"; import { makeFakeNotificationService } from "@web/../tests/helpers/mock_services"; import { addRow, @@ -32,7 +33,6 @@ import { browser } from "@web/core/browser/browser"; import { WarningDialog } from "@web/core/errors/error_dialogs"; import { errorService } from "@web/core/errors/error_service"; import { localization } from "@web/core/l10n/localization"; -import { RPCError } from "@web/core/network/rpc_service"; import { registry } from "@web/core/registry"; import { scrollerService } from "@web/core/scroller_service"; import { tooltipService } from "@web/core/tooltip/tooltip_service"; @@ -11470,7 +11470,7 @@ QUnit.module("Views", (hooks) => { mockRPC(route, { method }) { if (method === "write") { assert.step("write"); - throw new RPCError("Something went wrong"); + throw makeServerError(); } }, }); @@ -12068,7 +12068,7 @@ QUnit.module("Views", (hooks) => { mockRPC(route, { method }) { if (method === "write") { assert.step("write"); - throw new RPCError("Something went wrong"); + throw makeServerError(); } }, }); @@ -12133,7 +12133,7 @@ QUnit.module("Views", (hooks) => { mockRPC(route, { method }) { if (method === "write") { assert.step("write"); - throw new RPCError("Something went wrong"); + throw makeServerError(); } }, }); @@ -12167,10 +12167,7 @@ QUnit.module("Views", (hooks) => { mockRPC(route, { method }) { if (method === "create") { assert.step("create"); - const error = new RPCError("Some business message"); - error.data = { context: {} }; - error.exceptionName = "odoo.exceptions.UserError"; - throw error; + throw makeServerError({ message: "Some business message" }); } }, }); @@ -13056,7 +13053,7 @@ QUnit.module("Views", (hooks) => { async function (assert) { class TestClientAction extends Component { setup() { - throw new RPCError("Something went wrong"); + throw new Error("Something went wrong"); } } TestClientAction.template = xml`
`; @@ -13139,7 +13136,7 @@ QUnit.module("Views", (hooks) => { async function (assert) { class TestClientAction extends Component { setup() { - throw new RPCError("Something went wrong"); + throw new Error("Something went wrong"); } } TestClientAction.template = xml`
`; diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js index 9f18080867d..0e3b7afa64b 100644 --- a/addons/web/static/tests/views/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban_view_tests.js @@ -1,5 +1,6 @@ /** @odoo-module **/ +import { makeServerError } from "@web/../tests/helpers/mock_server"; import { makeFakeDialogService } from "@web/../tests/helpers/mock_services"; import { click, @@ -19,10 +20,10 @@ import { triggerHotkey, } from "@web/../tests/helpers/utils"; import { - getVisibleButtons, getFacetTexts, getPagerLimit, getPagerValue, + getVisibleButtons, pagerNext, toggleSearchBarMenu, validateSearch, @@ -31,22 +32,21 @@ import { makeView, setupViewRegistries } from "@web/../tests/views/helpers"; import { createWebClient, doAction } from "@web/../tests/webclient/helpers"; import { browser } from "@web/core/browser/browser"; import { dialogService } from "@web/core/dialog/dialog_service"; -import { makeErrorFromResponse, RPCError } from "@web/core/network/rpc_service"; import { registry } from "@web/core/registry"; import { tooltipService } from "@web/core/tooltip/tooltip_service"; import { nbsp } from "@web/core/utils/strings"; import { getNextTabableElement } from "@web/core/utils/ui"; import { session } from "@web/session"; -import { AnimatedNumber } from "@web/views/view_components/animated_number"; import { KanbanController } from "@web/views/kanban/kanban_controller"; import { kanbanView } from "@web/views/kanban/kanban_view"; import { DynamicRecordList } from "@web/views/relational_model"; import { ViewButton } from "@web/views/view_button/view_button"; +import { AnimatedNumber } from "@web/views/view_components/animated_number"; import { Component, onWillRender, xml } from "@odoo/owl"; -import { SampleServer } from "@web/views/sample_server"; import { pick } from "@web/core/utils/objects"; import { KanbanDynamicGroupList } from "@web/views/kanban/kanban_model"; +import { SampleServer } from "@web/views/sample_server"; const serviceRegistry = registry.category("services"); const viewWidgetRegistry = registry.category("view_widgets"); @@ -3746,16 +3746,7 @@ QUnit.module("Views", (hooks) => { groupBy: ["product_id"], async mockRPC(route, args) { if (args.method === "name_create") { - throw makeErrorFromResponse({ - code: 200, - message: "Odoo Server Error", - data: { - name: "odoo.exceptions.UserError", - debug: "traceback", - arguments: ["This is a user error"], - context: {}, - }, - }); + throw makeServerError({ message: "This is a user error" }); } }, }); @@ -3801,16 +3792,7 @@ QUnit.module("Views", (hooks) => { groupBy: ["product_id"], async mockRPC(route, args) { if (args.method === "name_create") { - throw makeErrorFromResponse({ - code: 200, - message: "Odoo Server Error", - data: { - name: "odoo.exceptions.UserError", - debug: "traceback", - arguments: ["This is a user error"], - context: {}, - }, - }); + throw makeServerError({ message: "This is a user error" }); } }, }); @@ -3848,16 +3830,7 @@ QUnit.module("Views", (hooks) => { `, async mockRPC(route, args) { if (args.method === "name_create") { - throw makeErrorFromResponse({ - code: 200, - message: "Odoo Server Error", - data: { - name: "odoo.exceptions.UserError", - debug: "traceback", - arguments: ["This is a user error"], - context: {}, - }, - }); + throw makeServerError({ message: "This is a user error" }); } if (args.method === "create") { assert.deepEqual(args.args[0], { foo: "blip" }); @@ -3907,16 +3880,7 @@ QUnit.module("Views", (hooks) => { `, async mockRPC(route, args) { if (args.method === "name_create") { - throw makeErrorFromResponse({ - code: 200, - message: "Odoo Server Error", - data: { - name: "odoo.exceptions.UserError", - debug: "traceback", - arguments: ["This is a user error"], - context: {}, - }, - }); + throw makeServerError({ message: "This is a user error" }); } if (args.method === "create") { assert.deepEqual(args.args[0], { state: "abc" }); @@ -12719,7 +12683,7 @@ QUnit.module("Views", (hooks) => { async mockRPC(route, { method }) { assert.step(method || route); if (method === "name_create") { - throw new RPCError(); + throw makeServerError(); } }, }); diff --git a/addons/web/static/tests/webclient/actions/window_action_tests.js b/addons/web/static/tests/webclient/actions/window_action_tests.js index 0ef56759ca4..ebfc48a9610 100644 --- a/addons/web/static/tests/webclient/actions/window_action_tests.js +++ b/addons/web/static/tests/webclient/actions/window_action_tests.js @@ -1,31 +1,31 @@ /** @odoo-module **/ +import { makeServerError } from "@web/../tests/helpers/mock_server"; +import { fakeCookieService, makeFakeUserService } from "@web/../tests/helpers/mock_services"; +import * as cpHelpers from "@web/../tests/search/helpers"; import { browser } from "@web/core/browser/browser"; +import { WarningDialog } from "@web/core/errors/error_dialogs"; import { registry } from "@web/core/registry"; +import { session } from "@web/session"; import { editView } from "@web/views/debug_items"; -import { clearUncommittedChanges } from "@web/webclient/actions/action_service"; import { listView } from "@web/views/list/list_view"; import { useSetupAction } from "@web/webclient/actions/action_hook"; +import { clearUncommittedChanges } from "@web/webclient/actions/action_service"; import testUtils from "web.test_utils"; -import { session } from "@web/session"; +import { errorService } from "../../../src/core/errors/error_service"; +import { registerCleanup } from "../../helpers/cleanup"; import { click, - getFixture, + clickSave, editInput, + getFixture, getNodesTextContent, legacyExtraNextTick, makeDeferred, nextTick, patchWithCleanup, - clickSave, } from "../../helpers/utils"; import { createWebClient, doAction, getActionManagerServerData, loadState } from "./../helpers"; -import { errorService } from "../../../src/core/errors/error_service"; -import { RPCError } from "@web/core/network/rpc_service"; -import { registerCleanup } from "../../helpers/cleanup"; -import { WarningDialog } from "@web/core/errors/error_dialogs"; -import { makeFakeUserService, fakeCookieService } from "@web/../tests/helpers/mock_services"; -import * as cpHelpers from "@web/../tests/search/helpers"; import { onMounted } from "@odoo/owl"; let serverData; @@ -2181,10 +2181,7 @@ QUnit.module("ActionManager", (hooks) => { const mockRPC = (route, args) => { if (args.method === "onchange" && args.model === "partner") { - const error = new RPCError(); - error.exceptionName = "odoo.exceptions.ValidationError"; - error.code = 200; - return Promise.reject(error); + throw makeServerError({ type: "ValidationError" }); } };