From 2dcc0bf165434fd8e38f96875591fd9b73c06bd3 Mon Sep 17 00:00:00 2001 From: Taehyun Hwang Date: Mon, 3 Oct 2022 15:53:24 +0900 Subject: [PATCH] Add ts-jest settings --- api/index.ts | 8 ++++---- babel.config.js | 3 +++ jest.config.js | 14 +++++++++++++- package.json | 6 ++++++ src/calculateRank.js | 1 - src/cards/stats-card.js | 1 - src/cards/types.d.ts | 14 +++++++------- src/fetchers/stats-fetcher.js | 4 ++-- tests/{api.test.js => api.test.ts} | 4 ++-- 9 files changed, 37 insertions(+), 18 deletions(-) create mode 100644 babel.config.js rename tests/{api.test.js => api.test.ts} (98%) diff --git a/api/index.ts b/api/index.ts index 525e32c9fa664..7ba2d186e326e 100644 --- a/api/index.ts +++ b/api/index.ts @@ -1,14 +1,14 @@ +import { renderStatsCard } from "@/src/cards/stats-card"; +import blacklist from "@/src/common/blacklist"; import { clampValue, CONSTANTS, - isLocaleAvailable, parseArray, parseBoolean, renderError, -} from "@/index.js"; -import renderStatsCard from "@/src/cards/stats-card"; -import blacklist from "@/src/common/blacklist"; +} from "@/src/common/utils"; import fetchStats from "@/src/fetchers/stats-fetcher"; +import { isLocaleAvailable } from "@/src/translations"; import * as dotenv from "dotenv"; import express from "express"; diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000000000..0c889d15224bd --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +export default { + presets: ["@babel/preset-env"], +}; diff --git a/jest.config.js b/jest.config.js index b4578cf5aaad5..5494377a6c77d 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,6 +1,14 @@ export default { + transform: { + "^.+\\.[t|j]s$": [ + "ts-jest", + { + useESM: true, + }, + ], + }, + extensionsToTreatAsEsm: [".ts"], clearMocks: true, - transform: {}, testEnvironment: "jsdom", coverageProvider: "v8", testPathIgnorePatterns: ["/node_modules/", "/tests/e2e/"], @@ -9,4 +17,8 @@ export default { "/node_modules/", "/tests/E2E/", ], + moduleNameMapper: { + "^@/(.*)$": "/$1", + }, + modulePaths: [""], }; diff --git a/package.json b/package.json index e6f6517a46344..8dadd625f0f8a 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,14 @@ "devDependencies": { "@actions/core": "^1.9.1", "@actions/github": "^4.0.0", + "@babel/core": "^7.19.3", + "@babel/preset-env": "^7.19.3", "@testing-library/dom": "^8.17.1", "@testing-library/jest-dom": "^5.16.5", + "@types/jest": "^29.1.1", "@uppercod/css-to-object": "^1.1.1", "axios-mock-adapter": "^1.18.1", + "babel-jest": "^29.1.2", "color-contrast-checker": "^2.1.0", "hjson": "^3.2.2", "husky": "^4.2.5", @@ -35,7 +39,9 @@ "lodash.snakecase": "^4.1.1", "parse-diff": "^0.7.0", "prettier": "^2.1.2", + "ts-jest": "^29.0.3", "ts-loader": "^9.4.1", + "tsconfig-paths-jest": "^0.0.1", "tsconfig-paths-webpack-plugin": "^4.0.0", "typescript": "^4.8.4", "webpack": "^5.74.0", diff --git a/src/calculateRank.js b/src/calculateRank.js index 6c161f3f87dd8..e8291d032f3c2 100644 --- a/src/calculateRank.js +++ b/src/calculateRank.js @@ -97,4 +97,3 @@ function calculateRank({ } export { calculateRank }; -export default calculateRank; diff --git a/src/cards/stats-card.js b/src/cards/stats-card.js index f880560e93a1b..274598ba4ee8a 100644 --- a/src/cards/stats-card.js +++ b/src/cards/stats-card.js @@ -314,4 +314,3 @@ const renderStatsCard = (stats = {}, options = { hide: [] }) => { }; export { renderStatsCard }; -export default renderStatsCard; diff --git a/src/cards/types.d.ts b/src/cards/types.d.ts index f7ecc218628e6..b7e655c61ce1d 100644 --- a/src/cards/types.d.ts +++ b/src/cards/types.d.ts @@ -4,7 +4,7 @@ export type CommonOptions = { title_color: string; icon_color: string; text_color: string; - text_bold: boolean; + text_bold: boolean | string; bg_color: string; theme: ThemeNames; border_radius: number; @@ -14,15 +14,15 @@ export type CommonOptions = { export type StatCardOptions = CommonOptions & { hide: string[]; - show_icons: boolean; - hide_title: boolean; - hide_border: boolean; + show_icons: boolean | string; + hide_title: boolean | string; + hide_border: boolean | string; card_width: number; - hide_rank: boolean; - include_all_commits: boolean; + hide_rank: boolean | string; + include_all_commits: boolean | string; line_height: number | string; custom_title: string; - disable_animations: boolean; + disable_animations: boolean | string; }; export type RepoCardOptions = CommonOptions & { diff --git a/src/fetchers/stats-fetcher.js b/src/fetchers/stats-fetcher.js index b9493adfdbb43..72b8074527813 100644 --- a/src/fetchers/stats-fetcher.js +++ b/src/fetchers/stats-fetcher.js @@ -101,8 +101,8 @@ const totalCommitsFetcher = async (username) => { /** * @param {string} username - * @param {boolean} count_private - * @param {boolean} include_all_commits + * @param {boolean | string} count_private + * @param {boolean | string} include_all_commits * @returns {Promise} */ async function fetchStats( diff --git a/tests/api.test.js b/tests/api.test.ts similarity index 98% rename from tests/api.test.js rename to tests/api.test.ts index b0dfc59f17e2e..968bf79735c1c 100644 --- a/tests/api.test.js +++ b/tests/api.test.ts @@ -1,7 +1,7 @@ +import api from "@/api/index"; import { jest } from "@jest/globals"; import axios from "axios"; import MockAdapter from "axios-mock-adapter"; -import api from "../api/index.js"; import { calculateRank } from "../src/calculateRank.js"; import { renderStatsCard } from "../src/cards/stats-card.js"; import { CONSTANTS, renderError } from "../src/common/utils.js"; @@ -13,7 +13,7 @@ const stats = { totalIssues: 300, totalPRs: 400, contributedTo: 500, - rank: null, + rank: { level: "S+", score: 99.9 }, }; stats.rank = calculateRank({ totalCommits: stats.totalCommits,