Skip to content

Commit 457d40f

Browse files
authored
Merge pull request #50 from oslabs-beta/denton/testing3
Denton/testing3
2 parents 4aadca8 + 3f49e80 commit 457d40f

File tree

170 files changed

+18247
-14575
lines changed

Some content is hidden

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

170 files changed

+18247
-14575
lines changed

__tests__/server.test.tsx

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

5-
65
import marketplaceController from '../server/controllers/marketplaceController';
6+
import sessionController from '../server/controllers/sessionController';
77
import app from '../server/server';
88
import mockData from '../mockData';
99
import { profileEnd } from 'console';
10-
import { Projects } from '../server/models/reactypeModels';
10+
import { Projects, Users, Sessions } from '../server/models/reactypeModels';
1111
const request = require('supertest');
1212
const mongoose = require('mongoose');
1313
const mockNext = jest.fn(); // Mock nextFunction
@@ -25,7 +25,8 @@ beforeAll(async () => {
2525
afterAll(async () => {
2626

2727
const result = await Projects.deleteMany({});//clear the projects collection after tests are done
28-
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'}});
2930
await mongoose.connection.close();
3031
});
3132

@@ -287,13 +288,121 @@ describe('Server endpoint tests', () => {
287288
});
288289
});
289290
});
291+
});
292+
293+
describe('SessionController tests', () => {
294+
295+
296+
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+
});
335+
336+
337+
describe('startSession',() => {
338+
339+
afterEach(() => {
340+
jest.resetAllMocks();
341+
})
342+
it('Trigger a database query error for findOne', async () => {
343+
344+
const mockReq: any = {
345+
cookies: projectToSave.userId,//trying to trigger if cookies was not assigned
346+
body: {
347+
userId: 'sampleUserId', // Set up a sample userId in the request body
348+
},
349+
}
350+
const mockRes: any = {
351+
json: jest.fn(),
352+
status: jest.fn(),
353+
redirect: jest.fn(),
354+
locals: {id: projectToSave.userId}
355+
};
356+
357+
const next = jest.fn();
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);
361+
});
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();
370+
});
290371

372+
xit('Check if a new Session is created', async () => {//not working for some reason cannot get mocknext() to be called in test?
373+
374+
const mockReq: any = {
375+
cookies: projectToSave.userId,//trying to trigger if cookies was not assigned
376+
body: {
377+
userId: 'sampleUserId', // Set up a sample userId in the request body
378+
},
379+
}
380+
const mockRes: any = {
381+
json: jest.fn(),
382+
status: jest.fn(),
383+
redirect: jest.fn(),
384+
locals: {id: 'testID'}//a sesion id that doesnt exist
385+
};
386+
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);
291392

393+
//check if it reaches next()
394+
//await expect(mockRes.locals.ssid).toBe('testID');
395+
expect(mockNext).toHaveBeenCalled();
292396

293397

398+
399+
});
400+
});
294401
});
295402

296403

404+
405+
297406

298407

299408

__tests__/userAuth.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ describe('User Authentication tests', () => {
9393

9494
});
9595

96+
97+
9698
// import request from 'supertest';
9799
// import app from '../server/server';
98100
// import mockObj from '../mockData';

app/src/components/marketplace/MarketplaceCard.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,8 @@ const MarketplaceCard = ({ proj }: { proj: Project }) => {
131131
/>
132132
<CardHeader
133133
avatar={
134-
<Avatar sx={{ bgcolor: red[500] }} aria-label="recipe">
135-
R
134+
<Avatar sx={{ bgcolor: '#0bcaa8' }} aria-label="recipe">
135+
{proj.username.slice(0,1).toUpperCase()}
136136
</Avatar>
137137
}
138138
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)