From d2ed4ff4568406492dd59a2b199f26aaed25739b Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Fri, 22 Apr 2022 08:25:29 -0400 Subject: [PATCH 01/12] Add UtcDate jest test (for validating moment -> date_fns swap) --- client/src/components/UtcDate.test.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 client/src/components/UtcDate.test.js diff --git a/client/src/components/UtcDate.test.js b/client/src/components/UtcDate.test.js new file mode 100644 index 00000000000..9aae4babdd1 --- /dev/null +++ b/client/src/components/UtcDate.test.js @@ -0,0 +1,20 @@ +import { shallowMount } from "@vue/test-utils"; +import { getLocalVue } from "jest/helpers"; +import UtcDate from "./UtcDate.vue"; + +describe("UTCDate component", () => { + const localVue = getLocalVue(); + + it("Loads a date in default mode, computeds work", () => { + const wrapper = shallowMount(UtcDate, { + propsData: { date: "2015-10-21 16:29:00.000" }, + localVue, + }); + // expect elapsed time to be years ago. + expect(wrapper.text()).toBe("2015-10-21T16:29:00Z"); + expect(wrapper.vm.elapsedTime).toContain("years ago"); + expect(wrapper.vm.fullDate).toBe("2015-10-21T16:29:00Z"); + expect(wrapper.vm.formattedDate).toBe("2015-10-21 16:29:00.000"); + expect(wrapper.vm.pretty).toBe("Wednesday Oct 21st 4:29:00 2015 UTC"); + }); +}); From f49c21306e74ca53077db5a3bcc47cfab0d90057 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Fri, 22 Apr 2022 09:11:50 -0400 Subject: [PATCH 02/12] Swap to more standard formatting package script names (left prettier alias). --- .circleci/config.yml | 2 +- Makefile | 4 ++-- client/package.json | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4e82f32b0b7..24a879b5de2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -111,7 +111,7 @@ jobs: - run: cd client && yarn install --frozen-lockfile - *save_yarn_cache - run: cd client && yarn run eslint - - run: cd client && yarn run prettier-check + - run: cd client && yarn run format-check workflows: version: 2 get_code_and_test: diff --git a/Makefile b/Makefile index 9b5fd1df9b1..3c489106252 100644 --- a/Makefile +++ b/Makefile @@ -178,7 +178,7 @@ client-production-maps: node-deps ## Rebuild client-side artifacts for a product cd client && yarn run build-production-maps client-format: node-deps ## Reformat client code - cd client && yarn run prettier + cd client && yarn run format client-watch: node-deps ## A useful target for parallel development building. See also client-dev-server. cd client && yarn run watch @@ -196,7 +196,7 @@ client-eslint: node-deps # Run client linting cd client && yarn run eslint client-format-check: node-deps # Run client formatting check - cd client && yarn run prettier-check + cd client && yarn run format-check client-lint: client-eslint client-format-check ## ES lint and check format of client diff --git a/client/package.json b/client/package.json index c282f509608..8a007ada1a3 100644 --- a/client/package.json +++ b/client/package.json @@ -101,8 +101,9 @@ "webpack-production-maps": "GXY_BUILD_SOURCEMAPS=1 NODE_ENV=production webpack", "gulp": "gulp", "save-build-hash": "(git rev-parse HEAD 2>/dev/null || echo '') >../static/client_build_hash.txt", - "prettier": "prettier --write 'src/style/scss/**/*.scss' 'src/**/{*.js,*.vue}' '!src/libs/**'", - "prettier-check": "prettier --check 'src/style/scss/**/*.scss' 'src/**/{*.js,*.vue}' '!src/libs/**'", + "format": "prettier --write 'src/style/scss/**/*.scss' 'src/**/{*.js,*.vue}' '!src/libs/**'", + "format-check": "prettier --check 'src/style/scss/**/*.scss' 'src/**/{*.js,*.vue}' '!src/libs/**'", + "prettier": "yarn run format", "test": "yarn run qunit && yarn run jest", "jest": "jest --config tests/jest/jest.config.js", "jest-watch": "jest --config tests/jest/jest.config.js --watch", From 469bdea2efe6f8b5a0697948176f23d624e61063 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Fri, 22 Apr 2022 11:07:58 -0400 Subject: [PATCH 03/12] Use actual galaxy format timestamp in test --- client/src/components/UtcDate.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/components/UtcDate.test.js b/client/src/components/UtcDate.test.js index 9aae4babdd1..7db2eafc3a5 100644 --- a/client/src/components/UtcDate.test.js +++ b/client/src/components/UtcDate.test.js @@ -7,14 +7,14 @@ describe("UTCDate component", () => { it("Loads a date in default mode, computeds work", () => { const wrapper = shallowMount(UtcDate, { - propsData: { date: "2015-10-21 16:29:00.000" }, + propsData: { date: "2015-10-21T16:29:00.000000" }, localVue, }); // expect elapsed time to be years ago. expect(wrapper.text()).toBe("2015-10-21T16:29:00Z"); expect(wrapper.vm.elapsedTime).toContain("years ago"); expect(wrapper.vm.fullDate).toBe("2015-10-21T16:29:00Z"); - expect(wrapper.vm.formattedDate).toBe("2015-10-21 16:29:00.000"); + expect(wrapper.vm.formattedDate).toBe("2015-10-21T16:29:00.000000"); expect(wrapper.vm.pretty).toBe("Wednesday Oct 21st 4:29:00 2015 UTC"); }); }); From 43fb1340a20b9a10c08de023307dc4b93cc6bdd1 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Fri, 22 Apr 2022 18:28:51 -0400 Subject: [PATCH 04/12] Swap UtcDate component to use date-fns instead of moment. --- client/package.json | 1 + client/src/components/UtcDate.test.js | 14 +++++++------- client/src/components/UtcDate.vue | 23 +++++++++++++---------- client/yarn.lock | 5 +++++ 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/client/package.json b/client/package.json index 8a007ada1a3..e67c779e89e 100644 --- a/client/package.json +++ b/client/package.json @@ -35,6 +35,7 @@ "core-js": "^3.21.0", "d3": "3", "date-fns": "^2.28.0", + "date-fns-tz": "^1.3.3", "decode-uri-component": "^0.2.0", "dom-to-image": "^2.6.0", "elkjs": "^0.7.1", diff --git a/client/src/components/UtcDate.test.js b/client/src/components/UtcDate.test.js index 7db2eafc3a5..31ae1a9dd5a 100644 --- a/client/src/components/UtcDate.test.js +++ b/client/src/components/UtcDate.test.js @@ -5,16 +5,16 @@ import UtcDate from "./UtcDate.vue"; describe("UTCDate component", () => { const localVue = getLocalVue(); - it("Loads a date in default mode, computeds work", () => { + it("Loads a date in default mode, can format outputs as expected.", () => { const wrapper = shallowMount(UtcDate, { propsData: { date: "2015-10-21T16:29:00.000000" }, localVue, }); - // expect elapsed time to be years ago. - expect(wrapper.text()).toBe("2015-10-21T16:29:00Z"); + // expect elapsed time to be 'years ago. + expect(wrapper.text()).toBe("2015-10-21T16:29:00.000Z"); expect(wrapper.vm.elapsedTime).toContain("years ago"); - expect(wrapper.vm.fullDate).toBe("2015-10-21T16:29:00Z"); - expect(wrapper.vm.formattedDate).toBe("2015-10-21T16:29:00.000000"); - expect(wrapper.vm.pretty).toBe("Wednesday Oct 21st 4:29:00 2015 UTC"); + expect(wrapper.vm.fullISO).toBe("2015-10-21T16:29:00.000Z"); + expect(wrapper.vm.parsedDate).toEqual(new Date("2015-10-21T16:29:00.000Z")); + expect(wrapper.vm.pretty).toBe("Wednesday Oct 21st 16:29:00 2015 UTC"); }); -}); +}); \ No newline at end of file diff --git a/client/src/components/UtcDate.vue b/client/src/components/UtcDate.vue index 01202fd832b..342a6e801ac 100644 --- a/client/src/components/UtcDate.vue +++ b/client/src/components/UtcDate.vue @@ -1,8 +1,8 @@