131 lines
3.9 KiB
JavaScript
131 lines
3.9 KiB
JavaScript
odoo.define('web.abstract_model_tests', function (require) {
|
|
"use strict";
|
|
|
|
const AbstractModel = require('web.AbstractModel');
|
|
const Domain = require('web.Domain');
|
|
|
|
QUnit.module('LegacyViews', {}, function () {
|
|
QUnit.module('AbstractModel');
|
|
|
|
QUnit.test('leave sample mode when unknown route is called on sample server', async function (assert) {
|
|
assert.expect(4);
|
|
|
|
const Model = AbstractModel.extend({
|
|
_isEmpty() {
|
|
return true;
|
|
},
|
|
async __load() {
|
|
if (this.isSampleModel) {
|
|
await this._rpc({ model: 'partner', method: 'unknown' });
|
|
}
|
|
},
|
|
});
|
|
|
|
const model = new Model(null, {
|
|
modelName: 'partner',
|
|
fields: {},
|
|
useSampleModel: true,
|
|
SampleModel: Model,
|
|
});
|
|
|
|
assert.ok(model.useSampleModel);
|
|
assert.notOk(model._isInSampleMode);
|
|
|
|
await model.load({});
|
|
|
|
assert.notOk(model.useSampleModel);
|
|
assert.notOk(model._isInSampleMode);
|
|
|
|
model.destroy();
|
|
});
|
|
|
|
QUnit.test("don't cath general error on sample server in sample mode", async function (assert) {
|
|
assert.expect(5);
|
|
|
|
const error = new Error();
|
|
|
|
const Model = AbstractModel.extend({
|
|
_isEmpty() {
|
|
return true;
|
|
},
|
|
async __reload() {
|
|
if (this.isSampleModel) {
|
|
await this._rpc({ model: 'partner', method: 'read_group' });
|
|
}
|
|
},
|
|
async _rpc() {
|
|
throw error;
|
|
},
|
|
});
|
|
|
|
const model = new Model(null, {
|
|
modelName: 'partner',
|
|
fields: {},
|
|
useSampleModel: true,
|
|
SampleModel: Model,
|
|
});
|
|
|
|
assert.ok(model.useSampleModel);
|
|
assert.notOk(model._isInSampleMode);
|
|
|
|
await model.load({});
|
|
|
|
assert.ok(model.useSampleModel);
|
|
assert.ok(model._isInSampleMode);
|
|
|
|
async function reloadModel() {
|
|
try {
|
|
await model.reload();
|
|
} catch (e) {
|
|
assert.strictEqual(e, error);
|
|
}
|
|
}
|
|
|
|
await reloadModel();
|
|
|
|
model.destroy();
|
|
});
|
|
|
|
QUnit.test('fetch sample data: concurrency', async function (assert) {
|
|
assert.expect(3);
|
|
|
|
const Model = AbstractModel.extend({
|
|
_isEmpty() {
|
|
return true;
|
|
},
|
|
__get() {
|
|
return { isSample: !!this.isSampleModel };
|
|
},
|
|
});
|
|
|
|
const model = new Model(null, {
|
|
modelName: 'partner',
|
|
fields: {},
|
|
useSampleModel: true,
|
|
SampleModel: Model,
|
|
});
|
|
|
|
await model.load({ domain: Domain.FALSE_DOMAIN, });
|
|
|
|
const beforeReload = model.get(null, { withSampleData: true });
|
|
|
|
const reloaded = model.reload(null, { domain: Domain.TRUE_DOMAIN });
|
|
const duringReload = model.get(null, { withSampleData: true });
|
|
|
|
await reloaded;
|
|
|
|
const afterReload = model.get(null, { withSampleData: true });
|
|
|
|
assert.strictEqual(beforeReload.isSample, true,
|
|
"Sample data flag must be true before reload"
|
|
);
|
|
assert.strictEqual(duringReload.isSample, true,
|
|
"Sample data flag must be true during reload"
|
|
);
|
|
assert.strictEqual(afterReload.isSample, false,
|
|
"Sample data flag must be true after reload"
|
|
);
|
|
});
|
|
});
|
|
});
|