add tests

This commit is contained in:
admin 2025-08-21 22:56:19 +02:00
parent f94e266d4a
commit f3a82bb27e
7 changed files with 5174 additions and 12 deletions

1
.gitignore vendored
View File

@ -1,4 +1,5 @@
.vscode
.idea
dist
coverage
node_modules

View File

@ -1,6 +1,7 @@
.vscode
.idea
node_modules
coverage
src
.gitignore
tsconfig.json

5074
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,17 +1,26 @@
{
"name": "@apihub24/in-memory-repository",
"version": "1.0.1",
"version": "1.0.2",
"description": "",
"main": "dist/index.js",
"types": "./dist/index.d.ts",
"scripts": {
"build": "tsc"
"build": "rimraf ./dist && tsc",
"test": "jest",
"test:coverage": "jest --coverage",
"pub": "npm publish",
"rel": "npm i && npm run build && npm run test:coverage"
},
"dependencies": {
"@apihub24/repository": "^1.0.2"
"@apihub24/repository": "^1.0.3"
},
"devDependencies": {
"typescript": "^5.9.2"
"rimraf": "^6.0.1",
"@nestjs/testing": "^11.1.6",
"typescript": "^5.9.2",
"@types/jest": "^30.0.0",
"jest": "^30.0.0",
"ts-jest": "^29.4.1"
},
"keywords": [],
"author": {
@ -22,5 +31,26 @@
"license": "MIT",
"publishConfig": {
"access": "public"
},
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": ".",
"testRegex": ".*\\.spec\\.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "./coverage",
"testEnvironment": "node",
"roots": [
"<rootDir>/src/"
],
"moduleNameMapper": {}
}
}

View File

@ -0,0 +1,67 @@
import { InMemoryRepository } from "./";
class Test {
id: string;
name: string;
}
describe("InMemoryRepository Tests", () => {
it("should export InMemoryRepository", async () => {
expect(InMemoryRepository).toBeDefined();
});
it("should create something", async () => {
const repo = new InMemoryRepository<Test>();
const created = await repo.save([{ id: "1", name: "test" }]);
expect(created).toBeDefined();
expect(created.length).toBeGreaterThan(0);
expect(created[0].id).toBe("1");
expect(created[0].name).toBe("test");
});
it("should generate id", async () => {
const repo = new InMemoryRepository<Test>();
const created = await repo.save([{ id: "", name: "test" }]);
expect(created).toBeDefined();
expect(created.length).toBeGreaterThan(0);
expect(created[0].id).toBeDefined();
expect(created[0].id.length).toBeGreaterThan(3);
});
it("should update something", async () => {
const repo = new InMemoryRepository<Test>();
const created = await repo.save([{ id: "2", name: "test2" }]);
expect(created).toBeDefined();
expect(created.length).toBeGreaterThan(0);
created[0].name = "test3";
const saved = await repo.save([created[0]]);
expect(saved).toBeDefined();
expect(saved[0].name).toBe("test3");
});
it("should select something", async () => {
const repo = new InMemoryRepository<Test>();
const created = await repo.save([{ id: "4", name: "test4" }]);
expect(created).toBeDefined();
expect(created.length).toBeGreaterThan(0);
const selected = await repo.getBy((x) => x.id === "4");
expect(selected).toBeDefined();
expect(selected.length).toBe(1);
expect(selected[0].id).toBe("4");
expect(selected[0].name).toBe("test4");
});
it("should delete something", async () => {
const repo = new InMemoryRepository<Test>();
const created = await repo.save([{ id: "5", name: "test5" }]);
expect(created).toBeDefined();
expect(created.length).toBeGreaterThan(0);
expect(await repo.deleteBy((x) => x.id === "5")).toBeTruthy();
const selected = await repo.getBy((x) => x.id === "5");
expect(selected).toBeDefined();
expect(selected.length).toBe(0);
});
});

View File

@ -31,7 +31,7 @@ export class InMemoryRepository<TModel extends IdModel>
}
deleteBy(filter: (model: TModel) => boolean): Promise<boolean> {
this.source = this.source.filter(filter);
this.source = this.source.filter((x) => !filter(x));
return Promise.resolve(true);
}
}

View File

@ -22,5 +22,6 @@
"strictBindCallApply": false,
"noFallthroughCasesInSwitch": false
},
"include": ["./src"]
"include": ["./src"],
"exclude": ["**/*.spec.ts", "**/*.mock.ts"]
}