diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 51bc867..c8bf3cc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -34,12 +34,9 @@ jobs: - run: | npm ci npm run build - cd node-tester/cjs - npm install - node index.js - cd ../esm - npm install - node index.js + cd tests/consumers/cjs && npm install && node index.js + cd ../esm && npm install && node index.js + cd ../ts && npm install && npm run start linting: runs-on: ubuntu-latest diff --git a/node-tester/cjs/index.js b/tests/consumers/cjs/index.js similarity index 100% rename from node-tester/cjs/index.js rename to tests/consumers/cjs/index.js diff --git a/node-tester/cjs/package-lock.json b/tests/consumers/cjs/package-lock.json similarity index 100% rename from node-tester/cjs/package-lock.json rename to tests/consumers/cjs/package-lock.json diff --git a/node-tester/cjs/package.json b/tests/consumers/cjs/package.json similarity index 100% rename from node-tester/cjs/package.json rename to tests/consumers/cjs/package.json diff --git a/node-tester/esm/index.js b/tests/consumers/esm/index.js similarity index 100% rename from node-tester/esm/index.js rename to tests/consumers/esm/index.js diff --git a/node-tester/esm/package-lock.json b/tests/consumers/esm/package-lock.json similarity index 100% rename from node-tester/esm/package-lock.json rename to tests/consumers/esm/package-lock.json diff --git a/node-tester/esm/package.json b/tests/consumers/esm/package.json similarity index 100% rename from node-tester/esm/package.json rename to tests/consumers/esm/package.json diff --git a/tests/consumers/ts/index.ts b/tests/consumers/ts/index.ts new file mode 100644 index 0000000..b4f14a5 --- /dev/null +++ b/tests/consumers/ts/index.ts @@ -0,0 +1,27 @@ +import { validate, setLocales } from "axe-api-validator"; +import en from "axe-api-validator/dist/i18n/en.json"; + +const data = { + email: null, +}; + +const rules = { + email: "required|email|min:1|max:50", +}; + +const main = async () => { + setLocales(en); + const result = await validate(data, rules); + if (result.isValid) { + throw new Error("The email should be invalid!"); + } + + const { message } = result.errors.email[0]; + if (message !== "The field field is required.") { + throw new Error(`Unaccepted message: ${message}`); + } + + console.log("ESM module tests are succeed!"); +}; + +main(); diff --git a/tests/consumers/ts/package-lock.json b/tests/consumers/ts/package-lock.json new file mode 100644 index 0000000..8ef1218 --- /dev/null +++ b/tests/consumers/ts/package-lock.json @@ -0,0 +1,113 @@ +{ + "name": "tester", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "tester", + "version": "1.0.0", + "dependencies": { + "axe-api-validator": "file:../../" + }, + "devDependencies": { + "typescript": "^5.3.3" + } + }, + "..": { + "name": "robust-validator", + "version": "0.1.0", + "extraneous": true, + "license": "ISC", + "devDependencies": { + "@babel/preset-env": "^7.23.6", + "@babel/preset-typescript": "^7.23.3", + "@jest/globals": "^29.7.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-terser": "^0.4.4", + "@types/jest": "^29.5.11", + "@typescript-eslint/eslint-plugin": "^6.15.0", + "@typescript-eslint/parser": "^6.15.0", + "@vitest/coverage-v8": "^1.1.0", + "eslint": "^8.56.0", + "eslint-config-standard-with-typescript": "^43.0.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-n": "^16.4.0", + "eslint-plugin-promise": "^6.1.1", + "husky": "^8.0.0", + "jest": "^29.7.0", + "rollup": "^4.9.1", + "rollup-plugin-analyzer": "^4.0.0", + "rollup-plugin-copy": "^3.5.0", + "rollup-plugin-filesize": "^10.0.0", + "rollup-plugin-typescript2": "^0.36.0", + "ts-jest": "^29.1.1", + "ts-node": "^10.9.2", + "ts-node-dev": "^2.0.0", + "typescript": "^5.3.3", + "vitest": "^1.1.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "../..": { + "name": "robust-validator", + "version": "0.1.0", + "license": "ISC", + "devDependencies": { + "@babel/preset-env": "^7.23.6", + "@babel/preset-typescript": "^7.23.3", + "@jest/globals": "^29.7.0", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-terser": "^0.4.4", + "@types/jest": "^29.5.11", + "@typescript-eslint/eslint-plugin": "^6.15.0", + "@typescript-eslint/parser": "^6.15.0", + "@vitest/coverage-v8": "^1.1.0", + "eslint": "^8.56.0", + "eslint-config-standard-with-typescript": "^43.0.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-n": "^16.4.0", + "eslint-plugin-promise": "^6.1.1", + "husky": "^8.0.0", + "jest": "^29.7.0", + "rollup": "^4.9.1", + "rollup-plugin-analyzer": "^4.0.0", + "rollup-plugin-auto-external": "^2.0.0", + "rollup-plugin-bundle-size": "^1.0.3", + "rollup-plugin-copy": "^3.5.0", + "rollup-plugin-filesize": "^10.0.0", + "rollup-plugin-typescript2": "^0.36.0", + "ts-jest": "^29.1.1", + "ts-node": "^10.9.2", + "ts-node-dev": "^2.0.0", + "typescript": "^5.3.3", + "vitest": "^1.1.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/axe-api-validator": { + "resolved": "../..", + "link": true + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + } + } +} diff --git a/tests/consumers/ts/package.json b/tests/consumers/ts/package.json new file mode 100644 index 0000000..512a2e0 --- /dev/null +++ b/tests/consumers/ts/package.json @@ -0,0 +1,15 @@ +{ + "name": "tester", + "version": "1.0.0", + "main": "index.ts", + "type": "module", + "scripts": { + "start": "tsc" + }, + "dependencies": { + "axe-api-validator": "file:../../" + }, + "devDependencies": { + "typescript": "^5.3.3" + } +} diff --git a/tests/consumers/ts/tsconfig.json b/tests/consumers/ts/tsconfig.json new file mode 100644 index 0000000..8c9fc9e --- /dev/null +++ b/tests/consumers/ts/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "outDir": "./dist", + "allowSyntheticDefaultImports": true, + "declaration": true, + "resolveJsonModule": true + }, + "include": ["index.ts"], + "exclude": ["node_modules"] +} diff --git a/tests/index.test.ts b/tests/index.test.ts index 7318b4b..3afd6ac 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -1,5 +1,5 @@ import { beforeAll, describe, expect, test } from "vitest"; -import { setOptions, validate } from "../src/index"; +import { setOptions, validate } from "../index"; import { setLocales } from "../src/Locale"; import en from "../src/i18n/en.json"; import tr from "../src/i18n/tr.json"; diff --git a/vitest.config.ts b/vitest.config.ts index 555d3a4..b1c7fb6 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -2,6 +2,6 @@ import { configDefaults, defineConfig } from "vitest/config"; export default defineConfig({ test: { - exclude: [...configDefaults.exclude, "./docs/**"], + exclude: [...configDefaults.exclude, "./docs/**", "./tests/consumers"], }, });