[TEST] saving of editor with required non-filled field, and cancelling of edition
[odoo/odoo.git] / addons / web / static / test / formats.js
1 $(document).ready(function () {
2     var openerp;
3
4     module('server-formats', {
5         setup: function () {
6             openerp = window.openerp.init([]);
7             window.openerp.web.corelib(openerp);
8             window.openerp.web.coresetup(openerp);
9             window.openerp.web.dates(openerp);
10         }
11     });
12     test('Parse server datetime', function () {
13         var date = openerp.web.str_to_datetime("2009-05-04 12:34:23");
14         deepEqual(
15             [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),
16              date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()],
17             [2009, 5 - 1, 4, 12, 34, 23]);
18         deepEqual(
19             [date.getFullYear(), date.getMonth(), date.getDate(),
20              date.getHours(), date.getMinutes(), date.getSeconds()],
21             [2009, 5 - 1, 4, 12 - (date.getTimezoneOffset() / 60), 34, 23]);
22
23         var date2 = openerp.web.str_to_datetime('2011-12-10 00:00:00');
24         deepEqual(
25             [date2.getUTCFullYear(), date2.getUTCMonth(), date2.getUTCDate(),
26              date2.getUTCHours(), date2.getUTCMinutes(), date2.getUTCSeconds()],
27             [2011, 12 - 1, 10, 0, 0, 0]);
28     });
29     test('Parse server date', function () {
30         var date = openerp.web.str_to_date("2009-05-04");
31         deepEqual(
32             [date.getFullYear(), date.getMonth(), date.getDate()],
33             [2009, 5 - 1, 4]);
34     });
35     test('Parse server time', function () {
36         var date = openerp.web.str_to_time("12:34:23");
37         deepEqual(
38             [date.getHours(), date.getMinutes(), date.getSeconds()],
39             [12, 34, 23]);
40     });
41
42     module('web-formats', {
43         setup: function () {
44             openerp = window.openerp.init([]);
45             window.openerp.web.corelib(openerp);
46             window.openerp.web.coresetup(openerp);
47             window.openerp.web.dates(openerp);
48             window.openerp.web.formats(openerp);
49         }
50     });
51     test("format_datetime", function () {
52         var date = openerp.web.str_to_datetime("2009-05-04 12:34:23");
53         var str = openerp.web.format_value(date, {type:"datetime"});
54         equal(str, date.toString("MM/dd/yyyy HH:mm:ss"));
55     });
56     test("format_date", function () {
57         var date = openerp.web.str_to_datetime("2009-05-04 12:34:23");
58         var str = openerp.web.format_value(date, {type:"date"});
59         equal(str, date.toString("MM/dd/yyyy"));
60     });
61     test("format_time", function () {
62         var date = openerp.web.str_to_datetime("2009-05-04 12:34:23");
63         var str = openerp.web.format_value(date, {type:"time"});
64         equal(str, date.toString("HH:mm:ss"));
65     });
66     test("format_float_time", function () {
67         strictEqual(
68             openerp.web.format_value(1.0, {type:'float', widget:'float_time'}),
69             '01:00');
70         strictEqual(
71             openerp.web.format_value(0.9853, {type:'float', widget:'float_time'}),
72             '00:59');
73         strictEqual(
74             openerp.web.format_value(0.0085, {type:'float', widget:'float_time'}),
75             '00:01');
76         strictEqual(
77             openerp.web.format_value(-1.0, {type:'float', widget:'float_time'}),
78             '-01:00');
79         strictEqual(
80             openerp.web.format_value(-0.9853, {type:'float', widget:'float_time'}),
81             '-00:59');
82         strictEqual(
83             openerp.web.format_value(-0.0085, {type:'float', widget:'float_time'}),
84             '-00:01');
85     });
86     test("format_float", function () {
87         var fl = 12.1234;
88         var str = openerp.web.format_value(fl, {type:"float"});
89         equal(str, "12.12");
90         equal(openerp.web.format_value(12.02, {type: 'float'}),
91               '12.02');
92         equal(openerp.web.format_value(0.0002, {type: 'float', digits: [1, 3]}),
93               '0.000');
94         equal(openerp.web.format_value(0.0002, {type: 'float', digits: [1, 4]}),
95               '0.0002');
96         equal(openerp.web.format_value(0.0002, {type: 'float', digits: [1, 6]}),
97               '0.000200');
98         equal(openerp.web.format_value(1, {type: 'float', digits: [1, 6]}),
99               '1.000000');
100         equal(openerp.web.format_value(1, {type: 'float'}),
101               '1.00');
102         equal(openerp.web.format_value(-11.25, {type: 'float'}),
103               "-11.25");
104         openerp.web._t.database.parameters.grouping = [1, 2, -1];
105         equal(openerp.web.format_value(1111111.25, {type: 'float'}),
106               "1111,11,1.25");
107         openerp.web._t.database.parameters.grouping = [1, 0];
108         equal(openerp.web.format_value(-11.25, {type: 'float'}),
109               "-1,1.25");
110     });
111 //    test("parse_datetime", function () {
112 //        var val = openerp.web.str_to_datetime("2009-05-04 12:34:23");
113 //        var res = openerp.web.parse_value(val.toString("MM/dd/yyyy HH:mm:ss"), {type:"datetime"});
114 //        equal(val.toString("MM/dd/yyyy HH:mm:ss"), res.toString("MM/dd/yyyy HH:mm:ss"));
115 //    });
116 //    test("parse_date", function () {
117 //        var val = openerp.web.str_to_date("2009-05-04");
118 //        var res = openerp.web.parse_value(val.toString("MM/dd/yyyy"), {type:"date"});
119 //        equal(val.toString("MM/dd/yyyy"), res.toString("MM/dd/yyyy"));
120 //    });
121 //    test("parse_time", function () {
122 //        var val = openerp.web.str_to_time("12:34:23");
123 //        var res = openerp.web.parse_value(val.toString("HH:mm:ss"), {type:"time"});
124 //        equal(val.toString("HH:mm:ss"), res.toString("HH:mm:ss"));
125 //    });
126     test('parse_integer', function () {
127         var val = openerp.web.parse_value('123,456', {type: 'integer'});
128         equal(val, 123456);
129         openerp.web._t.database.parameters.thousands_sep = '|';
130         var val2 = openerp.web.parse_value('123|456', {type: 'integer'});
131         equal(val2, 123456);
132     });
133     test("parse_float", function () {
134         var str = "134,112.1234";
135         var val = openerp.web.parse_value(str, {type:"float"});
136         equal(val, 134112.1234);
137         var str = "-134,112.1234";
138         var val = openerp.web.parse_value(str, {type:"float"});
139         equal(val, -134112.1234);
140         _.extend(openerp.web._t.database.parameters, {
141             decimal_point: ',',
142             thousands_sep: '.'
143         });
144         var val3 = openerp.web.parse_value('123.456,789', {type: 'float'});
145         equal(val3, 123456.789);
146     });
147     test('intersperse', function () {
148         var g = openerp.web.intersperse;
149         equal(g("", []), "");
150         equal(g("0", []), "0");
151         equal(g("012", []), "012");
152         equal(g("1", []), "1");
153         equal(g("12", []), "12");
154         equal(g("123", []), "123");
155         equal(g("1234", []), "1234");
156         equal(g("123456789", []), "123456789");
157         equal(g("&ab%#@1", []), "&ab%#@1");
158
159         equal(g("0", []), "0");
160         equal(g("0", [1]), "0");
161         equal(g("0", [2]), "0");
162         equal(g("0", [200]), "0");
163
164         equal(g("12345678", [0], '.'), '12345678');
165         equal(g("", [1], '.'), '');
166         equal(g("12345678", [1], '.'), '1234567.8');
167         equal(g("12345678", [1], '.'), '1234567.8');
168         equal(g("12345678", [2], '.'), '123456.78');
169         equal(g("12345678", [2, 1], '.'), '12345.6.78');
170         equal(g("12345678", [2, 0], '.'), '12.34.56.78');
171         equal(g("12345678", [-1, 2], '.'), '12345678');
172         equal(g("12345678", [2, -1], '.'), '123456.78');
173         equal(g("12345678", [2, 0, 1], '.'), '12.34.56.78');
174         equal(g("12345678", [2, 0, 0], '.'), '12.34.56.78');
175         equal(g("12345678", [2, 0, -1], '.'), '12.34.56.78');
176         equal(g("12345678", [3,3,3,3], '.'), '12.345.678');
177         equal(g("12345678", [3,0], '.'), '12.345.678');
178     });
179     test('format_integer', function () {
180         openerp.web._t.database.parameters.grouping = [3, 3, 3, 3];
181         equal(openerp.web.format_value(1000000, {type: 'integer'}),
182               '1,000,000');
183         openerp.web._t.database.parameters.grouping = [3, 2, -1];
184         equal(openerp.web.format_value(106500, {type: 'integer'}),
185               '1,06,500');
186         openerp.web._t.database.parameters.grouping = [1, 2, -1];
187         equal(openerp.web.format_value(106500, {type: 'integer'}),
188               '106,50,0');
189     });
190     test('format_float', function () {
191         openerp.web._t.database.parameters.grouping = [3, 3, 3, 3];
192         equal(openerp.web.format_value(1000000, {type: 'float'}),
193               '1,000,000.00');
194         openerp.web._t.database.parameters.grouping = [3, 2, -1];
195         equal(openerp.web.format_value(106500, {type: 'float'}),
196               '1,06,500.00');
197         openerp.web._t.database.parameters.grouping = [1, 2, -1];
198         equal(openerp.web.format_value(106500, {type: 'float'}),
199               '106,50,0.00');
200
201         _.extend(openerp.web._t.database.parameters, {
202             grouping: [3, 0],
203             decimal_point: ',',
204             thousands_sep: '.'
205         });
206         equal(openerp.web.format_value(6000, {type: 'float'}),
207               '6.000,00');
208     });
209     module('custom-date-formats', {
210         setup: function () {
211             openerp = window.openerp.init([]);
212             window.openerp.web.corelib(openerp);
213             window.openerp.web.coresetup(openerp);
214             window.openerp.web.dates(openerp);
215             window.openerp.web.formats(openerp);
216         }
217     });
218     test('format stripper', function () {
219         strictEqual(openerp.web.strip_raw_chars('%a, %Y %b %d'), '%a, %Y %b %d');
220         strictEqual(openerp.web.strip_raw_chars('%a, %Y.eko %bren %da'), '%a, %Y. %b %d');
221     });
222     test('ES date format', function () {
223         openerp.web._t.database.parameters.date_format = '%a, %Y %b %d';
224         var date = openerp.web.str_to_date("2009-05-04");
225         strictEqual(openerp.web.format_value(date, {type:"date"}), 'Mon, 2009 May 04');
226         strictEqual(openerp.web.parse_value('Mon, 2009 May 04', {type: 'date'}), '2009-05-04');
227     });
228     test('extended ES date format', function () {
229             openerp.web._t.database.parameters.date_format = '%a, %Y.eko %bren %da';
230             var date = openerp.web.str_to_date("2009-05-04");
231             strictEqual(openerp.web.format_value(date, {type:"date"}), 'Mon, 2009. May 04');
232             strictEqual(openerp.web.parse_value('Mon, 2009. May 04', {type: 'date'}), '2009-05-04');
233         });
234
235 });