Merge branch 'master' of https://github.com/odoo/odoo
[odoo/odoo.git] / addons / web / static / test / formats.js
1 openerp.testing.section('web-formats', {
2     dependencies: ['web.formats']
3 }, function (test) {
4     test("format_datetime", function (instance) {
5         var date = instance.web.str_to_datetime("2009-05-04 12:34:23");
6         var str = instance.web.format_value(date, {type:"datetime"});
7         equal(str, moment(date).format("MM/DD/YYYY HH:mm:ss"));
8     });
9     test("format_date", function (instance) {
10         var date = instance.web.str_to_datetime("2009-05-04 12:34:23");
11         var str = instance.web.format_value(date, {type:"date"});
12         equal(str, moment(date).format("MM/DD/YYYY"));
13     });
14     test("format_time", function (instance) {
15         var date = instance.web.str_to_datetime("2009-05-04 12:34:23");
16         var str = instance.web.format_value(date, {type:"time"});
17         equal(str, moment(date).format("HH:mm:ss"));
18     });
19     test("format_float_time", function (instance) {
20         strictEqual(
21             instance.web.format_value(1.0, {type:'float', widget:'float_time'}),
22             '01:00');
23         strictEqual(
24             instance.web.format_value(0.9853, {type:'float', widget:'float_time'}),
25             '00:59');
26         strictEqual(
27             instance.web.format_value(0.0085, {type:'float', widget:'float_time'}),
28             '00:01');
29         strictEqual(
30             instance.web.format_value(-1.0, {type:'float', widget:'float_time'}),
31             '-01:00');
32         strictEqual(
33             instance.web.format_value(-0.9853, {type:'float', widget:'float_time'}),
34             '-00:59');
35         strictEqual(
36             instance.web.format_value(-0.0085, {type:'float', widget:'float_time'}),
37             '-00:01');
38         strictEqual(
39             instance.web.format_value(4.9999, {type:'float', widget:'float_time'}),
40             '05:00');
41         strictEqual(
42             instance.web.format_value(-6.9999, {type:'float', widget:'float_time'}),
43             '-07:00');
44     });
45     test("format_float", function (instance) {
46         var fl = 12.1234;
47         var str = instance.web.format_value(fl, {type:"float"});
48         equal(str, "12.12");
49         equal(instance.web.format_value(12.02, {type: 'float'}),
50               '12.02');
51         equal(instance.web.format_value(0.0002, {type: 'float', digits: [1, 3]}),
52               '0.000');
53         equal(instance.web.format_value(0.0002, {type: 'float', digits: [1, 4]}),
54               '0.0002');
55         equal(instance.web.format_value(0.0002, {type: 'float', digits: [1, 6]}),
56               '0.000200');
57         equal(instance.web.format_value(1, {type: 'float', digits: [1, 6]}),
58               '1.000000');
59         equal(instance.web.format_value(1, {type: 'float'}),
60               '1.00');
61         equal(instance.web.format_value(-11.25, {type: 'float'}),
62               "-11.25");
63         instance.web._t.database.parameters.grouping = [1, 2, -1];
64         equal(instance.web.format_value(1111111.25, {type: 'float'}),
65               "1111,11,1.25");
66         instance.web._t.database.parameters.grouping = [1, 0];
67         equal(instance.web.format_value(-11.25, {type: 'float'}),
68               "-1,1.25");
69     });
70     test('parse_integer', function (instance) {
71         var tmp = instance.web._t.database.parameters.thousands_sep;
72         try {
73             var val = instance.web.parse_value('123,456', {type: 'integer'});
74             equal(val, 123456);
75             instance.web._t.database.parameters.thousands_sep = '|';
76             var val2 = instance.web.parse_value('123|456', {type: 'integer'});
77             equal(val2, 123456);
78         } finally {
79             instance.web._t.database.parameters.thousands_sep = tmp;
80         }
81     });
82     test("parse_float", function (instance) {
83         var tmp1 = instance.web._t.database.parameters.thousands_sep;
84         var tmp2 = instance.web._t.database.parameters.decimal_point;
85         try {
86             var str = "134,112.1234";
87             var val = instance.web.parse_value(str, {type:"float"});
88             equal(val, 134112.1234);
89             str = "-134,112.1234";
90             val = instance.web.parse_value(str, {type:"float"});
91             equal(val, -134112.1234);
92             _.extend(instance.web._t.database.parameters, {
93                 decimal_point: ',',
94                 thousands_sep: '.'
95             });
96             var val3 = instance.web.parse_value('123.456,789', {type: 'float'});
97             equal(val3, 123456.789);
98         } finally {
99             instance.web._t.database.parameters.thousands_sep = tmp1;
100             instance.web._t.database.parameters.decimal_point = tmp2;
101         }
102     });
103     test('intersperse', function (instance) {
104         var g = instance.web.intersperse;
105         equal(g("", []), "");
106         equal(g("0", []), "0");
107         equal(g("012", []), "012");
108         equal(g("1", []), "1");
109         equal(g("12", []), "12");
110         equal(g("123", []), "123");
111         equal(g("1234", []), "1234");
112         equal(g("123456789", []), "123456789");
113         equal(g("&ab%#@1", []), "&ab%#@1");
114
115         equal(g("0", []), "0");
116         equal(g("0", [1]), "0");
117         equal(g("0", [2]), "0");
118         equal(g("0", [200]), "0");
119
120         equal(g("12345678", [0], '.'), '12345678');
121         equal(g("", [1], '.'), '');
122         equal(g("12345678", [1], '.'), '1234567.8');
123         equal(g("12345678", [1], '.'), '1234567.8');
124         equal(g("12345678", [2], '.'), '123456.78');
125         equal(g("12345678", [2, 1], '.'), '12345.6.78');
126         equal(g("12345678", [2, 0], '.'), '12.34.56.78');
127         equal(g("12345678", [-1, 2], '.'), '12345678');
128         equal(g("12345678", [2, -1], '.'), '123456.78');
129         equal(g("12345678", [2, 0, 1], '.'), '12.34.56.78');
130         equal(g("12345678", [2, 0, 0], '.'), '12.34.56.78');
131         equal(g("12345678", [2, 0, -1], '.'), '12.34.56.78');
132         equal(g("12345678", [3,3,3,3], '.'), '12.345.678');
133         equal(g("12345678", [3,0], '.'), '12.345.678');
134     });
135     test('format_integer', function (instance) {
136         instance.web._t.database.parameters.grouping = [3, 3, 3, 3];
137         equal(instance.web.format_value(1000000, {type: 'integer'}),
138               '1,000,000');
139         instance.web._t.database.parameters.grouping = [3, 2, -1];
140         equal(instance.web.format_value(106500, {type: 'integer'}),
141               '1,06,500');
142         instance.web._t.database.parameters.grouping = [1, 2, -1];
143         equal(instance.web.format_value(106500, {type: 'integer'}),
144               '106,50,0');
145     });
146     test('format_float', function (instance) {
147         instance.web._t.database.parameters.grouping = [3, 3, 3, 3];
148         equal(instance.web.format_value(1000000, {type: 'float'}),
149               '1,000,000.00');
150         instance.web._t.database.parameters.grouping = [3, 2, -1];
151         equal(instance.web.format_value(106500, {type: 'float'}),
152               '1,06,500.00');
153         instance.web._t.database.parameters.grouping = [1, 2, -1];
154         equal(instance.web.format_value(106500, {type: 'float'}),
155               '106,50,0.00');
156
157         _.extend(instance.web._t.database.parameters, {
158             grouping: [3, 0],
159             decimal_point: ',',
160             thousands_sep: '.'
161         });
162         equal(instance.web.format_value(6000, {type: 'float'}),
163               '6.000,00');
164     });
165 });
166 openerp.testing.section('web-formats', {
167     dependencies: ['web.formats']
168 }, function (test) {
169     test('ES date format', function (instance) {
170         var old_format = instance.web._t.database.parameters.date_format;
171         instance.web._t.database.parameters.date_format = '%a, %Y %b %d';
172         var date = instance.web.str_to_date("2009-05-04");
173         strictEqual(instance.web.format_value(date, {type:"date"}),
174                     'Mon, 2009 May 04');
175         strictEqual(instance.web.parse_value('Mon, 2009 May 04', {type: 'date'}),
176                     '2009-05-04');
177         instance.web._t.database.parameters.date_format = old_format;
178     });
179     test('extended ES date format', function (instance) {
180         var old_format = instance.web._t.database.parameters.date_format;
181         instance.web._t.database.parameters.date_format = '%a, %Y.eko %b %da';
182         var date = instance.web.str_to_date("2009-05-04");
183         strictEqual(instance.web.format_value(date, {type:"date"}),
184                     'Mon, 2009.eko May 04a');
185         strictEqual(instance.web.parse_value('Mon, 2009.eko May 04a', {type: 'date'}),
186                     '2009-05-04');
187         instance.web._t.database.parameters.date_format = old_format;
188     });
189
190 });