client: add jest and basic lib/ tests
This commit is contained in:
parent
454ea303a6
commit
c5d2e9ac63
8 changed files with 2165 additions and 41 deletions
23
client/jest.config.js
Normal file
23
client/jest.config.js
Normal file
|
@ -0,0 +1,23 @@
|
|||
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
|
||||
module.exports = {
|
||||
preset: "ts-jest",
|
||||
testEnvironment: "jsdom",
|
||||
// setupFiles: ["<rootDir>/test/setup-tests.ts"],
|
||||
moduleNameMapper: {
|
||||
"@lib/(.*)": "<rootDir>/lib/$1",
|
||||
"@components/(.*)": "<rootDir>/routes/$1",
|
||||
"@pages/(.*)": "<rootDir>/routes/$1",
|
||||
"@public/(.*)": "<rootDir>/public/$1",
|
||||
"@styles/(.*)": "<rootDir>/styles/$1"
|
||||
},
|
||||
testPathIgnorePatterns: [
|
||||
"<rootDir>/node_modules/",
|
||||
"<rootDir>/dist/",
|
||||
"<rootDir>/.next/",
|
||||
"<rootDir>/public/"
|
||||
],
|
||||
testMatch: [
|
||||
"**/__tests__/**/*.+(ts|tsx|js)",
|
||||
"**/?(*.)+(spec|test).+(ts|tsx|js)"
|
||||
]
|
||||
}
|
34
client/lib/__tests__/byte-to-mb.ts
Normal file
34
client/lib/__tests__/byte-to-mb.ts
Normal file
|
@ -0,0 +1,34 @@
|
|||
// const byteToMB = (bytes: number) =>
|
||||
// Math.round((bytes / 1024 / 1024) * 100) / 100
|
||||
|
||||
import formatBytes from "@lib/format-bytes"
|
||||
|
||||
describe("formatBytes", () => {
|
||||
it("should return 0 Bytes", () => {
|
||||
expect(formatBytes(0)).toBe("0 Bytes")
|
||||
})
|
||||
|
||||
it("should return 512 Bytes", () => {
|
||||
expect(formatBytes(512)).toBe("512 Bytes")
|
||||
})
|
||||
|
||||
it("should return 1 KB", () => {
|
||||
expect(formatBytes(1024)).toBe("1 KB")
|
||||
})
|
||||
|
||||
it("should return 1 MB", () => {
|
||||
expect(formatBytes(1024 * 1024)).toBe("1 MB")
|
||||
})
|
||||
|
||||
it("should return 1 GB", () => {
|
||||
expect(formatBytes(1024 * 1024 * 1024)).toBe("1 GB")
|
||||
})
|
||||
|
||||
it("should return 256 GB", () => {
|
||||
expect(formatBytes(1024 * 1024 * 1024 * 256)).toBe("256 GB")
|
||||
})
|
||||
|
||||
it("should return 1 TB", () => {
|
||||
expect(formatBytes(1024 * 1024 * 1024 * 1024)).toBe("1 TB")
|
||||
})
|
||||
})
|
21
client/lib/__tests__/get-title-for-post-copy.ts
Normal file
21
client/lib/__tests__/get-title-for-post-copy.ts
Normal file
|
@ -0,0 +1,21 @@
|
|||
// examples:
|
||||
// Title --> Title 1
|
||||
// Title 1 --> Title 2
|
||||
// Title 2 --> Title 3
|
||||
// My Title 12 huh -> My Title 12 huh 1
|
||||
|
||||
import getTitleForPostCopy from "@lib/get-title-for-post-copy";
|
||||
|
||||
describe("getTitleForPostCopy", () => {
|
||||
it("should add a number if no number is present", () => {
|
||||
expect(getTitleForPostCopy("Title")).toBe("Title 1");
|
||||
});
|
||||
|
||||
it("should increment the number if present", () => {
|
||||
expect(getTitleForPostCopy("Title 1")).toBe("Title 2");
|
||||
});
|
||||
|
||||
it("should ignore numbers not at the end of the title", () => {
|
||||
expect(getTitleForPostCopy("My Title 12 words")).toBe("My Title 12 words 1");
|
||||
});
|
||||
})
|
11
client/lib/__tests__/time-ago.ts
Normal file
11
client/lib/__tests__/time-ago.ts
Normal file
|
@ -0,0 +1,11 @@
|
|||
import { timeAgo } from "@lib/time-ago";
|
||||
|
||||
describe("timeAgo", () => {
|
||||
it("should return '1 second ago' for 1 second ago", () => {
|
||||
expect(timeAgo(new Date(Date.now() - 1000))).toBe("1 second ago");
|
||||
});
|
||||
|
||||
it("should handle negative values", () => {
|
||||
expect(timeAgo(new Date(Date.now() - -1000))).toBe("0 second ago");
|
||||
})
|
||||
})
|
|
@ -1,4 +0,0 @@
|
|||
const byteToMB = (bytes: number) =>
|
||||
Math.round((bytes / 1024 / 1024) * 100) / 100
|
||||
|
||||
export default byteToMB
|
13
client/lib/format-bytes.ts
Normal file
13
client/lib/format-bytes.ts
Normal file
|
@ -0,0 +1,13 @@
|
|||
function formatBytes(bytes: number, decimals = 2) {
|
||||
if (bytes === 0) return '0 Bytes';
|
||||
|
||||
const k = 1024;
|
||||
const dm = decimals < 0 ? 0 : decimals;
|
||||
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
||||
|
||||
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
||||
|
||||
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
|
||||
}
|
||||
|
||||
export default formatBytes
|
|
@ -8,7 +8,8 @@
|
|||
"start": "next start --port 3001",
|
||||
"lint": "next lint && prettier --list-different --config .prettierrc '{components,lib,pages}/**/*.{ts,tsx}' --write",
|
||||
"analyze": "cross-env ANALYZE=true next build",
|
||||
"find:unused": "next-unused"
|
||||
"find:unused": "next-unused",
|
||||
"test": "jest --silent"
|
||||
},
|
||||
"dependencies": {
|
||||
"@geist-ui/core": "2.3.8",
|
||||
|
@ -32,6 +33,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@next/bundle-analyzer": "12.1.5",
|
||||
"@types/jest": "^27.4.1",
|
||||
"@types/node": "17.0.23",
|
||||
"@types/react": "18.0.5",
|
||||
"@types/react-datepicker": "4.4.0",
|
||||
|
@ -39,8 +41,10 @@
|
|||
"cross-env": "7.0.3",
|
||||
"eslint": "8.13.0",
|
||||
"eslint-config-next": "12.1.5",
|
||||
"jest": "^27.5.1",
|
||||
"next-unused": "0.0.6",
|
||||
"prettier": "2.6.2",
|
||||
"ts-jest": "^27.1.4",
|
||||
"typescript": "4.6.3",
|
||||
"typescript-plugin-css-modules": "3.4.0"
|
||||
},
|
||||
|
|
2094
client/yarn.lock
2094
client/yarn.lock
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue