diff --git a/.gitignore b/.gitignore index 97839555..2babf32a 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,7 @@ package-lock.json # obsidian data.json + +# Tests + +*.received.* \ No newline at end of file diff --git a/package.json b/package.json index 8449c461..cef6c63a 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "scripts": { "dev": "rollup --config rollup.config.js -w", "build": "rollup -c --environment BUILD:production", - "release": "standard-version" + "release": "standard-version", + "test": "ts-mocha" }, "standard-version": { "t": "" @@ -19,12 +20,16 @@ "@rollup/plugin-node-resolve": "^11.2.1", "@rollup/plugin-typescript": "^8.2.1", "@types/csv2json": "^1.4.2", + "@types/expect": "^24.3.0", "@types/lodash": "^4.14.171", + "@types/mocha": "^9.0.0", "@types/node": "^14.14.37", "@typescript-eslint/eslint-plugin": "^4.27.0", "@typescript-eslint/parser": "^4.27.0", + "approvals": "^4.0.0-beta.1", "auto-plugin-obsidian": "^0.1.4", "eslint": "^7.29.0", + "mocha": "^9.1.3", "obsidian": "^0.12.0", "obsidian-dataview": "^0.4.20", "rollup": "^2.32.1", @@ -32,6 +37,7 @@ "standard-version": "^9.3.1", "svelte-check": "1.1.14", "svelte-preprocess": "4.7.3", + "ts-mocha": "^8.0.0", "tslib": "^2.2.0", "typescript": "^4.4.2" }, @@ -51,4 +57,4 @@ "svelte": "3.35.0", "svelte-icons": "^2.1.0" } -} +} \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js index 71957bde..2e958f13 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -27,4 +27,4 @@ export default { include: "node_modules/**", }), ], -}; \ No newline at end of file +}; diff --git a/src/test.ts b/src/test.ts new file mode 100644 index 00000000..15bc5519 --- /dev/null +++ b/src/test.ts @@ -0,0 +1,6 @@ +import _ from "lodash"; +import Graph from "graphology"; + +export function myFunc(str: string) { + return new Graph(); +} diff --git a/src/typings/approvals.d.ts b/src/typings/approvals.d.ts new file mode 100644 index 00000000..c1d4c217 --- /dev/null +++ b/src/typings/approvals.d.ts @@ -0,0 +1,68 @@ +declare module "approvals" { + export type ApprovalsOptions = any; + + export interface MochaInstance { + verify(data: any, overrideOptions: Partial): void; + } + + export function configure(overrideOptions: Partial): void; + + export function getConfig( + overrideOptions: Partial + ): ApprovalsOptions; + + export function verify( + dirName: string, + testName: string, + data: string | Buffer, + optionsOverride: Partial + ): void; + + export function verifyAndScrub( + dirName: string, + testName: string, + data: string | Buffer, + scrubber: (file: string) => string, + optionsOverride: Partial + ): void; + + export function verifyAsJSON( + dirName: string, + testName: string, + data: any, + optionsOverride: Partial + ): void; + + export function verifyAsJSONAndScrub( + dirName: string, + testName: string, + data: any, + scrubber: (file: string) => string, + optionsOverride: Partial + ): void; + + export function verifyWithControl( + namer: string, + writer: string, + reporterFactory: string, + optionsOverride: Partial + ): void; + + export const reporters: { + MultiReporter: any; + }; + + export namespace scrubbers { + export function noScrubber(): void; + + export function guidScrubber(): void; + + export function multiScrubber(): void; + } + + /** + * Configure approvals to hook into Mocha tests. + * @param {*} optionalBaseDir - An optional folder to save approval files to. + */ + export const mocha: (optionalBaseDir?: string) => void; +} diff --git a/test/When_running_some_tests.should_be_able_to_use_Approvals.approved.txt b/test/When_running_some_tests.should_be_able_to_use_Approvals.approved.txt new file mode 100644 index 00000000..980a0d5f --- /dev/null +++ b/test/When_running_some_tests.should_be_able_to_use_Approvals.approved.txt @@ -0,0 +1 @@ +Hello World! diff --git a/test/approvals1.1.spec.ts b/test/approvals1.1.spec.ts new file mode 100644 index 00000000..7bdf14b6 --- /dev/null +++ b/test/approvals1.1.spec.ts @@ -0,0 +1,15 @@ +import { mocha } from "approvals"; +import type { ITestCallbackContext } from "mocha"; +import { getReflexiveClosure } from "../src/sharedFunctions"; +import Graph from "graphology"; + +describe("typescript simple Approvals tests #1.1", () => { + mocha(__dirname); + + it("tutu", function (this: ITestCallbackContext) { + const g = new Graph() + const value = getReflexiveClosure(g, []); + + this.verify(value); + }); +}); diff --git a/test/mocha.opts b/test/mocha.opts new file mode 100644 index 00000000..71124ca2 --- /dev/null +++ b/test/mocha.opts @@ -0,0 +1,6 @@ +--require ts-node/register +--require source-map-support/register +--recursive +--full-trace +--bail +test/**/*.spec.ts diff --git a/test/test.js b/test/test.js new file mode 100644 index 00000000..66870d3a --- /dev/null +++ b/test/test.js @@ -0,0 +1,27 @@ +"use strict"; +import { MultiGraph } from "graphology"; +// import { getReflexiveClosure } from "src/sharedFunctions"; +exports.__esModule = true; +require("approvals").mocha(); +describe("When running some tests", function () { + it("should be able to use Approvals", function () { + var data = "test"; + // const userHiers = [ + // { + // down: ["down"], + // next: ["next"], + // prev: ["prev"], + // same: ["same"], + // up: ["up"], + // }, + // ]; + // const g = new MultiGraph(); + // g.addNode("A"); + // g.addNode("B"); + // g.addNode("C"); + // g.addEdge("A", "B", { dir: "up", field: "parent" }); + // g.addEdge("C", "A", { dir: "prev", field: "previous" }); + // getReflexiveClosure(g, userHiers); + this.verify(data); // or this.verifyAsJSON(data) + }); +}); diff --git a/test/test.ts b/test/test.ts new file mode 100644 index 00000000..134bf632 --- /dev/null +++ b/test/test.ts @@ -0,0 +1,33 @@ +// import { MultiGraph } from "graphology"; +// import { getReflexiveClosure } from "src/sharedFunctions"; + +require("approvals").mocha(); + +describe("When running some tests", function () { + it("should be able to use Approvals", function () { + const data = "test"; + // const userHiers = [ + // { + // down: ["down"], + // next: ["next"], + // prev: ["prev"], + // same: ["same"], + // up: ["up"], + // }, + // ]; + + // const g = new MultiGraph(); + // g.addNode("A"); + // g.addNode("B"); + // g.addNode("C"); + + // g.addEdge("A", "B", { dir: "up", field: "parent" }); + // g.addEdge("C", "A", { dir: "prev", field: "previous" }); + + // getReflexiveClosure(g, userHiers); + + this.verify(data); // or this.verifyAsJSON(data) + }); +}); + +export {}; diff --git a/test/typescript_simple_Approvals_tests__1_1.tutu.approved.txt b/test/typescript_simple_Approvals_tests__1_1.tutu.approved.txt new file mode 100644 index 00000000..bd7bb2ec --- /dev/null +++ b/test/typescript_simple_Approvals_tests__1_1.tutu.approved.txt @@ -0,0 +1 @@ +TUTU diff --git a/tsconfig.json b/tsconfig.json index 7477a04e..69ec0a9b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,17 @@ { "extends": "@tsconfig/svelte/tsconfig.json", - "include": ["src/**/*", "src/*", "**/*.ts"], + "include": [ + "src/**/*", + "src/*", + "**/*.ts", + "test/test.js", + "test/**/*.ts", + "typings/**/*.ts" + ], "exclude": ["node_modules/*"], "compilerOptions": { - "types": ["node", "svelte"], + "types": ["node", "svelte", "mocha"], "baseUrl": ".", "paths": { "src": ["src/*"]