Skip to content

Commit

Permalink
fix: tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Just-a-Pirate committed Apr 23, 2024
1 parent cc70fe7 commit 9f859c4
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 8 deletions.
6 changes: 4 additions & 2 deletions backend/src/service/admin.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ export const banUser = async (userEmailId: string): Promise<CustomReturn<User>>
}
}

//changes Karma of a user
//use sign=false to decrease sign=true to increase
export const deltaKarma =async (userEmailId: string, amount:number, sign:boolean):
Promise<CustomReturn<User>> => {
try {
Expand All @@ -140,15 +142,15 @@ Promise<CustomReturn<User>> => {
if (user.role == "admin") {
return {
error: true,
data: "An admin cannot be fruit :)."
data: "Admin karma cannot be updated."
}
}

if (sign==false) {
if(user.karmaPoints<amount){
return{
error:true,
data:"Stop, Stop! he is already dead"
data:"Stop, Stop! he is already dead."
}
}
const punishedUser= await prisma.user.update({
Expand Down
Empty file.
84 changes: 81 additions & 3 deletions backend/tests/admin.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { describe, expect } from "@jest/globals";
import { prismaMock } from "./_mockdb";
import { User } from ".prisma/client";
import { getAllUsers, promoteUser, demoteUser, banUser } from "../src/service/admin.service";
import { getAllUsers, promoteUser, demoteUser, banUser, deltaKarma} from "../src/service/admin.service";

const user: User = {
id: "1",
Expand Down Expand Up @@ -33,6 +33,16 @@ const na: User = {
isPublic: true
}

const na2: User = {
id: "3",
name: "ben",
email: "hen@hen.com",
phoneNumber: "9898989898",
karmaPoints: 0,
role: "user",
isPublic: true
}

const bu: User= {
id: "2",
name: "ben",
Expand All @@ -43,6 +53,16 @@ const bu: User= {
isPublic: true
}

const iku: User = {
id: "2",
name: "ben",
email: "ben@hen.com",
phoneNumber: "9898989898",
karmaPoints: 12,
role: "user",
isPublic: true
}

describe("Get all users", () => {
it("should get all users", () => {
prismaMock.user.findMany.mockResolvedValue([user]);
Expand Down Expand Up @@ -90,7 +110,7 @@ describe("demote admin to user", () => {
prismaMock.user.findUnique.mockResolvedValue(a);
prismaMock.user.update.mockResolvedValue(na);

expect(demoteUser(a.email)).resolves.toEqual({
expect(demoteUser(a.email,na2.email)).resolves.toEqual({
error: false,
data: na
})
Expand All @@ -100,7 +120,7 @@ describe("demote admin to user", () => {
prismaMock.user.findUnique.mockResolvedValue(a);
prismaMock.user.update.mockRejectedValue(new Error("Some error occurred"));

expect(demoteUser(a.email)).resolves.toEqual({
expect(demoteUser(a.email,na2.email)).resolves.toEqual({
error: true,
data: "Some error occurred while demoting admin to user role"
})
Expand Down Expand Up @@ -145,4 +165,62 @@ describe("ban user", () => {
data: "Some error occurred while banning user."
})
})
})

describe("increase/decrease user karma", () => {
it("should increase karma", () => {
prismaMock.user.findUnique.mockResolvedValue(na);
prismaMock.user.update.mockResolvedValue(iku);

expect(deltaKarma(na.email,12,true)).resolves.toEqual({
error: false,
data: iku
})
})

it("should decrease karma", () => {
prismaMock.user.findUnique.mockResolvedValue(iku);
prismaMock.user.update.mockResolvedValue(na);

expect(deltaKarma(iku.email,12,false)).resolves.toEqual({
error: false,
data: na
})
})

it("should return error if target karma is negative", () => {
prismaMock.user.findUnique.mockResolvedValue(na);

expect(deltaKarma(na.email,12,false)).resolves.toEqual({
error: true,
data: "Stop, Stop! he is already dead."
})
})

it("should return an error if user does not exist", () => {

expect(banUser("random@random.com")).resolves.toEqual({
error: true,
data: "User does not exist."
})
})

it("should return error if user to be updated is an admin", () => {
prismaMock.user.findUnique.mockResolvedValue(a);

expect(deltaKarma(a.email,12,true)).resolves.toEqual({
error: true,
data: "Admin karma cannot be updated."
})
})

it("should return error if any error occured", () => {
prismaMock.user.findUnique.mockResolvedValue(na);
prismaMock.user.update.mockRejectedValue(new Error("Some error occurred"));

expect(deltaKarma(na.email,12,true)).resolves.toEqual({
error: true,
data: "Some error occurred while changing karma."
})
})
})
8 changes: 5 additions & 3 deletions backend/tests/user.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import { prismaMock } from "./_mockdb";
import { getUserByEmail, newUser, getUserById } from "../src/service/user.service";
import { updateUser } from "../src/service/user.service";



describe("Create a new user", () => {
it("should create a new user", () => {
const user = {
Expand Down Expand Up @@ -250,7 +252,7 @@ describe("Fetch user data using id", () => {

prismaMock.user.findUnique.mockResolvedValue(user);

expect(getUserById(user.id)).resolves.toEqual({
expect(getUserById(user.id,user.id)).resolves.toEqual({
error: false,
data: user
});
Expand All @@ -269,7 +271,7 @@ describe("Fetch user data using id", () => {

prismaMock.user.findUnique.mockResolvedValue(user);

expect(getUserById(user.id)).resolves.toEqual({
expect(getUserById(user.id,user.id)).resolves.toEqual({
error: true,
data: "User is not public."
});
Expand All @@ -287,7 +289,7 @@ describe("Fetch user data using id", () => {

prismaMock.user.findUnique.mockRejectedValue(new Error("Some error"));

expect(getUserById(user.id)).resolves.toEqual({
expect(getUserById(user.id,user.id)).resolves.toEqual({
error: true,
data: null
});
Expand Down

0 comments on commit 9f859c4

Please sign in to comment.