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  })