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