[REM] Removed reference to view_manager.flags from views. The action flags are merged...
[odoo/odoo.git] / addons / base / static / test / list.js
1 $(document).ready(function () {
2     /**
3      * Tests a jQuery collection against a selector ("ands" the .is() of each
4      * member of the collection, instead of "or"-ing them)
5      *
6      * @param {jQuery} $c a jQuery collection object
7      * @param {String} selector the selector to test the collection against
8      */
9     var are = function ($c, selector) {
10         return ($c.filter(function () { return $(this).is(selector); }).length
11                 === $c.length);
12     };
13
14     var fvg = {fields_view: {
15         'fields': [],
16         'arch': {
17             'attrs': {string: ''}
18         }
19     }};
20
21     var openerp;
22     module("ListView", {
23         setup: function () {
24             openerp = window.openerp.init(true);
25             window.openerp.base.chrome(openerp);
26             // views loader stuff
27             window.openerp.base.data(openerp);
28             window.openerp.base.views(openerp);
29             window.openerp.base.list(openerp);
30             window.openerp.base.form(openerp);
31         }
32     });
33
34     test('render selection checkboxes', 2, function () {
35         var listview = new openerp.base.ListView(
36                 null, 'qunit-fixture', {model: null, ids: [null, null, null], index: 0});
37
38         listview.on_loaded(fvg);
39
40         listview.do_fill_table({records: [
41             {data: {id: {value: null}}},
42             {data: {id: {value: null}}},
43             {data: {id: {value: null}}}
44         ]});
45
46         ok(are(listview.$element.find('tbody th'),
47                '.oe-record-selector'));
48         ok(are(listview.$element.find('tbody th input'),
49                ':checkbox:not([name])'));
50     });
51     test('render no checkbox if selectable=false', 1, function () {
52         var listview = new openerp.base.ListView(
53                 null, 'qunit-fixture', {model: null, ids: [null, null, null], index: 0}, false,
54                 {selectable: false});
55
56         listview.on_loaded(fvg);
57
58         listview.do_fill_table({records: [
59                 {data: {id: {value: null}}},
60                 {data: {id: {value: null}}},
61                 {data: {id: {value: null}}}
62         ]});
63         equal(listview.$element.find('tbody th').length, 0);
64     });
65     test('select a bunch of records', 2, function () {
66         var listview = new openerp.base.ListView(
67                 null, 'qunit-fixture', {model: null, ids: [1, 2, 3], index: 0});
68         listview.on_loaded(fvg);
69
70         listview.do_fill_table({records: [
71                 {data: {id: {value: 1}}},
72                 {data: {id: {value: 2}}},
73                 {data: {id: {value: 3}}}
74         ]});
75         // TODO: find less intrusive way to get selection count of list view?
76         listview.$element.find('tbody th input:eq(2)')
77                          .attr('checked', true);
78         deepEqual(listview.list.get_selection(), [3]);
79         listview.$element.find('tbody th input:eq(1)')
80                          .attr('checked', true);
81         deepEqual(listview.list.get_selection(), [2, 3]);
82     });
83     test('render deletion button if list is deletable', 1, function () {
84         var listview = new openerp.base.ListView(
85                 null, 'qunit-fixture', {model: null, ids: [null, null, null], index: 0});
86
87         listview.on_loaded(fvg);
88
89         listview.do_fill_table({records: [
90                 {data: {id: {value: null}}},
91                 {data: {id: {value: null}}},
92                 {data: {id: {value: null}}}
93         ]});
94         equal(
95             listview.$element.find('tbody tr td.oe-record-delete button').length,
96             3);
97     });
98     test('deletion button should lead on deletion in the dataset',
99               2, function () {
100         var deleted;
101         var listview = new openerp.base.ListView(
102                 null, 'qunit-fixture',
103                 {model: null, unlink: function (ids) {
104             deleted = ids;
105         }, ids: [1, 2, 3], index: 0});
106
107         listview.on_loaded(fvg);
108
109         listview.do_fill_table({records: [
110                 {data: {id: {value: 1}}},
111                 {data: {id: {value: 2}}},
112                 {data: {id: {value: 3}}}
113         ]});
114         listview.$element.find('tbody td.oe-record-delete:eq(2) button').click();
115         deepEqual(deleted, [3]);
116         listview.$element.find('tbody td.oe-record-delete:eq(0) button').click();
117         deepEqual(deleted, [1]);
118     });
119     test('multiple records deletion', 1, function () {
120         var deleted;
121         var listview = new openerp.base.ListView(
122                 null, 'qunit-fixture',
123                 {model: null, unlink: function (ids) {
124             deleted = ids;
125         }, ids: [1, 2, 3], index: 0});
126
127         listview.on_loaded(fvg);
128
129         listview.do_fill_table({records: [
130                 {data: {id: {value: 1}}},
131                 {data: {id: {value: 2}}},
132                 {data: {id: {value: 3}}}
133         ]});
134         listview.$element.find('tbody th input:eq(2)')
135                          .attr('checked', true);
136         listview.$element.find('tbody th input:eq(1)')
137                          .attr('checked', true);
138
139         listview.$element.find('.oe-list-delete').click();
140         deepEqual(deleted, [2, 3]);
141     });
142 });