1 openerp.testing.section('eval.types', {
2 dependencies: ['web.coresetup']
4 test('strftime', function (instance) {
6 var context = instance.web.pyeval.context();
8 py.eval("time.strftime('%Y')", context),
9 String(d.getFullYear()));
11 py.eval("time.strftime('%Y')+'-01-30'", context),
12 String(d.getFullYear()) + '-01-30');
14 py.eval("time.strftime('%Y-%m-%d %H:%M:%S')", context),
15 _.str.sprintf('%04d-%02d-%02d %02d:%02d:%02d',
16 d.getFullYear(), d.getMonth() + 1, d.getDate(),
17 d.getHours(), d.getMinutes(), d.getSeconds()));
20 openerp.testing.section('eval.contexts', {
21 dependencies: ['web.coresetup']
23 test('context_recursive', function (instance) {
24 var context_to_eval = [{
26 __debug: '{"foo": context.get("bar", "qux")}'
29 instance.web.pyeval.eval('contexts', context_to_eval, {bar: "ok"}),
32 instance.web.pyeval.eval('contexts', context_to_eval, {bar: false}),
35 instance.web.pyeval.eval('contexts', context_to_eval),
38 test('context_sequences', function (instance) {
39 // Context n should have base evaluation context + all of contexts
40 // 0..n-1 in its own evaluation context
42 var result = instance.web.pyeval.eval('contexts', [
46 "department_id": false,
53 { "search_default_create_uid": 1 },
56 "__eval_context": null,
57 "__ref": "compound_context"
60 "active_id": active_id,
61 "active_ids": [ active_id ],
62 "active_model": "purchase.requisition"
65 "__debug": "{'record_id' : active_id}",
66 "__id": "63e8e9bff8a6",
78 search_default_create_uid: 1,
80 active_ids: [active_id],
81 active_model: 'purchase.requisition',
85 test('non-literal_eval_contexts', function (instance) {
86 var result = instance.web.pyeval.eval('contexts', [{
87 "__ref": "compound_context",
89 {"__ref": "context", "__debug": "{'type':parent.type}",
90 "__id": "462b9dbed42f"}
93 "__ref": "compound_context",
95 "__ref": "compound_context",
97 {"__ref": "context", "__debug": "{'type': type}",
98 "__id": "16a04ed5a194"}
101 "__ref": "compound_context",
103 {"lang": "en_US", "tz": false, "uid": 1,
104 "journal_type": "sale", "section_id": false,
105 "default_type": "out_invoice",
106 "type": "out_invoice", "department_id": false},
107 {"id": false, "journal_id": 10,
108 "number": false, "type": "out_invoice",
109 "currency_id": 1, "partner_id": 4,
110 "fiscal_position": false,
111 "date_invoice": false, "period_id": false,
112 "payment_term": false, "reference_type": "none",
113 "reference": false, "account_id": 440,
114 "name": false, "invoice_line": [],
115 "tax_line": [], "amount_untaxed": 0,
116 "amount_tax": 0, "reconciled": false,
117 "amount_total": 0, "state": "draft",
118 "residual": 0, "company_id": 1,
119 "date_due": false, "user_id": 1,
120 "partner_bank_id": false, "origin": false,
121 "move_id": false, "comment": false,
122 "payment_ids": [[6, false, []]],
123 "active_id": false, "active_ids": [],
124 "active_model": "account.invoice",
126 ], "__eval_context": null}
130 "name": "[PC1] Basic PC",
136 "account_analytic_id": false,
139 "invoice_line_tax_id": [[6, false, [1]]],
142 "active_model": "account.invoice.line",
144 "id": false, "journal_id": 10, "number": false,
145 "type": "out_invoice", "currency_id": 1,
146 "partner_id": 4, "fiscal_position": false,
147 "date_invoice": false, "period_id": false,
148 "payment_term": false, "reference_type": "none",
149 "reference": false, "account_id": 440, "name": false,
150 "tax_line": [], "amount_untaxed": 0, "amount_tax": 0,
151 "reconciled": false, "amount_total": 0,
152 "state": "draft", "residual": 0, "company_id": 1,
153 "date_due": false, "user_id": 1,
154 "partner_bank_id": false, "origin": false,
155 "move_id": false, "comment": false,
156 "payment_ids": [[6, false, []]]}
158 "__eval_context": null
161 deepEqual(result, {type: 'out_invoice'});
164 openerp.testing.section('eval.contexts', {
165 dependencies: ['web.coresetup', 'web.dates']
167 test('current_date', function (instance) {
168 var current_date = instance.web.date_to_str(new Date());
169 var result = instance.web.pyeval.eval('domains',
170 [[],{"__ref":"domain","__debug":"[('name','>=',current_date),('name','<=',current_date)]","__id":"5dedcfc96648"}],
171 instance.web.pyeval.context());
173 ['name', '>=', current_date],
174 ['name', '<=', current_date]
177 test('context_freevar', function (instance) {
178 var domains_to_eval = [{
180 __debug: '[("foo", "=", context.get("bar", "qux"))]'
181 }, [['bar', '>=', 42]]];
183 instance.web.pyeval.eval('domains', domains_to_eval, {bar: "ok"}),
184 [['foo', '=', 'ok'], ['bar', '>=', 42]]);
186 instance.web.pyeval.eval('domains', domains_to_eval, {bar: false}),
187 [['foo', '=', false], ['bar', '>=', 42]]);
189 instance.web.pyeval.eval('domains', domains_to_eval),
190 [['foo', '=', 'qux'], ['bar', '>=', 42]]);
193 openerp.testing.section('eval.groupbys', {
194 dependencies: ['web.coresetup']
196 test('groupbys_00', function (instance) {
197 var result = instance.web.pyeval.eval('groupbys', [
199 {group_by: ['bar', 'qux']},
203 deepEqual(result, ['foo', 'bar', 'qux', 'grault']);
205 test('groupbys_01', function (instance) {
206 var result = instance.web.pyeval.eval('groupbys', [
208 { __ref: 'context', __debug: '{"group_by": "bar"}' },
211 deepEqual(result, ['foo', 'bar', 'grault']);
213 test('groupbys_02', function (instance) {
214 var result = instance.web.pyeval.eval('groupbys', [
217 __ref: 'compound_context',
218 __contexts: [ {group_by: 'bar'} ],
223 deepEqual(result, ['foo', 'bar', 'grault']);
225 test('groupbys_03', function (instance) {
226 var result = instance.web.pyeval.eval('groupbys', [
229 __ref: 'compound_context',
231 { __ref: 'context', __debug: '{"group_by": value}' }
233 __eval_context: { value: 'bar' }
237 deepEqual(result, ['foo', 'bar', 'grault']);
239 test('groupbys_04', function (instance) {
240 var result = instance.web.pyeval.eval('groupbys', [
243 __ref: 'compound_context',
245 { __ref: 'context', __debug: '{"group_by": value}' }
247 __eval_context: { value: 'bar' }
250 ], { value: 'bar' });
251 deepEqual(result, ['foo', 'bar', 'grault']);
253 test('groupbys_05', function (instance) {
254 var result = instance.web.pyeval.eval('groupbys', [
256 { __ref: 'context', __debug: '{"group_by": value}' },
258 ], { value: 'bar' });
259 deepEqual(result, ['foo', 'bar', 'grault']);