Skip to content

Commit 6308fee

Browse files
committed
implement user testing
1 parent 2672e49 commit 6308fee

20 files changed

+530
-91
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
- #### 🏃🏽‍♂️Run Project Locally
2828

2929
```bash
30-
npm start
30+
npm run dev
3131
```
3232

3333
- #### 💡 Make Changes & Pull Requests

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<img src="https://img.shields.io/badge/License-MIT-green.svg"/>
77
<img src="https://img.shields.io/npm/v/npm.svg?logo=nodedotjs"/>
88

9-
![JavaScript](https://img.shields.io/badge/javascript-%2320232a.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)
9+
![Typescript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white)
1010
![Node.js](https://img.shields.io/badge/Node.js-%2320232a?style=for-the-badge&logo=node.js&logoColor=43853D)
1111
![Express.js](https://img.shields.io/badge/express-%2320232a.svg?style=for-the-badge&logo=express&logoColor=%23F7DF1E)
1212
![REST API](https://img.shields.io/badge/RestApi-%2320232a.svg?style=for-the-badge&logo=restAPI&logoColor=%23F7DF1E)
@@ -66,6 +66,7 @@ During development, it's recommended to utilize the API locally. To do so, follo
6666
## Contributor ✏️
6767

6868
- [@aryanpingle](https://www.github.com/aryanpingle)
69+
- [@jamesh48](https://www.github.com/jamesh48)
6970

7071
## Join Server 💬
7172

jest.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const customJestConfig: Config.InitialOptions = {
77
},
88
moduleDirectories: ['node_modules', '<rootDir>/'],
99
setupFilesAfterEnv: ['<rootDir>/setupTests.ts'],
10+
testMatch: ['<rootDir>/src/__tests__/**/*.spec.ts'],
1011
testPathIgnorePatterns: ['<rootDir>/iac'],
1112
};
1213

setupTests.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* @jest-environment node
33
*/
44

5-
import { server } from './src/msw';
5+
import { server } from './src/__tests__/msw';
66

77
beforeAll(() => {
88
server.listen();

src/Controllers/fetchUserDetails.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ const fetchUserDetails = async (
88
query: string
99
) => {
1010
try {
11-
console.log(options);
1211
const response = await fetch('https://leetcode.com/graphql', {
1312
method: 'POST',
1413
headers: {

src/FormatUtils/userData.ts

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -26,41 +26,35 @@ export const formatBadgesData = (data: UserData) => ({
2626
});
2727

2828
export const formatContestData = (data: UserData) => ({
29-
contestAttend: data.userContestRanking.attendedContestsCount,
30-
contestRating: data.userContestRanking.rating,
31-
contestGlobalRanking: data.userContestRanking.globalRanking,
32-
totalParticipants: data.userContestRanking.totalParticipants,
33-
contestTopPercentage: data.userContestRanking.topPercentage,
34-
contestBadges: data.userContestRanking.badge,
29+
contestAttend: data.userContestRanking?.attendedContestsCount,
30+
contestRating: data.userContestRanking?.rating,
31+
contestGlobalRanking: data.userContestRanking?.globalRanking,
32+
totalParticipants: data.userContestRanking?.totalParticipants,
33+
contestTopPercentage: data.userContestRanking?.topPercentage,
34+
contestBadges: data.userContestRanking?.badge,
3535
contestParticipation: data.userContestRankingHistory.filter(
3636
(obj) => obj.attended === true
3737
),
3838
});
3939

40-
export const formatContestHistoryData = (data: UserData) => {
41-
return {
42-
count: data.userContestRankingHistory.length,
43-
contestHistory: data.userContestRankingHistory,
44-
};
45-
};
40+
export const formatContestHistoryData = (data: UserData) => ({
41+
count: data.userContestRankingHistory.length,
42+
contestHistory: data.userContestRankingHistory,
43+
});
4644

47-
export const formatSolvedProblemsData = (data: UserData) => {
48-
return {
49-
solvedProblem: data.matchedUser.submitStats.acSubmissionNum[0].count,
50-
easySolved: data.matchedUser.submitStats.acSubmissionNum[1].count,
51-
mediumSolved: data.matchedUser.submitStats.acSubmissionNum[2].count,
52-
hardSolved: data.matchedUser.submitStats.acSubmissionNum[3].count,
53-
totalSubmissionNum: data.matchedUser.submitStats.totalSubmissionNum,
54-
acSubmissionNum: data.matchedUser.submitStats.acSubmissionNum,
55-
};
56-
};
45+
export const formatSolvedProblemsData = (data: UserData) => ({
46+
solvedProblem: data.matchedUser.submitStats.acSubmissionNum[0].count,
47+
easySolved: data.matchedUser.submitStats.acSubmissionNum[1].count,
48+
mediumSolved: data.matchedUser.submitStats.acSubmissionNum[2].count,
49+
hardSolved: data.matchedUser.submitStats.acSubmissionNum[3].count,
50+
totalSubmissionNum: data.matchedUser.submitStats.totalSubmissionNum,
51+
acSubmissionNum: data.matchedUser.submitStats.acSubmissionNum,
52+
});
5753

58-
export const formatSubmissionData = (data: UserData) => {
59-
return {
60-
count: data.recentSubmissionList.length,
61-
submission: data.recentSubmissionList,
62-
};
63-
};
54+
export const formatSubmissionData = (data: UserData) => ({
55+
count: data.recentSubmissionList.length,
56+
submission: data.recentSubmissionList,
57+
});
6458

6559
export const formatAcSubmissionData = (data: UserData) => ({
6660
count: data.recentAcSubmissionList.length,

src/GQLQueries/contest.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const query = `#graphql
2-
query ($username: String!){
2+
query getUserContestRanking ($username: String!) {
33
userContestRanking(username: $username) {
44
attendedContestsCount
55
rating

src/GQLQueries/recentAcSubmit.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const query = `#graphql
2-
query ($username: String!, $limit: Int) {
2+
query getACSubmissions ($username: String!, $limit: Int) {
33
recentAcSubmissionList(username: $username, limit: $limit) {
44
title
55
titleSlug

src/GQLQueries/recentSubmit.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const query = `#graphql
2-
query ($username: String!, $limit: Int) {
2+
query getRecentSubmissions($username: String!, $limit: Int) {
33
recentSubmissionList(username: $username, limit: $limit) {
44
title
55
titleSlug

src/__tests__/msw/handlers.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import * as msw from 'msw';
2+
import {
3+
singleUser,
4+
singleUserContests,
5+
recentSubmissions,
6+
recentACSubmissions,
7+
} from './mockData';
8+
9+
export const handlers = [
10+
msw.http.post('https://leetcode.com/graphql', async (ctx) => {
11+
const test = await ctx.request.json();
12+
const typed = test as { query: string };
13+
if (typed.query.indexOf('getUserProfile') !== -1) {
14+
return msw.HttpResponse.json(singleUser);
15+
}
16+
17+
if (typed.query.indexOf('getUserContestRanking') !== -1) {
18+
return msw.HttpResponse.json(singleUserContests);
19+
}
20+
21+
if (typed.query.indexOf('getRecentSubmissions') !== -1) {
22+
return msw.HttpResponse.json(recentSubmissions);
23+
}
24+
25+
if (typed.query.indexOf('getACSubmissions') !== -1) {
26+
return msw.HttpResponse.json(recentACSubmissions);
27+
}
28+
29+
return msw.HttpResponse.json({});
30+
}),
31+
];

0 commit comments

Comments
 (0)