Files
odoo_source/addons/web/static/test/mutex.js
T
Géry Debongnie b960f8ad52 [REF] web: update test suite to new module system
The test suite needs to be adapted to the modules.  Also, the update
of qunit changes the API, so the tests needs to be changed as well.
2015-03-18 09:01:50 +01:00

77 lines
2.2 KiB
JavaScript

odoo.define_section('web.mutex', ['web.utils'], function (test) {
test('simple scheduling', function (assert, utils) {
var m = new utils.Mutex();
var def1 = $.Deferred(),
def2 = $.Deferred();
var p1 = m.exec(function () { return def1; });
var p2 = m.exec(function () { return def2; });
assert.equal(p1.state(), "pending");
assert.equal(p2.state(), "pending");
def1.resolve();
assert.equal(p1.state(), "resolved");
assert.equal(p2.state(), "pending");
def2.resolve();
assert.equal(p1.state(), "resolved");
assert.equal(p2.state(), "resolved");
});
test('simpleScheduling2', function (assert, utils) {
var m = new utils.Mutex();
var def1 = $.Deferred(),
def2 = $.Deferred();
var p1 = m.exec(function() { return def1; });
var p2 = m.exec(function() { return def2; });
assert.equal(p1.state(), "pending");
assert.equal(p2.state(), "pending");
def2.resolve();
assert.equal(p1.state(), "pending");
assert.equal(p2.state(), "pending");
def1.resolve();
assert.equal(p1.state(), "resolved");
assert.equal(p2.state(), "resolved");
});
test('reject', function (assert, utils) {
var m = new utils.Mutex();
var def1 = $.Deferred(),
def2 = $.Deferred(),
def3 = $.Deferred();
var p1 = m.exec(function() {return def1;});
var p2 = m.exec(function() {return def2;});
var p3 = m.exec(function() {return def3;});
assert.equal(p1.state(), "pending");
assert.equal(p2.state(), "pending");
assert.equal(p3.state(), "pending");
def1.resolve();
assert.equal(p1.state(), "resolved");
assert.equal(p2.state(), "pending");
assert.equal(p3.state(), "pending");
def2.reject();
assert.equal(p1.state(), "resolved");
assert.equal(p2.state(), "rejected");
assert.equal(p3.state(), "pending");
def3.resolve();
assert.equal(p1.state(), "resolved");
assert.equal(p2.state(), "rejected");
assert.equal(p3.state(), "resolved");
});
});