flectra/addons/web/static/tests/chrome/pager_tests.js
2018-01-16 02:34:37 -08:00

94 lines
3.0 KiB
JavaScript

flectra.define('web.pager_tests', function (require) {
"use strict";
var Pager = require('web.Pager');
var concurrency = require('web.concurrency');
QUnit.module('chrome', {}, function () {
QUnit.module('Pager');
QUnit.test('basic stuff', function (assert) {
assert.expect(2);
var pager = new Pager(null, 10, 1, 4);
pager.appendTo($('#qunit-fixture'));
assert.strictEqual(pager.state.current_min, 1,
"current_min should be set to 1");
// click on next
pager.$('.o_pager_next').click();
assert.strictEqual(pager.state.current_min, 5,
"current_min should now be 5");
pager.destroy();
});
QUnit.test('edit the pager', function (assert) {
assert.expect(5);
var pager = new Pager(null, 10, 1, 4);
pager.appendTo($('#qunit-fixture'));
// enter edition
pager.$('.o_pager_value').click();
assert.strictEqual(pager.$('input').length, 1,
"the pager should contain an input");
assert.strictEqual(pager.$('input').val(), '1-4',
"the input should have correct value");
// change the limit
pager.$('input')
.val('1-6')
.trigger($.Event('keydown', {which: $.ui.keyCode.ENTER})); // trigger the change
assert.strictEqual(pager.state.limit, 6,
"the limit should have been updated");
assert.strictEqual(pager.state.current_min, 1,
"the current_min should not have changed");
assert.strictEqual(pager.$('.o_pager_value').text(), '1-6',
"the input should have correct value");
pager.destroy();
});
QUnit.test('disabling the pager', function (assert) {
var done = assert.async();
assert.expect(4);
var pager = new Pager(null, 10, 1, 4);
pager.appendTo($('#qunit-fixture'));
pager.disable();
// try to go to the next or previous pages
pager.$('.o_pager_next').click();
assert.strictEqual(pager.state.current_min, 1,
"current_min should still be 1");
pager.$('.o_pager_previous').click();
assert.strictEqual(pager.state.current_min, 1,
"current_min should still be 1");
// try to change the limit
pager.$('.o_pager_value').click();
assert.strictEqual(pager.$('input').length, 0,
"the pager should not contain an input");
// a common use is to disable the pager before reloading the data, and
// re-enable it once they have been loaded
// the following imulates this situation
pager.on('pager_changed', null, function () {
pager.disable();
concurrency.delay(0).then(function () {
assert.ok(pager.disabled, "pager should still be disabled");
pager.destroy();
done();
});
});
pager.enable();
pager.$('.o_pager_next').click();
});
});
});