diff --git a/addons/web/static/src/js/views/calendar/calendar_model.js b/addons/web/static/src/js/views/calendar/calendar_model.js index fa2931a6d19..430b72f8a60 100644 --- a/addons/web/static/src/js/views/calendar/calendar_model.js +++ b/addons/web/static/src/js/views/calendar/calendar_model.js @@ -307,7 +307,7 @@ return AbstractModel.extend({ * Toggle the sidebar (containing the mini calendar) */ toggleFullWidth: function () { - var fullWidth = this.call('local_storage', 'getItem', 'calendar_fullWidth') !== 'true'; + var fullWidth = this.call('local_storage', 'getItem', 'calendar_fullWidth') !== true; this.call('local_storage', 'setItem', 'calendar_fullWidth', fullWidth); }, /** @@ -439,7 +439,7 @@ return AbstractModel.extend({ */ _loadCalendar: function () { var self = this; - this.data.fullWidth = this.call('local_storage', 'getItem', 'calendar_fullWidth') === 'true'; + this.data.fullWidth = this.call('local_storage', 'getItem', 'calendar_fullWidth') === true; this.data.fc_options = this._getFullCalendarOptions(); var defs = _.map(this.data.filters, this._loadFilter.bind(this)); diff --git a/addons/web/static/tests/views/calendar_tests.js b/addons/web/static/tests/views/calendar_tests.js index e97845ea7e4..593a376991e 100644 --- a/addons/web/static/tests/views/calendar_tests.js +++ b/addons/web/static/tests/views/calendar_tests.js @@ -1,11 +1,13 @@ odoo.define('web.calendar_tests', function (require) { "use strict"; +var AbstractStorageService = require('web.AbstractStorageService'); var CalendarView = require('web.CalendarView'); var CalendarRenderer = require('web.CalendarRenderer'); var Dialog = require('web.Dialog'); var fieldUtils = require('web.field_utils'); var mixins = require('web.mixins'); +var RamStorage = require('web.RamStorage'); var testUtils = require('web.test_utils'); var time = require('web.time'); var session = require('web.session'); @@ -2604,6 +2606,44 @@ QUnit.module('Views', { calendar.destroy(); }); + QUnit.test('calendar sidebar toggle', function (assert) { + assert.expect(5); + + var calendar = createView({ + View: CalendarView, + model: 'event', + data: this.data, + arch: + ''+ + ''+ + '', + services: { + local_storage: AbstractStorageService.extend({storage: new RamStorage()}), + }, + }); + + var fullWidth = calendar.call('local_storage', 'getItem', 'calendar_fullWidth'); + assert.strictEqual(fullWidth, undefined, + "calendar_fullWidth should be undefined in local storage"); + assert.containsNone(calendar, '.o_calendar_sidebar_container.o_sidebar_hidden', + "sidebar should be opened"); + + // click on close + testUtils.dom.click(calendar.$('.o_calendar_sidebar_toggler')); + fullWidth = calendar.call('local_storage', 'getItem', 'calendar_fullWidth'); + assert.strictEqual(fullWidth, true, + "calendar_fullWidth should be true in local storage"); + assert.containsOnce(calendar, '.o_calendar_sidebar_container.o_sidebar_hidden', + "sidebar should be hidden"); + + // reload calendar view and check calendar view has still full width + calendar.reload(); + assert.containsOnce(calendar, '.o_calendar_sidebar_container.o_sidebar_hidden', + "sidebar should be hidden"); + + calendar.destroy(); + }); + }); });