Skip to content

Commit a2b9330

Browse files
authored
WEBDEV-7387 Fix off-by-one years published on result tiles (#453)
* Upgrade to alpha field-parsers & other dependencies * Fix bug in how Jan 1 midnight dates are recognized * Correct unit tests * Undo some overzealous test adjustments * Undo a couple of unneeded test adjustments * Upgrade off alpha versions
1 parent bc2ae16 commit a2b9330

File tree

7 files changed

+26
-26
lines changed

7 files changed

+26
-26
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@
2525
"dependencies": {
2626
"@internetarchive/analytics-manager": "^0.1.4",
2727
"@internetarchive/feature-feedback": "^0.1.4",
28-
"@internetarchive/field-parsers": "^0.1.4",
28+
"@internetarchive/field-parsers": "^1.0.0",
2929
"@internetarchive/histogram-date-range": "^1.2.1",
3030
"@internetarchive/ia-activity-indicator": "^0.0.6",
3131
"@internetarchive/ia-dropdown": "^1.3.10",
32-
"@internetarchive/iaux-item-metadata": "^1.0.4",
32+
"@internetarchive/iaux-item-metadata": "^1.0.5",
3333
"@internetarchive/infinite-scroller": "^1.0.1",
3434
"@internetarchive/modal-manager": "^2.0.1",
35-
"@internetarchive/search-service": "^2.2.0",
35+
"@internetarchive/search-service": "^2.2.1",
3636
"@internetarchive/shared-resize-observer": "^0.2.0",
3737
"@lit/localize": "^0.12.2",
3838
"dompurify": "^3.2.4",

src/utils/local-date-from-utc.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ export function localDateFromUTC(date: Date): Date {
1111
*/
1212
export function isFirstMillisecondOfUTCYear(date?: Date): boolean {
1313
if (!date) return false;
14-
return localDateFromUTC(date).toISOString().endsWith('-01-01T00:00:00.000Z');
14+
return date.toISOString().endsWith('-01-01T00:00:00.000Z');
1515
}

test/tiles/grid/item-tile.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ describe('Item Tile', () => {
247247

248248
it('should only show the year for a date published of Jan 1 at midnight UTC', async () => {
249249
const model: Partial<TileModel> = {
250-
datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
250+
datePublished: new Date('2012-01-01T00:00:00Z'),
251251
};
252252

253253
const el = await fixture<ItemTile>(html`

test/tiles/list/tile-list-compact.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ describe('List Tile Compact', () => {
161161

162162
it('should only show the year for a date published of Jan 1 at midnight UTC', async () => {
163163
const model: Partial<TileModel> = {
164-
datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
164+
datePublished: new Date('2012-01-01T00:00:00Z'),
165165
};
166166

167167
const el = await fixture<TileListCompact>(html`

test/tiles/list/tile-list.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,9 @@ describe('List Tile', () => {
216216
expect(dateRow?.textContent?.trim()).to.contain('Reviewed: Jan 02, 2013');
217217
});
218218

219-
it('should only show the year for a date published of Jan 1 at midnight', async () => {
219+
it('should only show the year for a date published of Jan 1 at midnight UTC', async () => {
220220
const model: Partial<TileModel> = {
221-
datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
221+
datePublished: new Date('2012-01-01T00:00:00Z'),
222222
};
223223

224224
const el = await fixture<TileList>(html`
@@ -234,7 +234,7 @@ describe('List Tile', () => {
234234
expect(dateRow?.textContent?.trim()).to.contain('Published: 2012');
235235
});
236236

237-
it('should show full date added/archived/reviewed, even on Jan 1 at midnight', async () => {
237+
it('should show full date added/archived/reviewed, even on Jan 1 at midnight UTC', async () => {
238238
const model: Partial<TileModel> = {
239239
dateAdded: new Date(2010, 0, 1, 0, 0, 0, 0),
240240
dateArchived: new Date(2011, 0, 1, 0, 0, 0, 0),

test/utils/local-date-from-utc.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,18 @@ describe('localDateFromUTC', () => {
1616

1717
describe('isFirstMillisecondOfUTCYear', () => {
1818
it('returns true when date is exactly Jan 1 at midnight in UTC', async () => {
19-
const midnightOnNewYearsDay = new Date(2010, 0, 1, 0, 0, 0, 0);
19+
const midnightOnNewYearsDay = new Date('2010-01-01T00:00:00Z');
2020
expect(isFirstMillisecondOfUTCYear(midnightOnNewYearsDay)).to.be.true;
2121
});
2222

2323
it('returns false when date is not exactly Jan 1 at midnight in UTC', async () => {
24-
const oneMillisecondTooEarly = new Date(2009, 11, 31, 23, 59, 59, 999);
24+
const oneMillisecondTooEarly = new Date('2009-12-31T23:59:59.999Z');
2525
expect(isFirstMillisecondOfUTCYear(oneMillisecondTooEarly)).to.be.false;
2626

27-
const oneMillisecondTooLate = new Date(2010, 0, 1, 0, 0, 0, 1);
27+
const oneMillisecondTooLate = new Date('2010-01-01T00:00:00.001Z');
2828
expect(isFirstMillisecondOfUTCYear(oneMillisecondTooLate)).to.be.false;
2929

30-
const middleOfTheYear = new Date(2010, 6, 1, 0, 0, 0, 0);
30+
const middleOfTheYear = new Date('2010-06-01T00:00:00Z');
3131
expect(isFirstMillisecondOfUTCYear(middleOfTheYear)).to.be.false;
3232
});
3333

yarn.lock

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,10 @@
311311
"@internetarchive/shared-resize-observer" "^0.2.0"
312312
lit "^2.2.7"
313313

314-
"@internetarchive/field-parsers@^0.1.4":
315-
version "0.1.4"
316-
resolved "https://registry.npmjs.org/@internetarchive/field-parsers/-/field-parsers-0.1.4.tgz"
317-
integrity sha512-J5nhMsIU91eXnfoApa6SE0PffPbwK1Cd3YTLX/HjgayzMbXVkQvfebfVKSaoPmzHRRttbtY3Sg9FjviCwBq6qg==
314+
"@internetarchive/field-parsers@^1.0.0":
315+
version "1.0.0"
316+
resolved "https://registry.yarnpkg.com/@internetarchive/field-parsers/-/field-parsers-1.0.0.tgz#ee3d3efb280860018193c2c52d54ec784e9bb202"
317+
integrity sha512-cbD0FtJOjzBm7exxFrzrkHnqbmalKbEXA4i7KrwhUGBojF/QTTLAvaIRXH/bfoiTyCh6YT1/E/mULAQPdB6yvQ==
318318

319319
"@internetarchive/histogram-date-range@^1.2.1":
320320
version "1.2.1"
@@ -339,12 +339,12 @@
339339
dependencies:
340340
lit "^2.8.0"
341341

342-
"@internetarchive/iaux-item-metadata@^1.0.4":
343-
version "1.0.4"
344-
resolved "https://registry.npmjs.org/@internetarchive/iaux-item-metadata/-/iaux-item-metadata-1.0.4.tgz"
345-
integrity sha512-9md21gRp4MxupvwU6d84HCybW1mK1ihe7H42FTaSlNTYSqZQaOFcYqvvG9QPKjxQj+4wXjbk/ulxz8onEAWiHA==
342+
"@internetarchive/iaux-item-metadata@^1.0.4", "@internetarchive/iaux-item-metadata@^1.0.5":
343+
version "1.0.5"
344+
resolved "https://registry.yarnpkg.com/@internetarchive/iaux-item-metadata/-/iaux-item-metadata-1.0.5.tgz#d6854754aced46e12dae4ea89aeb4a14b5643391"
345+
integrity sha512-FArosV3Y/x588QjBSrH15mqeWCivh7hGgRGXoSdauuwqRyPjY/FI3VM69Ox92zZ9Qrm8JOTn3dzbHN0WbiiVtg==
346346
dependencies:
347-
"@internetarchive/field-parsers" "^0.1.4"
347+
"@internetarchive/field-parsers" "^1.0.0"
348348
typescript-memoize "^1.1.1"
349349

350350
"@internetarchive/icon-close@^1.3.4":
@@ -407,10 +407,10 @@
407407
resolved "https://registry.npmjs.org/@internetarchive/result-type/-/result-type-0.0.1.tgz"
408408
integrity sha512-sWahff5oP1xAK1CwAu1/5GTG2RXsdx/sQKn4SSOWH0r0vU2QoX9kAom/jSXeBsmgK0IjTc+9Ty9407SMORi+nQ==
409409

410-
"@internetarchive/search-service@^2.2.0":
411-
version "2.2.0"
412-
resolved "https://registry.yarnpkg.com/@internetarchive/search-service/-/search-service-2.2.0.tgz#a4175322f0f7043481ee51af2bb13af5eb22377c"
413-
integrity sha512-Gyg9HT5JLdc17Dh4F+Ijl2YFgNIzekPHHAzaNcMbWW9ZNcUU8CnxWra9oHHc9PbJYEL/K8V4Hn3CP3YXPYQSsA==
410+
"@internetarchive/search-service@^2.2.1":
411+
version "2.2.1"
412+
resolved "https://registry.yarnpkg.com/@internetarchive/search-service/-/search-service-2.2.1.tgz#bb3339b3ebbbd8b4d5e02166aa90b8309073ff58"
413+
integrity sha512-MNwlgvC5M6XNMq/7fuK6Wvg3oF7tJLGwWhEovJeZSmNSwaiL/tYHMofNuCYiGcSpZq4vENcqQRnJ6xgk3mkpqg==
414414
dependencies:
415415
"@internetarchive/iaux-item-metadata" "^1.0.4"
416416
"@internetarchive/result-type" "^0.0.1"

0 commit comments

Comments
 (0)