[MIG] web_responsive test to 11.0

pull/1390/head
Minh H.G 2017-10-22 19:44:08 +08:00 committed by Alexandre Díaz
parent d1f6d20444
commit dbb13fd15a
2 changed files with 227 additions and 186 deletions

View File

@ -1,275 +1,315 @@
/* Copyright 2016 LasLabs Inc. /* Copyright 2016 LasLabs Inc.
* License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */ * License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */
odoo.define_section('web_responsive', ['web_responsive'], function(test) { odoo.define('web_responsive.test', function(require) {
"use strict"; "use strict";
// It provides a base drawer compatible interface for testing var core = require('web.core');
self.initInterface = function(AppDrawer) { var responsive = require('web_responsive');
var $el = $('<div class="drawer drawer--left">'); QUnit.module('web_responsive', {
$el.append( beforeEach: function() {
$('<header role="banner">') var $el = $(
.append( '<div class="drawer drawer--left">' +
$('<button class="drawer-toggle"><span class="drawer-hamburger-icon">') '<header role="banner">' +
) '<button class="drawer-toggle">' +
.append( '<span class="drawer-hamburger-icon"/>' +
$('<nav class="drawer-nav"><ul class="drawer-menu"><li class="drawer-menu-item">') '</button>' +
) '<nav class="drawer-nav">' +
.append( '<ul class="drawer-menu">' +
$('<div class="panel-title" id="appDrawerAppPanelHead">') '<li class="drawer-menu-item"/>' +
) '</ul>' +
).append($('<main role="main">')); '</nav>' +
'<div class="panel-title" id="appDrawerAppPanelHead"></div>' +
'</header>' +
'<main role="main"></main>' +
'<a class="oe_menu_leaf"/>' +
'<div>' +
'<div class="o_sub_menu_content"></div>' +
'</div>' +
'<div class="dropdown-scrollable"></div>' +
'</div>'
);
self.$clickZone = $('<a class="oe_menu_leaf">'); this.$clickZone = $el.find('a.oe_menu_leaf');
this.$secondaryMenu = $el.find('div.o_sub_menu_content').parent();
this.$dropdown = $el.find('div.dropdown-scrollable');
self.$secondaryMenu = $('<div><div class="o_sub_menu_content">'); this.document = $("#qunit-fixture");
this.document.append($el);
self.$dropdown = $('<div class="dropdown-scrollable">'); this.drawer = new responsive.AppDrawer();
},
$el.append(self.$clickZone) linkGrid: function() {
.append(self.$secondaryMenu)
.append(self.$dropdown);
var $document = $("#qunit-fixture");
$document.append($el);
self.drawer = new AppDrawer.AppDrawer();
return $document;
};
self.linkGrid = function() {
for(var i = 0; i < 3; i++){ for(var i = 0; i < 3; i++){
self.drawer.$el.append( this.drawer.$el.append(
$('<div class="row">').append( $('<div class="row">').append(
$('<a class="col-md-6" id="a_' + i + '"><span class="app-drawer-icon-app /></a>' + $('<a class="col-md-6" id="a_' + i + '"><span class="app-drawer-icon-app /></a>' +
'<a class="col-md-6" id="b_' + i + '"><span class="app-drawer-icon-app /></a>' '<a class="col-md-6" id="b_' + i + '"><span class="app-drawer-icon-app /></a>'
) )
) )
); );
self.drawer.$appLinks = $('a.col-md-6'); this.drawer.$appLinks = this.drawer.$el.find('a.col-md-6');
} }
}; }
});
test('It should set initialized after success init', QUnit.test('It should set initialized after success init',
function(assert, AppDrawer) { function(assert) {
self.initInterface(AppDrawer); assert.expect(1);
assert.ok(self.drawer.initialized);
assert.ok(this.drawer.initialized);
} }
); );
test('It should close drawer after click on clickZone', QUnit.test('It should close drawer after click on clickZone',
{asserts: 1}, function(assert) {
function(assert, AppDrawer) { assert.expect(1);
self.initInterface(AppDrawer);
self.$clickZone.click(); this.$clickZone.click();
var self = this;
var d = $.Deferred(); var d = $.Deferred();
setTimeout(function() { setTimeout(function() {
assert.ok(self.drawer.$el.hasClass('drawer-close')); assert.ok(self.drawer.$el.hasClass('drawer-close'));
d.resolve(); d.resolve();
}, 100); }, 100);
return d; return d;
} }
); );
test('It should collapse open secondary menus during handleClickZones', QUnit.test('It should collapse open secondary menus during handleClickZones',
{asserts: 1}, function(assert) {
function(assert, AppDrawer) { assert.expect(1);
self.initInterface(AppDrawer);
self.$clickZone.click(); this.$clickZone.click();
var self = this;
var d = $.Deferred(); var d = $.Deferred();
setTimeout(function() { setTimeout(function() {
assert.equal(self.$secondaryMenu.attr('aria-expanded'), 'false'); assert.equal(self.$secondaryMenu.attr('aria-expanded'), 'false');
d.resolve(); d.resolve();
}, 100); }, 200);
return d; return d;
} }
); );
test('It should update max-height on scrollable dropdowns', QUnit.test('It should update max-height on scrollable dropdowns',
function(assert, AppDrawer) { function(assert) {
self.initInterface(AppDrawer); assert.expect(1);
self.drawer.handleWindowResize();
var height = $(window).height() * self.drawer.dropdownHeightFactor; this.drawer.handleWindowResize();
assert.equal(
self.$dropdown.css('max-height'), var height = $(window).height() * this.drawer.dropdownHeightFactor;
height + 'px' var actual = parseFloat(this.$dropdown.css('max-height'));
);
var pass = Math.abs(actual - height) < 0.001;
assert.pushResult({
result: pass,
actual: actual,
expect: height,
message: ''
});
} }
); );
test('It should return keybuffer + new key', QUnit.test('It should return keybuffer + new key',
function(assert, AppDrawer) { function(assert) {
self.initInterface(AppDrawer); assert.expect(1);
self.drawer.keyBuffer = 'TES';
var res = self.drawer.handleKeyBuffer(84); this.drawer.keyBuffer = 'TES';
var res = this.drawer.handleKeyBuffer(84);
assert.equal(res, 'TEST'); assert.equal(res, 'TEST');
} }
); );
test('It should clear keybuffer after timeout', QUnit.test('It should clear keybuffer after timeout',
{asserts: 1}, function(assert) {
function(assert, AppDrawer) { assert.expect(1);
self.initInterface(AppDrawer);
self.drawer.keyBuffer = 'TES'; this.drawer.keyBuffer = 'TES';
self.drawer.keyBufferTime = 10; this.drawer.keyBufferTime = 10;
self.drawer.handleKeyBuffer(84); this.drawer.handleKeyBuffer(84);
var self = this;
var d = $.Deferred(); var d = $.Deferred();
setTimeout(function() { setTimeout(function() {
assert.equal(self.drawer.keyBuffer, ""); assert.equal(self.drawer.keyBuffer, "");
d.resolve(); d.resolve();
}, 100); }, 100);
return d; return d;
} }
); );
test('It should trigger core bus event for drawer close', QUnit.test('It should trigger core bus event for drawer close',
['web.core'], {asserts: 1}, function(assert) {
function(assert, AppDrawer, core) { assert.expect(1);
self.initInterface(AppDrawer);
self.drawer.onDrawerOpen(); this.drawer.onDrawerOpen();
var d = $.Deferred(); var d = $.Deferred();
core.bus.on('drawer.closed', this, function() { core.bus.on('drawer.closed', this, function() {
assert.ok(true); assert.ok(true);
d.resolve(); d.resolve();
}); });
self.drawer.$el.trigger({type: 'drawer.closed'});
this.drawer.$el.trigger({type: 'drawer.closed'});
return d; return d;
} }
); );
test('It should set isOpen to false when closing', QUnit.test('It should set isOpen to false when closing',
{asserts: 1}, function(assert) {
function(assert, AppDrawer) { assert.expect(1);
self.initInterface(AppDrawer);
self.drawer.onDrawerOpen(); this.drawer.onDrawerOpen();
var self = this;
var d = $.Deferred(); var d = $.Deferred();
setTimeout(function() { setTimeout(function() {
assert.equal(self.drawer.isOpen, false); assert.equal(self.drawer.isOpen, false);
d.resolve(); d.resolve();
}); }, 100);
self.drawer.$el.trigger({type: 'drawer.closed'});
this.drawer.$el.trigger({type: 'drawer.closed'});
return d; return d;
} }
); );
test('It should set isOpen to true when opening', QUnit.test('It should set isOpen to true when opening',
{asserts: 1}, function(assert) {
function(assert, AppDrawer) { assert.expect(1);
self.initInterface(AppDrawer);
this.drawer.$el.trigger({type: 'drawer.opened'});
var self = this;
var d = $.Deferred(); var d = $.Deferred();
self.drawer.$el.trigger({type: 'drawer.opened'});
setTimeout(function() { setTimeout(function() {
assert.ok(self.drawer.isOpen); assert.ok(self.drawer.isOpen);
d.resolve(); d.resolve();
}); }, 100);
return d; return d;
} }
); );
test('It should trigger core bus event for drawer open', QUnit.test('It should trigger core bus event for drawer open',
['web.core'], {asserts: 1}, function(assert) {
function(assert, AppDrawer, core) { assert.expect(1);
self.initInterface(AppDrawer);
self.drawer.onDrawerOpen(); this.drawer.onDrawerOpen();
var d = $.Deferred(); var d = $.Deferred();
core.bus.on('drawer.opened', this, function() { core.bus.on('drawer.opened', this, function() {
assert.ok(true); assert.ok(true);
d.resolve(); d.resolve();
}); });
self.drawer.$el.trigger({type: 'drawer.opened'});
this.drawer.$el.trigger({type: 'drawer.opened'});
return d; return d;
} }
); );
test('It should choose link to right', QUnit.test('It should choose link to right',
function(assert, AppDrawer) { function(assert) {
self.initInterface(AppDrawer); assert.expect(1);
self.linkGrid();
this.linkGrid();
var $appLink = $('#a_1'), var $appLink = $('#a_1'),
$expect = $('#a_2'), $expect = $('#a_2'),
$res = self.drawer.findAdjacentAppLink( $res = this.drawer.findAdjacentAppLink(
$appLink, self.drawer.RIGHT $appLink, this.drawer.RIGHT
); );
assert.equal($res[0].id, $expect[0].id); assert.equal($res[0].id, $expect[0].id);
} }
); );
test('It should choose link to left', QUnit.test('It should choose link to left',
function(assert, AppDrawer) { function(assert) {
self.initInterface(AppDrawer); assert.expect(1);
self.linkGrid();
this.linkGrid();
var $appLink = $('#a_2'), var $appLink = $('#a_2'),
$expect = $('#a_1'), $expect = $('#a_1'),
$res = self.drawer.findAdjacentAppLink( $res = this.drawer.findAdjacentAppLink(
$appLink, self.drawer.LEFT $appLink, this.drawer.LEFT
); );
assert.equal($res[0].id, $expect[0].id); assert.equal($res[0].id, $expect[0].id);
} }
); );
test('It should choose link above', QUnit.test('It should choose link above',
function(assert, AppDrawer) { function(assert) {
self.initInterface(AppDrawer); assert.expect(1);
self.linkGrid();
this.linkGrid();
var $appLink = $('#a_1'), var $appLink = $('#a_1'),
$expect = $('#a_0'), $expect = $('#a_0'),
$res = self.drawer.findAdjacentAppLink( $res = this.drawer.findAdjacentAppLink(
$appLink, self.drawer.UP $appLink, this.drawer.UP
); );
assert.equal($res[0].id, $expect[0].id); assert.equal($res[0].id, $expect[0].id);
} }
); );
test('It should choose link below', QUnit.test('It should choose link below',
function(assert, AppDrawer) { function(assert) {
self.initInterface(AppDrawer); assert.expect(1);
self.linkGrid();
this.linkGrid();
var $appLink = $('#a_1'), var $appLink = $('#a_1'),
$expect = $('#a_2'), $expect = $('#a_2'),
$res = self.drawer.findAdjacentAppLink( $res = this.drawer.findAdjacentAppLink(
$appLink, self.drawer.DOWN $appLink, this.drawer.DOWN
); );
assert.equal($res[0].id, $expect[0].id); assert.equal($res[0].id, $expect[0].id);
} }
); );
test('It should choose first link if next on last', QUnit.test('It should choose first link if next on last',
function(assert, AppDrawer) { function(assert) {
self.initInterface(AppDrawer); assert.expect(1);
self.linkGrid();
this.linkGrid();
var $appLink = $('#b_2'), var $appLink = $('#b_2'),
$expect = $('#a_0'), $expect = $('#a_0'),
$res = self.drawer.findAdjacentAppLink( $res = this.drawer.findAdjacentAppLink(
$appLink, self.drawer.RIGHT $appLink, this.drawer.RIGHT
); );
assert.equal($res[0].id, $expect[0].id); assert.equal($res[0].id, $expect[0].id);
} }
); );
test('It should choose bottom link if up on top', QUnit.test('It should choose bottom link if up on top',
function(assert, AppDrawer) { function(assert) {
self.initInterface(AppDrawer); assert.expect(1);
self.linkGrid();
this.linkGrid();
var $appLink = $('#a_0'), var $appLink = $('#a_0'),
$expect = $('#a_2'), $expect = $('#a_2'),
$res = self.drawer.findAdjacentAppLink( $res = this.drawer.findAdjacentAppLink(
$appLink, self.drawer.UP $appLink, this.drawer.UP
); );
assert.equal($res[0].id, $expect[0].id); assert.equal($res[0].id, $expect[0].id);
} }
); );
test('It should choose top link if down on bottom', QUnit.test('It should choose top link if down on bottom',
function(assert, AppDrawer) { function(assert) {
self.initInterface(AppDrawer); assert.expect(1);
self.linkGrid();
this.linkGrid();
var $appLink = $('#a_2'), var $appLink = $('#a_2'),
$expect = $('#a_0'), $expect = $('#a_0'),
$res = self.drawer.findAdjacentAppLink( $res = this.drawer.findAdjacentAppLink(
$appLink, self.drawer.DOWN $appLink, this.drawer.DOWN
); );
assert.equal($res[0].id, $expect[0].id); assert.equal($res[0].id, $expect[0].id);
} }

View File

@ -0,0 +1 @@
from . import test_ui