Skip to content

Commit 5a47f44

Browse files
committed
Refactor repository tests to use DomainUser interface, enhance test setup with seed data function, and improve cleanup logic. Update test cases for consistency and clarity.
1 parent 346eeae commit 5a47f44

File tree

7 files changed

+153
-449
lines changed

7 files changed

+153
-449
lines changed

__tests__/repository/count.test.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
1-
import { Repository } from "../../src/repository/repository";
2-
import { eq, gt, and, like } from "../../src";
3-
import { executor, setupTestTables, cleanupTestData } from "../../test-setup";
1+
import {Repository} from "../../src/repository/repository";
2+
import {and, eq, gt, like} from "../../src";
3+
import {cleanupTestData, DomainUser, executor, setupTestTables} from "../../test-setup";
44

5-
interface User {
6-
id: number;
7-
name: string;
8-
email: string;
9-
age?: number;
10-
}
115

126
describe("Repository count", () => {
13-
let repository: Repository<User>;
7+
let repository: Repository<DomainUser>;
148

159
beforeAll(async () => {
1610
await setupTestTables();
@@ -20,6 +14,9 @@ describe("Repository count", () => {
2014
repository = new Repository("users", executor);
2115
await cleanupTestData();
2216
});
17+
afterAll(async () => {
18+
await cleanupTestData();
19+
});
2320

2421
it("should count all rows without condition", async () => {
2522
// Insert test data
@@ -29,7 +26,6 @@ describe("Repository count", () => {
2926
);
3027

3128
const result = await repository.count(like("name", "%Doe%"));
32-
3329
expect(result).toBe(2);
3430
});
3531

__tests__/repository/delete.test.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,23 @@
11
import { SqlExecutor, QueryResult } from "../../src";
22
import { Repository } from "../../src/repository/repository";
33
import { eq, gt, and, like } from "../../src";
4+
import {DomainUser} from "../../test-setup";
45

56
// Mock SqlExecutor
67
const mockExecutor: jest.Mocked<SqlExecutor> = {
78
executeSQL: jest.fn(),
89
};
910

10-
interface User {
11-
id: string;
12-
name: string;
13-
email: string;
14-
age?: number;
15-
}
16-
1711
describe("Repository delete", () => {
18-
let repository: Repository<User>;
12+
let repository: Repository<DomainUser>;
1913

2014
beforeEach(() => {
2115
repository = new Repository("users", mockExecutor);
2216
jest.clearAllMocks();
2317
});
2418

2519
it("should delete a record and return it", async () => {
26-
const mockUser: User = {
20+
const mockUser: Omit<DomainUser, 'created_at'> = {
2721
id: "1",
2822
name: "John Doe",
2923
@@ -43,7 +37,7 @@ describe("Repository delete", () => {
4337
});
4438

4539
it("should delete a record with specific returning columns", async () => {
46-
const mockUser: Partial<User> = {
40+
const mockUser: Partial<DomainUser> = {
4741
id: "1",
4842
name: "John Doe",
4943
};
@@ -74,7 +68,7 @@ describe("Repository delete", () => {
7468
});
7569

7670
it("should handle complex where conditions", async () => {
77-
const mockUser: User = {
71+
const mockUser: DomainUser = {
7872
id: "1",
7973
name: "John Doe",
8074

__tests__/repository/find-row.test.ts

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,19 @@
11
import { Repository } from "../../src/repository/repository";
22
import { eq, and, gt, like } from "../../src";
3-
import { executor, setupTestTables, cleanupTestData } from "../../test-setup";
3+
import {executor, setupTestTables, cleanupTestData, seedTestData, DomainUser} from "../../test-setup";
4+
45

5-
interface User {
6-
id: number;
7-
name: string;
8-
email: string;
9-
age?: number;
10-
}
116

127
describe("Repository findRow", () => {
13-
let repository: Repository<User>;
8+
let repository: Repository<DomainUser>;
149

1510
beforeAll(async () => {
1611
await setupTestTables();
12+
await seedTestData();
13+
repository = new Repository("users", executor);
1714
});
1815

19-
beforeEach(async () => {
20-
repository = new Repository("users", executor);
16+
afterAll(async () => {
2117
await cleanupTestData();
2218
});
2319

@@ -38,8 +34,7 @@ describe("Repository findRow", () => {
3834
});
3935

4036
it("should return null when no row is found", async () => {
41-
const result = await repository.findRow(eq("id", 999));
42-
37+
const result = await repository.findRow(eq("email", '[email protected]'));
4338
expect(result).toBeNull();
4439
});
4540

0 commit comments

Comments
 (0)