File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import { listJobs } from "./jobService.js" ;
2+ import { listUsers } from "./userService.js" ;
3+
14export async function getAdminMetrics ( ) {
5+ const [ jobs , users ] = await Promise . all ( [ listJobs ( ) , listUsers ( ) ] ) ;
6+
27 return {
3- openJobs : 42 ,
4- activeFreelancers : 185 ,
5- flaggedAccounts : 3 ,
6- monthlyVolume : 128900
8+ openJobs : jobs . filter ( ( job ) => job . status === "open" ) . length ,
9+ activeFreelancers : users . filter ( ( user ) => user . role === "freelancer" ) . length ,
10+ flaggedAccounts : 0 ,
11+ monthlyVolume : 0
712 } ;
813}
Original file line number Diff line number Diff line change 1+ import test from "node:test" ;
2+ import assert from "node:assert/strict" ;
3+ import { createJob } from "../services/jobService.js" ;
4+ import { getAdminMetrics } from "../services/adminService.js" ;
5+ import { createUser } from "../services/userService.js" ;
6+
7+ test ( "admin metrics reflect in-memory jobs and freelancer users" , async ( ) => {
8+ assert . deepEqual ( await getAdminMetrics ( ) , {
9+ openJobs : 0 ,
10+ activeFreelancers : 0 ,
11+ flaggedAccounts : 0 ,
12+ monthlyVolume : 0
13+ } ) ;
14+
15+ await createJob ( {
16+ title : "Build a landing page" ,
17+ description : "Create a responsive marketplace landing page" ,
18+ budgetMin : 500 ,
19+ budgetMax : 1200 ,
20+ categoryId : "web" ,
21+ skills : [ "nextjs" ]
22+ } ) ;
23+ await createUser ( {
24+ email : "freelancer@example.com" ,
25+ role : "freelancer"
26+ } ) ;
27+ await createUser ( {
28+ email : "client@example.com" ,
29+ role : "client"
30+ } ) ;
31+
32+ assert . deepEqual ( await getAdminMetrics ( ) , {
33+ openJobs : 1 ,
34+ activeFreelancers : 1 ,
35+ flaggedAccounts : 0 ,
36+ monthlyVolume : 0
37+ } ) ;
38+ } ) ;
You can’t perform that action at this time.
0 commit comments