diff --git a/api/portfolio.js b/api/portfolio.js index 7c79300c..269c9b6a 100644 --- a/api/portfolio.js +++ b/api/portfolio.js @@ -1,6 +1,6 @@ import axios from 'axios'; import {cacheAdapterEnhancer, Cache} from 'axios-extensions'; -import {differenceInCalendarISOWeeks} from 'date-fns'; +import {differenceInCalendarUTCISOWeeks} from '~/assets/utils/date-fns.js'; import format from 'date-fns/esm/format'; import {PORTFOLIO_API_URL, NETWORK, MAINNET} from "~/assets/variables.js"; import {toSnake} from '~/assets/utils/snake-case.js'; @@ -315,7 +315,7 @@ export function getCmcCoinList() { // monday of 43 ISO week export const BATTLE_START_DATE = new Date('2022-10-24T00:00:00Z'); // week number starting from 1 -export const BATTLE_CURRENT_WEEK_NUMBER = differenceInCalendarISOWeeks(new Date(), BATTLE_START_DATE) + 1; +export const BATTLE_CURRENT_WEEK_NUMBER = differenceInCalendarUTCISOWeeks(new Date(), BATTLE_START_DATE) + 1; /** diff --git a/assets/utils/date-fns.js b/assets/utils/date-fns.js new file mode 100644 index 00000000..c900802a --- /dev/null +++ b/assets/utils/date-fns.js @@ -0,0 +1,13 @@ +import getUTCISOWeekSrc from 'date-fns/esm/_lib/getUTCISOWeek/index.js'; + +const getUTCISOWeek = getUTCISOWeekSrc.default || getUTCISOWeekSrc; +console.log(getUTCISOWeek); +/** + * + * @param {Date|number} dateLeft + * @param {Date|number} dateRight + * @return {number} + */ +export function differenceInCalendarUTCISOWeeks(dateLeft, dateRight) { + return getUTCISOWeek(dateLeft) - getUTCISOWeek(dateRight); +} diff --git a/jest-babel.config.js b/jest-babel.config.js new file mode 100644 index 00000000..5ec297a8 --- /dev/null +++ b/jest-babel.config.js @@ -0,0 +1,10 @@ +// Custom Jest transform implementation that wraps babel-jest and injects our +// babel presets, so we don't have to use .babelrc. + +import babelJest from 'babel-jest'; +const createTransformer = babelJest.createTransformer || babelJest.default.createTransformer; +export default createTransformer({ + babelrc: false, + "presets": ["@babel/preset-env"], + // ignore: false, // do nothing, jest's transformIgnorePatterns works instead +}); diff --git a/jest.config.js b/jest.config.js index 7aba2508..076c0429 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,7 +1,13 @@ +const esModules = ['date-fns'].join('|'); + export default { moduleNameMapper: { '~(.*)$': '/$1', }, + transform: { + '^.+\\.jsx?$': '/jest-babel.config.js', + }, + transformIgnorePatterns: [`/node_modules/(?!${esModules})`], // testEnvironment: 'node', // collectCoverage: true, // collectCoverageFrom: ["./src/**"], diff --git a/tests/date-fns.test.js b/tests/date-fns.test.js new file mode 100644 index 00000000..5a27b6b8 --- /dev/null +++ b/tests/date-fns.test.js @@ -0,0 +1,10 @@ +import {differenceInCalendarUTCISOWeeks} from '~/assets/utils/date-fns.js'; + +test('differenceInCalendarUTCISOWeeks', () => { + const BATTLE_START_DATE = new Date('2022-10-24T00:00:00Z'); + const now = new Date("2022-11-07T01:20:44.498+03:00"); + expect(differenceInCalendarUTCISOWeeks(new Date("2022-11-07T01:20:44.498+03:00"), BATTLE_START_DATE)) + .toBe(1); + expect(differenceInCalendarUTCISOWeeks(new Date("2022-11-07T01:20:44.498Z"), BATTLE_START_DATE)) + .toBe(2); +});