Skip to content

Commit ab9942b

Browse files
authored
[-] Technical - Use true timezone data ('Europe/Paris') instead of offset. (#282)
1 parent bab73bd commit ab9942b

File tree

6 files changed

+29
-16
lines changed

6 files changed

+29
-16
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Change Log
22

33
## [Unreleased]
4+
### Changed
5+
- Technical - Use true timezone data ('Europe/Paris') instead of offset.
46

57
## RELEASE 5.5.0 - 2020-01-02
68
### Added

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"http-errors": "1.7.2",
3131
"lodash": "4.17.13",
3232
"moment": "2.24.0",
33+
"moment-timezone": "0.5.27",
3334
"semver": "5.6.0"
3435
},
3536
"devDependencies": {
@@ -64,4 +65,4 @@
6465
"pre-commit": [
6566
"pre-commit"
6667
]
67-
}
68+
}

src/services/line-stat-getter.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22
import _ from 'lodash';
33
import P from 'bluebird';
44
import moment from 'moment';
5+
// NOTICE: moment-timezone extends moment itself,
6+
// Importing it will automatically add functions to moment.
7+
import 'moment-timezone';
58
import Interface from 'forest-express';
69
import QueryBuilder from './query-builder';
710
import utils from '../utils/schema';
811

912
function LineStatFinder(model, params, opts) {
1013
const schema = Interface.Schemas.schemas[utils.getModelName(model)];
11-
const timezone = (-parseInt(params.timezone, 10)).toString();
14+
const timezone = -parseInt(moment().tz(params.timezone).format('Z'), 10);
1215
const timezoneOffset = timezone * 60 * 60 * 1000;
1316
const queryBuilder = new QueryBuilder(model, params, opts);
1417

test/tests/services/query-builder.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ describe('service > query-builder', () => {
9696
describe('on basic field', () => {
9797
it('should add the join correctly', () => {
9898
expect.assertions(1);
99-
const queryBuilder = new QueryBuilder(TreeModel, { timezone: '+02:00' }, options);
99+
const queryBuilder = new QueryBuilder(TreeModel, { timezone: 'Europe/Paris' }, options);
100100
const field = {
101101
field: 'owner',
102102
displayName: 'owner',
@@ -120,7 +120,7 @@ describe('service > query-builder', () => {
120120
describe('on virtual field', () => {
121121
it('the join should be ignored', () => {
122122
expect.assertions(1);
123-
const queryBuilder = new QueryBuilder(TreeModel, { timezone: '+02:00' }, options);
123+
const queryBuilder = new QueryBuilder(TreeModel, { timezone: 'Europe/Paris' }, options);
124124
const field = {
125125
field: 'owner',
126126
displayName: 'owner',
@@ -137,7 +137,7 @@ describe('service > query-builder', () => {
137137
describe('on a field with integration', () => {
138138
it('the join should be ignored', () => {
139139
expect.assertions(1);
140-
const queryBuilder = new QueryBuilder(TreeModel, { timezone: '+02:00' }, options);
140+
const queryBuilder = new QueryBuilder(TreeModel, { timezone: 'Europe/Paris' }, options);
141141
const field = {
142142
field: 'owner',
143143
displayName: 'owner',

test/tests/services/resources-getter.test.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ describe('service > resources-getter', () => {
146146
},
147147
page: { number: '1', size: '30' },
148148
search: 'gift',
149-
timezone: '+02:00',
149+
timezone: 'Europe/Paris',
150150
};
151151

152152
const result = await new ResourcesGetter(OrderModel, options, parameters).perform();
@@ -158,7 +158,7 @@ describe('service > resources-getter', () => {
158158
expect.assertions(1);
159159
const parameters = {
160160
search: 'gift',
161-
timezone: '+02:00',
161+
timezone: 'Europe/Paris',
162162
};
163163

164164
const count = await new ResourcesGetter(OrderModel, options, parameters).count();
@@ -175,7 +175,7 @@ describe('service > resources-getter', () => {
175175
},
176176
page: { number: '1', size: '30' },
177177
filters: JSON.stringify({ field: 'giftMessage', operator: 'starts_with', value: 'Here' }),
178-
timezone: '+02:00',
178+
timezone: 'Europe/Paris',
179179
};
180180

181181
const result = await new ResourcesGetter(OrderModel, options, parameters).perform();
@@ -199,7 +199,7 @@ describe('service > resources-getter', () => {
199199
{ field: 'amount', operator: 'greater_than', value: '1000' },
200200
],
201201
}),
202-
timezone: '+02:00',
202+
timezone: 'Europe/Paris',
203203
};
204204

205205
const result = await new ResourcesGetter(OrderModel, options, parameters).perform();
@@ -217,7 +217,7 @@ describe('service > resources-getter', () => {
217217
},
218218
page: { number: '1', size: '30' },
219219
filters: JSON.stringify({ field: 'orderer:name', operator: 'contains', value: 'Cohle' }),
220-
timezone: '+02:00',
220+
timezone: 'Europe/Paris',
221221
};
222222

223223

@@ -242,7 +242,7 @@ describe('service > resources-getter', () => {
242242
{ field: 'orderer:name', operator: 'ends_with', value: 'Gardner' },
243243
],
244244
}),
245-
timezone: '+02:00',
245+
timezone: 'Europe/Paris',
246246
};
247247

248248
const result = await new ResourcesGetter(OrderModel, options, parameters).perform();
@@ -265,7 +265,7 @@ describe('service > resources-getter', () => {
265265
{ field: 'receiver:name', operator: 'ends_with', value: 'Gardner' },
266266
],
267267
}),
268-
timezone: '+02:00',
268+
timezone: 'Europe/Paris',
269269
};
270270

271271
const result = await new ResourcesGetter(OrderModel, options, parameters).perform();
@@ -301,7 +301,7 @@ describe('service > resources-getter', () => {
301301
},
302302
],
303303
}),
304-
timezone: '+02:00',
304+
timezone: 'Europe/Paris',
305305
};
306306

307307
const result = await new ResourcesGetter(OrderModel, options, parameters).perform();
@@ -319,7 +319,7 @@ describe('service > resources-getter', () => {
319319
fields: { films: 'description' },
320320
page: { number: '1', size: '15' },
321321
searchExtended: '0',
322-
timezone: '+01:00',
322+
timezone: 'Europe/Paris',
323323
};
324324

325325
const [result] = await new ResourcesGetter(FilmModel, options, parameters).perform();
@@ -338,7 +338,7 @@ describe('service > resources-getter', () => {
338338
fields: { films: 'title' },
339339
page: { number: '1', size: '15' },
340340
searchExtended: '0',
341-
timezone: '+01:00',
341+
timezone: 'Europe/Paris',
342342
};
343343

344344
const [result] = await new ResourcesGetter(FilmModel, options, parameters).perform();

yarn.lock

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4188,6 +4188,13 @@ [email protected]:
41884188
dependencies:
41894189
moment ">= 2.9.0"
41904190

4191+
4192+
version "0.5.27"
4193+
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.27.tgz#73adec8139b6fe30452e78f210f27b1f346b8877"
4194+
integrity sha512-EIKQs7h5sAsjhPCqN6ggx6cEbs94GK050254TIJySD1bzoM5JTYDwAU1IoVOeTOL6Gm27kYJ51/uuvq1kIlrbw==
4195+
dependencies:
4196+
moment ">= 2.9.0"
4197+
41914198
[email protected], "moment@>= 2.9.0":
41924199
version "2.24.0"
41934200
resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
@@ -5322,7 +5329,7 @@ set-value@^0.4.3:
53225329
is-plain-object "^2.0.1"
53235330
to-object-path "^0.3.0"
53245331

5325-
set-value@^2.0.1:
5332+
set-value@^2.0.0:
53265333
version "2.0.1"
53275334
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
53285335
integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==

0 commit comments

Comments
 (0)