github.com/quickfeed/quickfeed@v0.0.0-20240507093252-ed8ca812a09c/public/src/__tests__/updateAdmin.test.tsx (about) 1 import { User } from "../../proto/qf/types_pb" 2 import { Void } from "../../proto/qf/requests_pb" 3 import { initializeOvermind, mock } from "./TestHelpers" 4 import { ApiClient } from "../overmind/effects" 5 6 7 8 describe("Correct permission status should be set", () => { 9 10 const updateAdminTests: { desc: string, user: User, confirm: boolean, want: boolean }[] = [ 11 { 12 desc: "If user is not admin, promote to admin", 13 user: new User({ 14 ID: BigInt(1), 15 IsAdmin: false, 16 }), 17 confirm: true, 18 want: true 19 }, 20 { 21 desc: "If user is admin, demote to non-admin", 22 user: new User({ 23 ID: BigInt(1), 24 IsAdmin: true, 25 }), 26 confirm: true, 27 want: false 28 }, 29 { 30 desc: "If user does not confirm, do not change status", 31 user: new User({ 32 ID: BigInt(1), 33 IsAdmin: true, 34 }), 35 confirm: false, 36 want: true 37 } 38 ] 39 test.each(updateAdminTests)(`$desc`, async (test) => { 40 const api = new ApiClient() 41 api.client = { 42 ...api.client, 43 // eslint-disable-next-line @typescript-eslint/no-unused-vars 44 updateUser: mock("updateUser", async (_request) => { 45 return { message: new Void(), error: null } 46 }), 47 } 48 const { state, actions } = initializeOvermind({ allUsers: [test.user], review: { reviewer: new User() } }, api) 49 window.confirm = jest.fn(() => test.confirm) 50 await actions.updateAdmin(test.user) 51 expect(state.allUsers[0].IsAdmin).toEqual(test.want) 52 }) 53 })