Files
odoo_source/addons/web/static/test/data.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

117 lines
3.8 KiB
JavaScript

odoo.define_section('web.dataset', ['web.data'], function (test, mock) {
test('read_ids', function (assert, data) {
assert.expect(2);
mock.add('foo:read', function (args) {
var ids = args[0];
assert.deepEqual(ids, [3, 1, 2]);
return [
{id: 1, a: 'bar'},
{id: 2, a: 'baz'},
{id: 3, a: 'foo'}
];
});
var d = new data.DataSet(null, 'foo');
return d.read_ids([3,1,2]).then(function (records) {
assert.deepEqual(
records,
[
{id:3, a: 'foo'},
{id:1, a: 'bar'},
{id:2, a: 'baz'}
]
);
});
});
});
odoo.define_section('data.model.group_by', ['web.Model'], function (test, mock) {
var group_result = [
{ bar: 3, bar_count: 5, __context: {}, __domain: [['bar', '=', 3]], },
{ bar: 5, bar_count: 3, __context: {}, __domain: [['bar', '=', 5]], },
{ bar: 8, bar_count: 0, __context: {}, __domain: [['bar', '=', 8]], }
];
test('basic', function (assert, Model) {
assert.expect(7);
mock.add('foo:read_group', function (args, kwargs) {
assert.deepEqual(kwargs.fields, ['bar'],
"should read grouping field");
assert.deepEqual(kwargs.groupby, ['bar'],
"should have single grouping field");
return group_result;
});
mock.add('/web/dataset/search_read', function (args) {
deepEqual(args.params.domain, [['bar', '=', 3]],
"should have domain matching that of group_by result");
return {records: [
{bar: 3, id: 1},
{bar: 3, id: 2},
{bar: 3, id: 4},
{bar: 3, id: 8},
{bar: 3, id: 16}
], length: 5};
});
var m = new Model('foo');
return m.query().group_by('bar')
.then(function (groups) {
assert.ok(groups, "should have data");
assert.equal(groups.length, 3, "should have three results");
var first = groups[0];
assert.ok(first.attributes.has_children, "should have children");
return first.query().all();
}).then(function (first) {
assert.equal(first.length, 5, "should have 5 records");
});
});
test('noleaf', function (assert, Model) {
assert.expect(5);
var m = new Model('foo', {group_by_no_leaf: true});
mock.add('foo:read_group', function (args, kwargs) {
assert.deepEqual(kwargs.fields, ['bar'],
"should read grouping field");
assert.deepEqual(kwargs.groupby, ['bar'],
"should have single grouping field");
return group_result;
});
return m.query().group_by('bar')
.then(function (groups) {
assert.ok(groups, "should have data");
assert.equal(groups.length, 3, "should have three results");
assert.ok(!groups[0].attributes.has_children,
"should not have children because no_leaf");
});
});
test('nogroup', function (assert, Model) {
var m = new Model('foo');
strictEqual(m.query().group_by(), null, "should not group");
});
test('empty.noleaf', function (assert, Model) {
assert.expect(1);
var m = new Model('foo', {group_by_no_leaf: true});
mock.add('foo:read_group', function (args, kwargs) {
return [{__context: [], __domain: []}];
});
return m.query().group_by().done(function (groups) {
assert.strictEqual(groups.length, 1,
"should generate a single fake-ish group");
});
});
});