Merge remote-tracking branch 'odoo/7.0' into 7.0
[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         strictEqual(
72             instance.web.format_value(4.9999, {type:'float', widget:'float_time'}),
73             '05:00');
74         strictEqual(
75             instance.web.format_value(-6.9999, {type:'float', widget:'float_time'}),
76             '-07:00');
77     });
78     test("format_float", function (instance) {
79         var fl = 12.1234;
80         var str = instance.web.format_value(fl, {type:"float"});
81         equal(str, "12.12");
82         equal(instance.web.format_value(12.02, {type: 'float'}),
83               '12.02');
84         equal(instance.web.format_value(0.0002, {type: 'float', digits: [1, 3]}),
85               '0.000');
86         equal(instance.web.format_value(0.0002, {type: 'float', digits: [1, 4]}),
87               '0.0002');
88         equal(instance.web.format_value(0.0002, {type: 'float', digits: [1, 6]}),
89               '0.000200');
90         equal(instance.web.format_value(1, {type: 'float', digits: [1, 6]}),
91               '1.000000');
92         equal(instance.web.format_value(1, {type: 'float'}),
93               '1.00');
94         equal(instance.web.format_value(-11.25, {type: 'float'}),
95               "-11.25");
96         instance.web._t.database.parameters.grouping = [1, 2, -1];
97         equal(instance.web.format_value(1111111.25, {type: 'float'}),
98               "1111,11,1.25");
99         instance.web._t.database.parameters.grouping = [1, 0];
100         equal(instance.web.format_value(-11.25, {type: 'float'}),
101               "-1,1.25");
102     });
103 //    test("parse_datetime", function () {
104 //        var val = openerp.web.str_to_datetime("2009-05-04 12:34:23");
105 //        var res = openerp.web.parse_value(val.toString("MM/dd/yyyy HH:mm:ss"), {type:"datetime"});
106 //        equal(val.toString("MM/dd/yyyy HH:mm:ss"), res.toString("MM/dd/yyyy HH:mm:ss"));
107 //    });
108 //    test("parse_date", function () {
109 //        var val = openerp.web.str_to_date("2009-05-04");
110 //        var res = openerp.web.parse_value(val.toString("MM/dd/yyyy"), {type:"date"});
111 //        equal(val.toString("MM/dd/yyyy"), res.toString("MM/dd/yyyy"));
112 //    });
113 //    test("parse_time", function () {
114 //        var val = openerp.web.str_to_time("12:34:23");
115 //        var res = openerp.web.parse_value(val.toString("HH:mm:ss"), {type:"time"});
116 //        equal(val.toString("HH:mm:ss"), res.toString("HH:mm:ss"));
117 //    });
118     test('parse_integer', function (instance) {
119         var val = instance.web.parse_value('123,456', {type: 'integer'});
120         equal(val, 123456);
121         instance.web._t.database.parameters.thousands_sep = '|';
122         var val2 = instance.web.parse_value('123|456', {type: 'integer'});
123         equal(val2, 123456);
124     });
125     test("parse_float", function (instance) {
126         var str = "134,112.1234";
127         var val = instance.web.parse_value(str, {type:"float"});
128         equal(val, 134112.1234);
129         var str = "-134,112.1234";
130         var val = instance.web.parse_value(str, {type:"float"});
131         equal(val, -134112.1234);
132         _.extend(instance.web._t.database.parameters, {
133             decimal_point: ',',
134             thousands_sep: '.'
135         });
136         var val3 = instance.web.parse_value('123.456,789', {type: 'float'});
137         equal(val3, 123456.789);
138     });
139     test('intersperse', function (instance) {
140         var g = instance.web.intersperse;
141         equal(g("", []), "");
142         equal(g("0", []), "0");
143         equal(g("012", []), "012");
144         equal(g("1", []), "1");
145         equal(g("12", []), "12");
146         equal(g("123", []), "123");
147         equal(g("1234", []), "1234");
148         equal(g("123456789", []), "123456789");
149         equal(g("&ab%#@1", []), "&ab%#@1");
150
151         equal(g("0", []), "0");
152         equal(g("0", [1]), "0");
153         equal(g("0", [2]), "0");
154         equal(g("0", [200]), "0");
155
156         equal(g("12345678", [0], '.'), '12345678');
157         equal(g("", [1], '.'), '');
158         equal(g("12345678", [1], '.'), '1234567.8');
159         equal(g("12345678", [1], '.'), '1234567.8');
160         equal(g("12345678", [2], '.'), '123456.78');
161         equal(g("12345678", [2, 1], '.'), '12345.6.78');
162         equal(g("12345678", [2, 0], '.'), '12.34.56.78');
163         equal(g("12345678", [-1, 2], '.'), '12345678');
164         equal(g("12345678", [2, -1], '.'), '123456.78');
165         equal(g("12345678", [2, 0, 1], '.'), '12.34.56.78');
166         equal(g("12345678", [2, 0, 0], '.'), '12.34.56.78');
167         equal(g("12345678", [2, 0, -1], '.'), '12.34.56.78');
168         equal(g("12345678", [3,3,3,3], '.'), '12.345.678');
169         equal(g("12345678", [3,0], '.'), '12.345.678');
170     });
171     test('format_integer', function (instance) {
172         instance.web._t.database.parameters.grouping = [3, 3, 3, 3];
173         equal(instance.web.format_value(1000000, {type: 'integer'}),
174               '1,000,000');
175         instance.web._t.database.parameters.grouping = [3, 2, -1];
176         equal(instance.web.format_value(106500, {type: 'integer'}),
177               '1,06,500');
178         instance.web._t.database.parameters.grouping = [1, 2, -1];
179         equal(instance.web.format_value(106500, {type: 'integer'}),
180               '106,50,0');
181     });
182     test('format_float', function (instance) {
183         instance.web._t.database.parameters.grouping = [3, 3, 3, 3];
184         equal(instance.web.format_value(1000000, {type: 'float'}),
185               '1,000,000.00');
186         instance.web._t.database.parameters.grouping = [3, 2, -1];
187         equal(instance.web.format_value(106500, {type: 'float'}),
188               '1,06,500.00');
189         instance.web._t.database.parameters.grouping = [1, 2, -1];
190         equal(instance.web.format_value(106500, {type: 'float'}),
191               '106,50,0.00');
192
193         _.extend(instance.web._t.database.parameters, {
194             grouping: [3, 0],
195             decimal_point: ',',
196             thousands_sep: '.'
197         });
198         equal(instance.web.format_value(6000, {type: 'float'}),
199               '6.000,00');
200     });
201 });
202 openerp.testing.section('web-formats', {
203     dependencies: ['web.formats']
204 }, function (test) {
205     test('format stripper', function (instance) {
206         strictEqual(instance.web.strip_raw_chars('%a, %Y %b %d'),
207                     '%a, %Y %b %d');
208         strictEqual(instance.web.strip_raw_chars('%a, %Y.eko %bren %da'),
209                     '%a, %Y. %b %d');
210     });
211     test('ES date format', function (instance) {
212         instance.web._t.database.parameters.date_format = '%a, %Y %b %d';
213         var date = instance.web.str_to_date("2009-05-04");
214         strictEqual(instance.web.format_value(date, {type:"date"}),
215                     'Mon, 2009 May 04');
216         strictEqual(instance.web.parse_value('Mon, 2009 May 04', {type: 'date'}),
217                     '2009-05-04');
218     });
219     test('extended ES date format', function (instance) {
220             instance.web._t.database.parameters.date_format = '%a, %Y.eko %bren %da';
221             var date = instance.web.str_to_date("2009-05-04");
222             strictEqual(instance.web.format_value(date, {type:"date"}),
223                         'Mon, 2009. May 04');
224             strictEqual(instance.web.parse_value('Mon, 2009. May 04', {type: 'date'}),
225                         '2009-05-04');
226         });
227
228 });