Skip to content

Commit 1a6ba1b

Browse files
committed
test3
1 parent 99e8b3b commit 1a6ba1b

File tree

168 files changed

+18209
-14626
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

168 files changed

+18209
-14626
lines changed

__tests__/server.test.tsx

Lines changed: 80 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22
* @jest-environment node
33
*/
44

5-
65
import marketplaceController from '../server/controllers/marketplaceController';
76
import sessionController from '../server/controllers/sessionController';
87
import app from '../server/server';
98
import mockData from '../mockData';
109
import { profileEnd } from 'console';
11-
import { Projects, Sessions} from '../server/models/reactypeModels';
10+
import { Projects, Users, Sessions } from '../server/models/reactypeModels';
1211
const request = require('supertest');
1312
const mongoose = require('mongoose');
1413
const mockNext = jest.fn(); // Mock nextFunction
@@ -26,7 +25,8 @@ beforeAll(async () => {
2625
afterAll(async () => {
2726

2827
const result = await Projects.deleteMany({});//clear the projects collection after tests are done
29-
console.log(`${result.deletedCount} documents deleted.`);
28+
const result2 = await Users.deleteMany({_id: {$ne: '64f551e5b28d5292975e08c8'}});//clear the users collection after tests are done except for the mockdata user account
29+
const result3 = await Sessions.deleteMany({cookieId: {$ne: '64f551e5b28d5292975e08c8'}});
3030
await mongoose.connection.close();
3131
});
3232

@@ -288,94 +288,120 @@ describe('Server endpoint tests', () => {
288288
});
289289
});
290290
});
291+
});
292+
293+
describe('SessionController tests', () => {
294+
291295

292-
xdescribe('SessionController tests', () => {
293-
294296

297+
describe('isLoggedIn',() => {
298+
299+
afterEach(() => {
300+
jest.resetAllMocks();
301+
})
302+
// Mock Express request and response objects and next function
303+
const mockReq: any = {
304+
cookies: null,//trying to trigger if cookies was not assigned
305+
body: {
306+
userId: 'sampleUserId', // Set up a sample userId in the request body
307+
},
308+
}
309+
const mockRes: any = {
310+
json: jest.fn(),
311+
status: jest.fn(),
312+
redirect: jest.fn()
313+
};
314+
const next = jest.fn();
315+
it('Assign userId from request body to cookieId', async () => {
316+
// Call isLoggedIn
317+
await sessionController.isLoggedIn(mockReq, mockRes, next);
318+
expect(mockRes.redirect).toHaveBeenCalledWith('/');
319+
// Ensure that next() was called
320+
});
321+
it('Trigger a database query error for findOne', async () => {
322+
const mockFindOne = jest.spyOn(mongoose.model('Sessions'), 'findOne').mockImplementation(() => {
323+
throw new Error('Database query error');
324+
});
325+
// Call isLoggedIn
326+
await sessionController.isLoggedIn(mockReq, mockRes, next);
327+
// Ensure that next() was called with the error
328+
expect(next).toHaveBeenCalledWith(expect.objectContaining({
329+
log: expect.stringMatching('Database query error'), // The 'i' flag makes it case-insensitive
330+
}));
331+
332+
mockFindOne.mockRestore();
333+
});
334+
});
295335

296-
336+
337+
describe('startSession',() => {
338+
297339
afterEach(() => {
298340
jest.resetAllMocks();
299341
})
300-
301-
xdescribe('isLoggedIn',() => {
302-
// Mock Express request and response objects and next function
342+
it('Trigger a database query error for findOne', async () => {
343+
303344
const mockReq: any = {
304-
cookies: null,//trying to trigger if cookies was not assigned
345+
cookies: projectToSave.userId,//trying to trigger if cookies was not assigned
305346
body: {
306347
userId: 'sampleUserId', // Set up a sample userId in the request body
307348
},
308-
}
309-
349+
}
310350
const mockRes: any = {
311351
json: jest.fn(),
312352
status: jest.fn(),
313-
redirect: jest.fn()
353+
redirect: jest.fn(),
354+
locals: {id: projectToSave.userId}
314355
};
315356

316357
const next = jest.fn();
317-
it('Assign userId from request body to cookieId', async () => {
318-
// Call isLoggedIn
319-
await sessionController.isLoggedIn(mockReq, mockRes, next);
320-
expect(mockRes.redirect).toHaveBeenCalledWith('/');
321-
// Ensure that next() was called
322-
});
323-
324-
it('Trigger a database query error for findOne', async () => {
325-
jest.spyOn(mongoose.model('Sessions'), 'findOne').mockImplementation(() => {
326-
throw new Error('Database query error');
327-
});
328-
// Call isLoggedIn
329-
await sessionController.isLoggedIn(mockReq, mockRes, next);
330-
331-
// Ensure that next() was called with the error
332-
expect(next).toHaveBeenCalledWith(expect.objectContaining({
333-
log: expect.stringMatching('Database query error'), // The 'i' flag makes it case-insensitive
334-
}));
358+
const findOneMock = jest.spyOn(mongoose.model('Sessions'), 'findOne') as jest.Mock;
359+
findOneMock.mockImplementation((query: any, callback: (err: any, ses: any) => void) => {
360+
callback(new Error('Database query error'), null);
335361
});
362+
// Call startSession
363+
await sessionController.startSession(mockReq, mockRes, next);
364+
// Check that next() was called with the error
365+
expect(next).toHaveBeenCalledWith(expect.objectContaining({
366+
log: expect.stringMatching('Database query error'), // The 'i' flag makes it case-insensitive
367+
}));
368+
369+
findOneMock.mockRestore();
336370
});
337371

338-
xdescribe('startSession',() => {
372+
xit('Check if a new Session is created', async () => {//not working for some reason cannot get mocknext() to be called in test?
373+
339374
const mockReq: any = {
340375
cookies: projectToSave.userId,//trying to trigger if cookies was not assigned
341376
body: {
342377
userId: 'sampleUserId', // Set up a sample userId in the request body
343378
},
344-
}
345-
379+
}
346380
const mockRes: any = {
347381
json: jest.fn(),
348382
status: jest.fn(),
349-
redirect: jest.fn()
383+
redirect: jest.fn(),
384+
locals: {id: 'testID'}//a sesion id that doesnt exist
350385
};
351-
352-
jest.spyOn(mongoose.model('Sessions'), 'findOne').mockImplementation(() => {
353-
throw new Error('Database query error');
354-
});
355386

356-
const next = jest.fn();
387+
const mockNext = jest.fn();
388+
389+
//Call startSession
390+
// Wrap your test logic in an async function
391+
await sessionController.startSession(mockReq, mockRes, mockNext);
357392

358-
it('Trigger a database query error for findOne', async () => {
393+
//check if it reaches next()
394+
//await expect(mockRes.locals.ssid).toBe('testID');
395+
expect(mockNext).toHaveBeenCalled();
359396

360-
jest.spyOn(mongoose.model('Sessions'), 'findOne').mockImplementation(() => {
361-
throw new Error('Database query error');
362-
});
363-
// Call startSession
364-
await sessionController.startSession(mockReq, mockRes, next);
365-
366-
// Ensure that next() was called with the error
367-
expect(next).toHaveBeenCalledWith(expect.objectContaining({
368-
log: expect.stringMatching('Database query error'), // The 'i' flag makes it case-insensitive
369-
}));
370-
});
371397

398+
372399
});
373-
374400
});
375-
376401
});
377402

378403

404+
379405

380406

381407

app/src/components/marketplace/MarketplaceCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ const MarketplaceCard = ({ proj }: { proj: Project }) => {
113113
<CardHeader
114114
avatar={
115115
<Avatar sx={{ bgcolor: red[500] }} aria-label="recipe">
116-
R
116+
{proj.username.slice(0,1).toUpperCase()}
117117
</Avatar>
118118
}
119119
action={

coverage-ts/files/app/src/Dashboard/NavbarDash.tsx.html

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<link href="../../../../assets/source-file.css" type="text/css" rel="stylesheet">
1212
</head>
1313
<body>
14-
<div style="margin-top:3em" class="ui container"><h1 class="ui header"><a href="../../../../index.html">TypeScript coverage report</a></h1><table style="margin-top:2em" class="ui celled table"><thead class=""><tr class=""><th class="">Filename</th><th class="">Percent</th><th class="">Threshold</th><th class="">Total</th><th class="">Covered</th><th class="">Uncovered</th></tr></thead><tbody class=""><tr class="positive"><td class="">app/src/Dashboard/NavbarDash.tsx</td><td class="">88.44%</td><td class="">80%</td><td class="">225</td><td class="">199</td><td class="">26</td></tr></tbody></table><textarea id="editor" readonly="" style="margin-top:3em">import React, { useState, useContext } from &#x27;react&#x27;;
14+
<div style="margin-top:3em" class="ui container"><h1 class="ui header"><a href="../../../../index.html">TypeScript coverage report</a></h1><table style="margin-top:2em" class="ui celled table"><thead class=""><tr class=""><th class="">Filename</th><th class="">Percent</th><th class="">Threshold</th><th class="">Total</th><th class="">Covered</th><th class="">Uncovered</th></tr></thead><tbody class=""><tr class="positive"><td class="">app/src/Dashboard/NavbarDash.tsx</td><td class="">88.51%</td><td class="">80%</td><td class="">235</td><td class="">208</td><td class="">27</td></tr></tbody></table><textarea id="editor" readonly="" style="margin-top:3em">import React, { useState, useContext } from &#x27;react&#x27;;
1515
import { Theme } from &#x27;@mui/material/styles&#x27;;
1616
import withStyles from &#x27;@mui/styles/withStyles&#x27;;
1717
import createStyles from &#x27;@mui/styles/createStyles&#x27;;
@@ -106,11 +106,13 @@
106106
&lt;div className={classes.root} style={style}&gt;
107107
&lt;AppBar position=&#x27;static&#x27;&gt;
108108
&lt;Toolbar&gt;
109-
&lt;Avatar src={greenLogo}&gt;&lt;/Avatar&gt;
110-
&lt;Typography variant=&quot;h6&quot; style={{ marginLeft: &#x27;1rem&#x27; }} className={classes.title}&gt;
111-
ReacType
112-
&lt;/Typography&gt;
113-
&lt;div style ={ { textDecoration: &#x27;none&#x27; } }&gt;
109+
&lt;Link to=&quot;/&quot; style={{display: &#x27;inline-flex&#x27;, justifyContent: &#x27;center&#x27;, textDecoration: &#x27;none&#x27;}}&gt;
110+
&lt;Avatar src={greenLogo}&gt;&lt;/Avatar&gt;
111+
&lt;Typography variant=&quot;h6&quot; style={{ marginTop: &#x27;0.3rem&#x27;, marginLeft: &#x27;0.5rem&#x27;, color: &#x27;silver&#x27; }} className={classes.title}&gt;
112+
ReacType
113+
&lt;/Typography&gt;
114+
&lt;/Link&gt;
115+
&lt;div style ={ { marginLeft: &#x27;0.5rem&#x27;, textDecoration: &#x27;none&#x27; } }&gt;
114116
&lt;Button
115117
variant=&#x27;contained&#x27;
116118
color=&#x27;primary&#x27;
@@ -185,8 +187,8 @@
185187
&lt;/div&gt;
186188
);
187189
}
188-
</textarea><pre id="annotations" style="display:none">[{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:65,&quot;character&quot;:34,&quot;text&quot;:&quot;theme&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:69,&quot;character&quot;:8,&quot;text&quot;:&quot;color&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:69,&quot;character&quot;:15,&quot;text&quot;:&quot;theme&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:69,&quot;character&quot;:21,&quot;text&quot;:&quot;palette&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:69,&quot;character&quot;:29,&quot;text&quot;:&quot;common&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:69,&quot;character&quot;:36,&quot;text&quot;:&quot;white&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:75,&quot;character&quot;:31,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:84,&quot;character&quot;:9,&quot;text&quot;:&quot;anchorEl&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:85,&quot;character&quot;:22,&quot;text&quot;:&quot;event&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:86,&quot;character&quot;:16,&quot;text&quot;:&quot;event&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:86,&quot;character&quot;:22,&quot;text&quot;:&quot;currentTarget&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:112,&quot;character&quot;:12,&quot;text&quot;:&quot;anchorEl&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:112,&quot;character&quot;:22,&quot;text&quot;:&quot;anchorEl&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:114,&quot;character&quot;:26,&quot;text&quot;:&quot;anchorEl&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:119,&quot;character&quot;:22,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:119,&quot;character&quot;:28,&quot;text&quot;:&quot;optionClicked&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:145,&quot;character&quot;:21,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:145,&quot;character&quot;:27,&quot;text&quot;:&quot;isThemeLight&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:150,&quot;character&quot;:14,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:150,&quot;character&quot;:20,&quot;text&quot;:&quot;isThemeLight&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:150,&quot;character&quot;:35,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:150,&quot;character&quot;:41,&quot;text&quot;:&quot;setTheme&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:150,&quot;character&quot;:59,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:150,&quot;character&quot;:65,&quot;text&quot;:&quot;setTheme&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:153,&quot;character&quot;:13,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:153,&quot;character&quot;:19,&quot;text&quot;:&quot;isThemeLight&quot;,&quot;kind&quot;:1}]</pre></div>
189-
<p class="footer-text">TypeScript Coverage Report generated by <a href="https://github.com/plantain-00/type-coverage">type-coverage</a> and <a href="https://github.com/alexcanessa/typescript-coverage-report">typescript-coverage-report</a> at Fri, 05 May 2023 01:51:04 GMT</p>
190+
</textarea><pre id="annotations" style="display:none">[{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:20,&quot;character&quot;:7,&quot;text&quot;:&quot;greenLogo&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:65,&quot;character&quot;:34,&quot;text&quot;:&quot;theme&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:69,&quot;character&quot;:8,&quot;text&quot;:&quot;color&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:69,&quot;character&quot;:15,&quot;text&quot;:&quot;theme&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:69,&quot;character&quot;:21,&quot;text&quot;:&quot;palette&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:69,&quot;character&quot;:29,&quot;text&quot;:&quot;common&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:69,&quot;character&quot;:36,&quot;text&quot;:&quot;white&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:75,&quot;character&quot;:31,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:84,&quot;character&quot;:9,&quot;text&quot;:&quot;anchorEl&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:85,&quot;character&quot;:22,&quot;text&quot;:&quot;event&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:86,&quot;character&quot;:16,&quot;text&quot;:&quot;event&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:86,&quot;character&quot;:22,&quot;text&quot;:&quot;currentTarget&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:114,&quot;character&quot;:12,&quot;text&quot;:&quot;anchorEl&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:114,&quot;character&quot;:22,&quot;text&quot;:&quot;anchorEl&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:116,&quot;character&quot;:26,&quot;text&quot;:&quot;anchorEl&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:121,&quot;character&quot;:22,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:121,&quot;character&quot;:28,&quot;text&quot;:&quot;optionClicked&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:147,&quot;character&quot;:21,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:147,&quot;character&quot;:27,&quot;text&quot;:&quot;isThemeLight&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:152,&quot;character&quot;:14,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:152,&quot;character&quot;:20,&quot;text&quot;:&quot;isThemeLight&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:152,&quot;character&quot;:35,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:152,&quot;character&quot;:41,&quot;text&quot;:&quot;setTheme&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:152,&quot;character&quot;:59,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:152,&quot;character&quot;:65,&quot;text&quot;:&quot;setTheme&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:155,&quot;character&quot;:13,&quot;text&quot;:&quot;props&quot;,&quot;kind&quot;:1},{&quot;file&quot;:&quot;app/src/Dashboard/NavbarDash.tsx&quot;,&quot;line&quot;:155,&quot;character&quot;:19,&quot;text&quot;:&quot;isThemeLight&quot;,&quot;kind&quot;:1}]</pre></div>
191+
<p class="footer-text">TypeScript Coverage Report generated by <a href="https://github.com/plantain-00/type-coverage">type-coverage</a> and <a href="https://github.com/alexcanessa/typescript-coverage-report">typescript-coverage-report</a> at Thu, 07 Sep 2023 18:28:49 GMT</p>
190192
</body>
191193
</html>
192194

0 commit comments

Comments
 (0)