Skip to content

Commit 96cdd34

Browse files
committed
begin adding tests
1 parent 4ade91d commit 96cdd34

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
import { addUserIfNotExists } from "@/app/backend/user-management";
2+
import {
3+
getUsersWithGroupStatus,
4+
getQueriesWithGroupStatus,
5+
addQueriesToGroup,
6+
saveQueryGroupMembership,
7+
} from "@/app/backend/usergroup-management";
8+
import { auth } from "@/auth";
9+
import { getDbClient } from "@/app/backend/dbClient";
10+
import { User, Query } from "@/app/models/entities/users";
11+
import { suppressConsoleLogs } from "./fixtures";
12+
13+
const dbClient = getDbClient();
14+
15+
jest.mock("@/app/utils/auth", () => {
16+
return {
17+
superAdminAccessCheck: jest.fn(() => Promise.resolve(true)),
18+
adminAccessCheck: jest.fn(() => Promise.resolve(true)),
19+
};
20+
});
21+
22+
const TEST_USER = {
23+
id: "13e1efb2-5889-4157-8f34-78d7f02dbf84",
24+
username: "Q the omnipotent",
25+
email: "worf_security@[email protected]",
26+
firstName: "Q",
27+
lastName: "Q178652",
28+
};
29+
const TEST_GROUP_ID = "00000000-0000-0000-0000-000000000001";
30+
const TEST_QUERY_ID = "00000000-0000-0000-0000-000000000004";
31+
32+
(auth as jest.Mock).mockResolvedValue(TEST_USER);
33+
34+
describe("User Queries Integration Tests", () => {
35+
beforeAll(async () => {
36+
suppressConsoleLogs();
37+
await dbClient.query("BEGIN");
38+
39+
// Insert test group
40+
const insertGroupQuery = `
41+
INSERT INTO usergroup (id, name)
42+
VALUES ($1, 'Q Continuum Membership List');
43+
`;
44+
await dbClient.query(insertGroupQuery, [TEST_GROUP_ID]);
45+
46+
// Insert test query
47+
const insertQueryQuery = `
48+
INSERT INTO query (id, query_name)
49+
VALUES ($1, 'What is the nature of the universe?');
50+
`;
51+
await dbClient.query(insertQueryQuery, [TEST_QUERY_ID]);
52+
});
53+
54+
afterAll(async () => {
55+
await dbClient.query("ROLLBACK");
56+
});
57+
58+
test("should find user and know their role", async () => {
59+
const result = await addUserIfNotExists(TEST_USER);
60+
const createdUser: User[] = await getUsersWithGroupStatus(TEST_GROUP_ID);
61+
62+
expect(Array.isArray(result)).toBe(true);
63+
expect(result[0]).toHaveProperty("id");
64+
expect(result[0]).toHaveProperty("username");
65+
expect(result[0]).toHaveProperty("userGroupMemberships");
66+
67+
const membership = result[0].userGroupMemberships?.find(
68+
(m: { usergroup_id: string; group_name: string }) =>
69+
m.usergroup_id === TEST_GROUP_ID,
70+
(m: { usergroup_id: string; group_name: string }) =>
71+
m.group_name === "Q Continuum Membership List",
72+
);
73+
expect(membership).toBeDefined();
74+
expect(membership?.is_member).toBeDefined();
75+
});
76+
77+
test("should know queries belong to a group", async () => {
78+
const result = await addQueriesToGroup(TEST_GROUP_ID, [TEST_QUERY_ID]);
79+
expect(result).toContain(TEST_QUERY_ID);
80+
expect(result.length).toBe(1);
81+
82+
const updatedQueries: Query[] =
83+
await getQueriesWithGroupStatus(TEST_GROUP_ID);
84+
const members = updatedQueries.filter((query) =>
85+
query.userGroupMemberships?.some((m) => m.is_member),
86+
);
87+
88+
expect(members.length).toBe(1);
89+
expect(members.some((query) => query.id === TEST_QUERY_ID)).toBe(true);
90+
expect(members.some((query) => query.name === "What is the nature of the universe?")).toBe(true);
91+
});
92+
93+
test("should know query group memberships", async () => {
94+
const updatedQueries = await saveQueryGroupMembership(TEST_GROUP_ID, [
95+
TEST_QUERY_ID,
96+
]);
97+
98+
expect(
99+
updatedQueries.some(
100+
(query) =>
101+
query.id === TEST_QUERY_ID &&
102+
query.userGroupMemberships?.some((m) => m.is_member),
103+
),
104+
).toBe(true);
105+
});
106+
});

0 commit comments

Comments
 (0)