From 84130174df8fbe9b26d2ee96d3c178ae5d485c94 Mon Sep 17 00:00:00 2001 From: Hetal Dhanak Date: Wed, 22 May 2019 12:48:47 +0000 Subject: [PATCH] [FIX] web: make calendar toggle full width work toggle full width of calendar not working, this is because getItem of localstorage service now returns parsed value, AbstractStorageService now return JSON.parse(value) this commit fixes that. task-1975004 closes odoo/odoo#33570 Signed-off-by: Aaron Bohy (aab) Co-authored-by: Priyanka Kaakdiya --- .../src/js/views/calendar/calendar_model.js | 4 +- .../web/static/tests/views/calendar_tests.js | 40 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) 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(); + }); + }); });