click to add a partner
', + help: markup('click to add a partner
'), }, }, }); @@ -886,18 +890,18 @@ odoo.define("board.dashboard_tests", function (require) { views: [[false, "list"]], }); - assert.containsOnce(webClient, ".o_list_view", "should display the list view"); + assert.containsOnce(target, ".o_list_view", "should display the list view"); // Sort the list await testUtils.dom.click($(".o_column_sortable")); // Group It - await toggleGroupByMenu(webClient); - await toggleAddCustomGroup(webClient); - await applyGroup(webClient); + await toggleGroupByMenu(target); + await toggleAddCustomGroup(target); + await applyGroup(target); // add this action to dashboard - await toggleFavoriteMenu(webClient); + await toggleFavoriteMenu(target); await testUtils.dom.triggerEvent($(".o_add_to_board button.dropdown-toggle"), "mouseenter"); await testUtils.fields.editInput($(".o_add_to_board input"), "a name"); @@ -949,32 +953,32 @@ odoo.define("board.dashboard_tests", function (require) { var filter_count = 0; // Add a first filter - await toggleFilterMenu(webClient); - await toggleAddCustomFilter(webClient); - await editConditionValue(webClient, 0, "a"); - await applyFilter(webClient); + await toggleFilterMenu(target); + await toggleAddCustomFilter(target); + await editConditionValue(target, 0, "a"); + await applyFilter(target); // Add it to dashboard - await toggleFavoriteMenu(webClient); + await toggleFavoriteMenu(target); await testUtils.dom.triggerEvent($(".o_add_to_board button.dropdown-toggle"), "mouseenter"); await testUtils.dom.click($(".o_add_to_board .dropdown-menu button")); // Remove it - await testUtils.dom.click(webClient.el.querySelector(".o_facet_remove")); + await testUtils.dom.click(target.querySelector(".o_facet_remove")); // Add the second filter - await toggleFilterMenu(webClient); - await toggleAddCustomFilter(webClient); - await editConditionValue(webClient, 0, "b"); - await applyFilter(webClient); + await toggleFilterMenu(target); + await toggleAddCustomFilter(target); + await editConditionValue(target, 0, "b"); + await applyFilter(target); // Add it to dashboard - await toggleFavoriteMenu(webClient); + await toggleFavoriteMenu(target); await testUtils.dom.triggerEvent( - webClient.el.querySelector(".o_add_to_board button.dropdown-toggle"), + target.querySelector(".o_add_to_board button.dropdown-toggle"), "mouseenter" ); await testUtils.dom.click( - webClient.el.querySelector(".o_add_to_board .dropdown-menu button") + target.querySelector(".o_add_to_board .dropdown-menu button") ); }); @@ -1012,19 +1016,19 @@ odoo.define("board.dashboard_tests", function (require) { }); // Add a filter - await toggleFilterMenu(webClient); - await toggleAddCustomFilter(webClient); - await editConditionValue(webClient, 0, "b"); - await applyFilter(webClient); + await toggleFilterMenu(target); + await toggleAddCustomFilter(target); + await editConditionValue(target, 0, "b"); + await applyFilter(target); // Add it to dashboard - await toggleFavoriteMenu(webClient); + await toggleFavoriteMenu(target); await testUtils.dom.triggerEvent( - webClient.el.querySelector(".o_add_to_board button.dropdown-toggle"), + target.querySelector(".o_add_to_board button.dropdown-toggle"), "mouseenter" ); // add await testUtils.dom.click( - webClient.el.querySelector(".o_add_to_board .dropdown-menu button") + target.querySelector(".o_add_to_board .dropdown-menu button") ); }); @@ -1253,19 +1257,19 @@ odoo.define("board.dashboard_tests", function (require) { }); // filter on July 2020 - await toggleFilterMenu(webClient); - await toggleMenuItem(webClient, "Date"); - await toggleMenuItemOption(webClient, "Date", "July"); + await toggleFilterMenu(target); + await toggleMenuItem(target, "Date"); + await toggleMenuItemOption(target, "Date", "July"); // compare July 2020 to June 2020 - await toggleComparisonMenu(webClient); - await toggleMenuItem(webClient, 0); + await toggleComparisonMenu(target); + await toggleMenuItem(target, 0); // add the view to the dashboard - await toggleFavoriteMenu(webClient); + await toggleFavoriteMenu(target); - await mouseEnter(webClient.el.querySelector(".o_add_to_board .dropdown-toggle")); - const input = webClient.el.querySelector(".o_add_to_board .dropdown-menu input"); + await mouseEnter(target.querySelector(".o_add_to_board .dropdown-toggle")); + const input = target.querySelector(".o_add_to_board .dropdown-menu input"); await testUtils.fields.editInput(input, "Pipeline"); await testUtils.dom.click($(".o_add_to_board div button")); @@ -1301,9 +1305,9 @@ odoo.define("board.dashboard_tests", function (require) { views: [[false, "pivot"]], }); - await toggleFavoriteMenu(webClient.el); - await mouseEnter(webClient.el.querySelector(".o_add_to_board .dropdown-toggle")); - const input = webClient.el.querySelector(".o_add_to_board .dropdown-menu input"); + await toggleFavoriteMenu(target); + await mouseEnter(target.querySelector(".o_add_to_board .dropdown-toggle")); + const input = target.querySelector(".o_add_to_board .dropdown-menu input"); await testUtils.fields.editInput(input, "Pipeline"); await triggerEvent(input, null, "keydown", { key: "Enter" }); @@ -1411,9 +1415,9 @@ odoo.define("board.dashboard_tests", function (require) { context: { search_default_filter: 1 }, }); - await toggleFavoriteMenu(webClient.el); - await mouseEnter(webClient.el.querySelector(".o_add_to_board .dropdown-toggle")); - const input = webClient.el.querySelector(".o_add_to_board .dropdown-menu input"); + await toggleFavoriteMenu(target); + await mouseEnter(target.querySelector(".o_add_to_board .dropdown-toggle")); + const input = target.querySelector(".o_add_to_board .dropdown-menu input"); await testUtils.fields.editInput(input, "Pipeline"); await triggerEvent(input, null, "keydown", { key: "Enter" }); }); diff --git a/addons/bus/static/tests/assets_watchdog_tests.js b/addons/bus/static/tests/assets_watchdog_tests.js index 4a472cb2342..5c85599dbc8 100644 --- a/addons/bus/static/tests/assets_watchdog_tests.js +++ b/addons/bus/static/tests/assets_watchdog_tests.js @@ -7,25 +7,24 @@ import * as AbstractStorageService from "web.AbstractStorageService"; import { createWebClient } from "@web/../tests/webclient/helpers"; import { assetsWatchdogService } from "@bus/js/services/assets_watchdog_service"; -import { click, nextTick, patchWithCleanup } from "@web/../tests/helpers/utils"; +import { click, getFixture, nextTick, patchWithCleanup } from "@web/../tests/helpers/utils"; import { browser } from "@web/core/browser/browser"; import { registry } from "@web/core/registry"; const LocalStorageService = AbstractStorageService.extend({ storage: new RamStorage(), }); -const mainComponentRegistry = registry.category("main_components"); const serviceRegistry = registry.category("services"); QUnit.module("Bus Assets WatchDog", (hooks) => { let legacyServicesRegistry; + let target; hooks.beforeEach((assert) => { legacyServicesRegistry = new legacyRegistry(); legacyServicesRegistry.add("bus_service", BusService); legacyServicesRegistry.add("local_storage", LocalStorageService); serviceRegistry.add("assetsWatchdog", assetsWatchdogService); - patchWithCleanup(browser, { setTimeout: (fn) => fn(), clearTimeout: () => {}, @@ -33,6 +32,8 @@ QUnit.module("Bus Assets WatchDog", (hooks) => { reload: () => assert.step("reloadPage"), }, }); + + target = getFixture(); }); QUnit.test("can listen on bus and displays notifications in DOM", async (assert) => { @@ -54,21 +55,21 @@ QUnit.module("Bus Assets WatchDog", (hooks) => { } }; - const webClient = await createWebClient({ + await createWebClient({ legacyParams: { serviceRegistry: legacyServicesRegistry }, mockRPC, }); await nextTick(); - assert.containsOnce(webClient.el, ".o_notification_body"); + assert.containsOnce(target, ".o_notification_body"); assert.strictEqual( - webClient.el.querySelector(".o_notification_body .o_notification_content").textContent, + target.querySelector(".o_notification_body .o_notification_content").textContent, "The page appears to be out of date." ); // reload by clicking on the reload button - await click(webClient.el, ".o_notification_buttons .btn-primary"); + await click(target, ".o_notification_buttons .btn-primary"); assert.verifySteps(["reloadPage"]); }); }); diff --git a/addons/calendar/static/tests/calendar_notification_tests.js b/addons/calendar/static/tests/calendar_notification_tests.js index 6d23ae8268c..3992dc5bcb7 100644 --- a/addons/calendar/static/tests/calendar_notification_tests.js +++ b/addons/calendar/static/tests/calendar_notification_tests.js @@ -7,7 +7,7 @@ import * as AbstractStorageService from "web.AbstractStorageService"; import { createWebClient } from "@web/../tests/webclient/helpers"; import { calendarNotificationService } from "@calendar/js/services/calendar_notification_service"; -import { click, nextTick, patchWithCleanup } from "@web/../tests/helpers/utils"; +import { click, getFixture, nextTick, patchWithCleanup } from "@web/../tests/helpers/utils"; import { browser } from "@web/core/browser/browser"; import { registry } from "@web/core/registry"; @@ -18,7 +18,10 @@ const serviceRegistry = registry.category("services"); QUnit.module("Calendar Notification", (hooks) => { let legacyServicesRegistry; + let target; hooks.beforeEach(() => { + target = getFixture(); + legacyServicesRegistry = new legacyRegistry(); legacyServicesRegistry.add("bus_service", BusService); legacyServicesRegistry.add("local_storage", LocalStorageService); @@ -69,23 +72,23 @@ QUnit.module("Calendar Notification", (hooks) => { } }; - const webClient = await createWebClient({ + await createWebClient({ legacyParams: { serviceRegistry: legacyServicesRegistry }, mockRPC, }); await nextTick(); - assert.containsOnce(webClient.el, ".o_notification_body"); + assert.containsOnce(target, ".o_notification_body"); assert.strictEqual( - webClient.el.querySelector(".o_notification_body .o_notification_content") + target.querySelector(".o_notification_body .o_notification_content") .textContent, "Very old meeting message" ); - await click(webClient.el.querySelector(".o_notification_buttons .btn")); + await click(target.querySelector(".o_notification_buttons .btn")); assert.verifySteps(["notifyAck"]); - assert.containsNone(webClient.el, ".o_notification"); + assert.containsNone(target, ".o_notification"); } ); @@ -139,23 +142,23 @@ QUnit.module("Calendar Notification", (hooks) => { }; serviceRegistry.add("action", fakeActionService, { force: true }); - const webClient = await createWebClient({ + await createWebClient({ legacyParams: { serviceRegistry: legacyServicesRegistry }, mockRPC, }); await nextTick(); - assert.containsOnce(webClient.el, ".o_notification_body"); + assert.containsOnce(target, ".o_notification_body"); assert.strictEqual( - webClient.el.querySelector(".o_notification_body .o_notification_content") + target.querySelector(".o_notification_body .o_notification_content") .textContent, "Very old meeting message" ); - await click(webClient.el.querySelectorAll(".o_notification_buttons .btn")[1]); + await click(target.querySelectorAll(".o_notification_buttons .btn")[1]); assert.verifySteps(["calendar.action_calendar_event_notify"]); - assert.containsNone(webClient.el, ".o_notification"); + assert.containsNone(target, ".o_notification"); } ); @@ -197,23 +200,23 @@ QUnit.module("Calendar Notification", (hooks) => { } }; - const webClient = await createWebClient({ + await createWebClient({ legacyParams: { serviceRegistry: legacyServicesRegistry }, mockRPC, }); await nextTick(); - assert.containsOnce(webClient.el, ".o_notification_body"); + assert.containsOnce(target, ".o_notification_body"); assert.strictEqual( - webClient.el.querySelector(".o_notification_body .o_notification_content") + target.querySelector(".o_notification_body .o_notification_content") .textContent, "Very old meeting message" ); - await click(webClient.el.querySelectorAll(".o_notification_buttons .btn")[2]); + await click(target.querySelectorAll(".o_notification_buttons .btn")[2]); assert.verifySteps([], "should only close the notification withtout calling a rpc"); - assert.containsNone(webClient.el, ".o_notification"); + assert.containsNone(target, ".o_notification"); } ); }); diff --git a/addons/crm/static/tests/forecast_view_tests.js b/addons/crm/static/tests/forecast_view_tests.js index b1bfcb86b3f..2d078b3b50c 100644 --- a/addons/crm/static/tests/forecast_view_tests.js +++ b/addons/crm/static/tests/forecast_view_tests.js @@ -1,6 +1,6 @@ /** @odoo-module **/ -import { legacyExtraNextTick, patchWithCleanup } from "@web/../tests/helpers/utils"; +import { getFixture, legacyExtraNextTick, patchWithCleanup } from "@web/../tests/helpers/utils"; import { setupControlPanelServiceRegistry, switchView, @@ -29,6 +29,7 @@ const forecastDomain = (forecastStart) => { }; let serverData; +let target; QUnit.module("Views", (hooks) => { hooks.beforeEach(async () => { serverData = { @@ -66,6 +67,8 @@ QUnit.module("Views", (hooks) => { }; setupControlPanelServiceRegistry(); serviceRegistry.add("dialog", dialogService); + + target = getFixture(); }); QUnit.module("Forecast views"); @@ -241,24 +244,24 @@ QUnit.module("Views", (hooks) => { }, }); - assert.containsOnce(webClient, ".o_switch_view.o_graph.active"); + assert.containsOnce(target, ".o_switch_view.o_graph.active"); - await toggleGroupByMenu(webClient); - await toggleMenuItem(webClient, "Date Field"); - await toggleMenuItemOption(webClient, "Date Field", "Quarter"); + await toggleGroupByMenu(target); + await toggleMenuItem(target, "Date Field"); + await toggleMenuItemOption(target, "Date Field", "Quarter"); - await switchView(webClient, "legacy_toy"); + await switchView(target, "legacy_toy"); await legacyExtraNextTick(); - assert.containsOnce(webClient, ".o_switch_view.o_legacy_toy.active"); + assert.containsOnce(target, ".o_switch_view.o_legacy_toy.active"); - await cpHelpers.toggleGroupByMenu(webClient); - await toggleMenuItem(webClient, "Date Field"); - await toggleMenuItemOption(webClient, "Date Field", "Year"); + await cpHelpers.toggleGroupByMenu(target); + await toggleMenuItem(target, "Date Field"); + await toggleMenuItemOption(target, "Date Field", "Year"); - await switchView(webClient, "graph"); + await switchView(target, "graph"); - assert.containsOnce(webClient, ".o_switch_view.o_graph.active"); + assert.containsOnce(target, ".o_switch_view.o_graph.active"); // second doAction legacy_toy -> forecast_graph -> legacy_toy @@ -277,24 +280,24 @@ QUnit.module("Views", (hooks) => { }); await legacyExtraNextTick(); - assert.containsOnce(webClient, ".o_switch_view.o_legacy_toy.active"); + assert.containsOnce(target, ".o_switch_view.o_legacy_toy.active"); - await cpHelpers.toggleGroupByMenu(webClient); - await toggleMenuItem(webClient, "Date Field"); - await toggleMenuItemOption(webClient, "Date Field", "Quarter"); + await cpHelpers.toggleGroupByMenu(target); + await toggleMenuItem(target, "Date Field"); + await toggleMenuItemOption(target, "Date Field", "Quarter"); - await switchView(webClient, "graph"); + await switchView(target, "graph"); - assert.containsOnce(webClient, ".o_switch_view.o_graph.active"); + assert.containsOnce(target, ".o_switch_view.o_graph.active"); - await toggleGroupByMenu(webClient); - await toggleMenuItem(webClient, "Date Field"); - await toggleMenuItemOption(webClient, "Date Field", "Year"); + await toggleGroupByMenu(target); + await toggleMenuItem(target, "Date Field"); + await toggleMenuItemOption(target, "Date Field", "Year"); - await switchView(webClient, "legacy_toy"); + await switchView(target, "legacy_toy"); await legacyExtraNextTick(); - assert.containsOnce(webClient, ".o_switch_view.o_legacy_toy.active"); + assert.containsOnce(target, ".o_switch_view.o_legacy_toy.active"); unpatchDate(); } diff --git a/addons/event_sale/static/tests/event_configurator.test.js b/addons/event_sale/static/tests/event_configurator.test.js index 59920a54b82..7a462379bb7 100644 --- a/addons/event_sale/static/tests/event_configurator.test.js +++ b/addons/event_sale/static/tests/event_configurator.test.js @@ -77,6 +77,9 @@ odoo.define('event.configurator.tests', function (require) { } }, function (){ QUnit.test('Select a regular product and verify that the event configurator is not opened', async function (assert) { + // When the module event_booth_sale is installed, it will also call the rpc: read/detailed_type when selecting a product. + // This means that 2 asserts are done when this module is installed. + // Note that: this test will fail if the module event_booth_sale is not installed. assert.expect(2); var form = await createView({ diff --git a/addons/google_drive/static/src/xml/gdrive.xml b/addons/google_drive/static/src/xml/gdrive.xml index db1e3a11c8a..c7765d78a0f 100644 --- a/addons/google_drive/static/src/xml/gdrive.xml +++ b/addons/google_drive/static/src/xml/gdrive.xml @@ -6,7 +6,7 @@ role="menuitem" class="o_menu_item oe_share_gdoc_item dropdown-item" > - + diff --git a/addons/google_spreadsheet/static/src/add_to_google_spreadsheet/add_to_google_spreadsheet.js b/addons/google_spreadsheet/static/src/add_to_google_spreadsheet/add_to_google_spreadsheet.js index 970b6e83ff1..589c127f58d 100644 --- a/addons/google_spreadsheet/static/src/add_to_google_spreadsheet/add_to_google_spreadsheet.js +++ b/addons/google_spreadsheet/static/src/add_to_google_spreadsheet/add_to_google_spreadsheet.js @@ -1,5 +1,6 @@ /** @odoo-module **/ +import { DropdownItem } from "@web/core/dropdown/dropdown_item"; import { registry } from "@web/core/registry"; import { useService } from "@web/core/utils/hooks"; @@ -41,6 +42,7 @@ export class AddToGoogleSpreadsheet extends Component { } AddToGoogleSpreadsheet.template = "google_spreadsheet.AddToGoogleSpreadsheet"; +AddToGoogleSpreadsheet.components = { DropdownItem }; const addToGoogleSpreadsheetItem = { Component: AddToGoogleSpreadsheet, diff --git a/addons/google_spreadsheet/static/src/add_to_google_spreadsheet/add_to_google_spreadsheet.xml b/addons/google_spreadsheet/static/src/add_to_google_spreadsheet/add_to_google_spreadsheet.xml index b5ce85aa399..b32a7a4621f 100644 --- a/addons/google_spreadsheet/static/src/add_to_google_spreadsheet/add_to_google_spreadsheet.xml +++ b/addons/google_spreadsheet/static/src/add_to_google_spreadsheet/add_to_google_spreadsheet.xml @@ -2,7 +2,7 @@