mirror of
https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir.git
synced 2025-08-11 21:23:54 -04:00
Compare commits
3 commits
e2d4582ccf
...
e6a3af5838
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6a3af5838 | ||
|
|
b20f33500e | ||
|
|
ea656fe9c7 |
1 changed files with 86 additions and 120 deletions
|
|
@ -6,7 +6,8 @@ console.log('db:', db); // Debugging line
|
||||||
console.log('db.getConnection:', db.getConnection); // Debugging line
|
console.log('db.getConnection:', db.getConnection); // Debugging line
|
||||||
|
|
||||||
describe('Folders', () => {
|
describe('Folders', () => {
|
||||||
const folder = new Folder(db, new Quiz(db));
|
const quiz = new Quiz(db);
|
||||||
|
const folder = new Folder(db, quiz);
|
||||||
let database;
|
let database;
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
|
|
@ -64,154 +65,119 @@ describe('Folders', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// beforeEach(() => {
|
|
||||||
// jest.clearAllMocks(); // Clear any previous mock calls
|
|
||||||
|
|
||||||
// // Mock the collection object
|
// getUserFolders
|
||||||
// collection = {
|
describe('getUserFolders', () => {
|
||||||
// findOne: jest.fn(),
|
it('should return all folders for a user', async () => {
|
||||||
// insertOne: jest.fn(),
|
const userId = '12345';
|
||||||
// find: jest.fn().mockReturnValue({ toArray: jest.fn() }), // Mock the find method
|
const userFolders = [
|
||||||
// deleteOne: jest.fn(),
|
{ title: 'Folder 1', userId },
|
||||||
// deleteMany: jest.fn(),
|
{ title: 'Folder 2', userId },
|
||||||
// updateOne: jest.fn(),
|
];
|
||||||
// };
|
// Ensure the folders do not exist before the test
|
||||||
|
await database.collection('folders').deleteMany({ userId });
|
||||||
|
|
||||||
// // Mock the database connection
|
// Insert the folders
|
||||||
// db = {
|
await database.collection('folders').insertMany(userFolders);
|
||||||
// connect: jest.fn(),
|
|
||||||
// getConnection: jest.fn().mockReturnThis(), // Add getConnection method
|
|
||||||
// collection: jest.fn().mockReturnValue(collection),
|
|
||||||
// };
|
|
||||||
|
|
||||||
// quizzes = new Quizzes(db);
|
const result = await folder.getUserFolders(userId);
|
||||||
// folders = new Folders(db, quizzes);
|
|
||||||
|
|
||||||
// });
|
expect(result).toEqual(userFolders);
|
||||||
|
|
||||||
// // create
|
// Clean up
|
||||||
// describe('create', () => {
|
await database.collection('folders').deleteMany({ userId });
|
||||||
// it('should create a new folder and return the new folder ID', async () => {
|
|
||||||
// const title = 'Test Folder';
|
|
||||||
|
|
||||||
// // Mock the database response
|
});
|
||||||
// collection.findOne.mockResolvedValue(null);
|
});
|
||||||
// collection.insertOne.mockResolvedValue({ insertedId: new ObjectId() });
|
|
||||||
|
|
||||||
// const result = await folders.create(title, '12345');
|
// getOwner
|
||||||
|
describe('getOwner', () => {
|
||||||
|
it('should return the owner of a folder', async () => {
|
||||||
|
// userId must be 24-char hex string
|
||||||
|
const userId = '60c72b2f9b1d8b3a4c8e4d3b';
|
||||||
|
|
||||||
// expect(db.connect).toHaveBeenCalled();
|
expect(userId.length).toBe(24);
|
||||||
// expect(db.collection).toHaveBeenCalledWith('folders');
|
expect(/^[0-9A-Fa-f]{24}$/.test(userId)).toBe(true);
|
||||||
// expect(collection.findOne).toHaveBeenCalledWith({ title, userId: '12345' });
|
|
||||||
// expect(collection.insertOne).toHaveBeenCalledWith(expect.objectContaining({ title, userId: '12345' }));
|
|
||||||
// expect(result).toBeDefined();
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // throw an error if userId is undefined
|
// create the folder using the folder API
|
||||||
// it('should throw an error if userId is undefined', async () => {
|
const folderId = await folder.create('Test Folder', userId);
|
||||||
// const title = 'Test Folder';
|
|
||||||
|
|
||||||
// await expect(folders.create(title, undefined)).rejects.toThrow('Missing required parameter(s)');
|
const folderIdString = folderId.toString();
|
||||||
|
|
||||||
// expect(db.connect).not.toHaveBeenCalled();
|
expect(folderIdString.length).toBe(24);
|
||||||
// });
|
expect(/^[0-9A-Fa-f]{24}$/.test(folderIdString)).toBe(true);
|
||||||
|
|
||||||
// it('should throw an error if the folder already exists', async () => {
|
const result = await folder.getOwner(folderIdString);
|
||||||
// const title = 'Existing Folder';
|
|
||||||
// const userId = '66fc70bea1b9e87655cf17c9';
|
|
||||||
|
|
||||||
// // Mock the database response of a found folder
|
expect(result).toBe(userId);
|
||||||
// collection.findOne.mockResolvedValue(
|
});
|
||||||
// // real result from mongosh
|
});
|
||||||
// {
|
|
||||||
// _id: ObjectId.createFromHexString('66fd33fd81758a882ce99aae'),
|
|
||||||
// userId: userId,
|
|
||||||
// title: title,
|
|
||||||
// created_at: new Date('2024-10-02T11:52:29.797Z')
|
|
||||||
// }
|
|
||||||
// );
|
|
||||||
|
|
||||||
// await expect(folders.create(title, userId)).rejects.toThrow('Folder already exists');
|
// write a test for getContent
|
||||||
|
describe('getContent', () => {
|
||||||
|
it('should return the content of a folder', async () => {
|
||||||
|
|
||||||
// expect(db.connect).toHaveBeenCalled();
|
// create a new folder
|
||||||
// expect(db.collection).toHaveBeenCalledWith('folders');
|
const folderId = await folder.create('Test Folder', '12345');
|
||||||
// expect(collection.findOne).toHaveBeenCalledWith({ title, userId: userId });
|
|
||||||
// });
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // getUserFolders
|
// Insert the content using the quiz API
|
||||||
// describe('getUserFolders', () => {
|
const _quiz1ObjectId = await quiz.create('Quiz 1', [], folderId.toString(), '12345');
|
||||||
// it('should return all folders for a user', async () => {
|
const _quiz2ObjectId = await quiz.create('Quiz 2', [], folderId.toString(), '12345');
|
||||||
// const userId = '12345';
|
|
||||||
// const userFolders = [
|
|
||||||
// { title: 'Folder 1', userId },
|
|
||||||
// { title: 'Folder 2', userId },
|
|
||||||
// ];
|
|
||||||
|
|
||||||
// // Mock the database response
|
const content = [
|
||||||
// collection.find().toArray.mockResolvedValue(userFolders);
|
{ title: 'Quiz 1', content: [], _id: _quiz1ObjectId, created_at: expect.any(Date), updated_at: expect.any(Date), folderId: folderId.toString(), userId: '12345' },
|
||||||
|
{ title: 'Quiz 2', content: [], _id: _quiz2ObjectId, created_at: expect.any(Date), updated_at: expect.any(Date), folderId: folderId.toString(), userId: '12345' },
|
||||||
|
];
|
||||||
|
|
||||||
// const result = await folders.getUserFolders(userId);
|
const result = await folder.getContent(folderId.toString());
|
||||||
|
|
||||||
// expect(db.connect).toHaveBeenCalled();
|
expect(result).toEqual(content);
|
||||||
// expect(db.collection).toHaveBeenCalledWith('folders');
|
|
||||||
// expect(collection.find).toHaveBeenCalledWith({ userId });
|
|
||||||
// expect(result).toEqual(userFolders);
|
|
||||||
// });
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // getOwner
|
// Clean up
|
||||||
// describe('getOwner', () => {
|
await database.collection('files').deleteMany({ folderId: folderId.toString() });
|
||||||
// it('should return the owner of a folder', async () => {
|
await database.collection('folders').deleteMany({ _id: folderId });
|
||||||
// const folderId = '60c72b2f9b1d8b3a4c8e4d3b';
|
});
|
||||||
// const userId = '12345';
|
|
||||||
|
|
||||||
// // Mock the database response
|
it('should return an empty array if the folder has no content', async () => {
|
||||||
// collection.findOne.mockResolvedValue({ userId });
|
// create a new folder
|
||||||
|
const folderId = await folder.create('Test Folder', '12345');
|
||||||
|
|
||||||
// const result = await folders.getOwner(folderId);
|
const content = [];
|
||||||
|
const result = await folder.getContent(folderId.toString());
|
||||||
|
|
||||||
// expect(db.connect).toHaveBeenCalled();
|
expect(result).toEqual(content);
|
||||||
// expect(db.collection).toHaveBeenCalledWith('folders');
|
|
||||||
// expect(collection.findOne).toHaveBeenCalledWith({ _id: new ObjectId(folderId) });
|
|
||||||
// expect(result).toBe(userId);
|
|
||||||
// });
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // write a test for getContent
|
// Clean up
|
||||||
// describe('getContent', () => {
|
await database.collection('folders').deleteMany({ _id: folderId });
|
||||||
// it('should return the content of a folder', async () => {
|
});
|
||||||
// const folderId = '60c72b2f9b1d8b3a4c8e4d3b';
|
});
|
||||||
// const content = [
|
|
||||||
// { title: 'Quiz 1', content: [] },
|
|
||||||
// { title: 'Quiz 2', content: [] },
|
|
||||||
// ];
|
|
||||||
|
|
||||||
// // Mock the database response
|
// delete
|
||||||
// collection.find().toArray.mockResolvedValue(content);
|
describe('delete', () => {
|
||||||
|
it('should delete a folder and return true', async () => {
|
||||||
|
const folderId = await folder.create('Test Folder', '12345');
|
||||||
|
|
||||||
// const result = await folders.getContent(folderId);
|
// Insert the content using the quiz API
|
||||||
|
const _quiz1ObjectId = await quiz.create('Quiz 1', [], folderId.toString(), '12345');
|
||||||
|
const _quiz2ObjectId = await quiz.create('Quiz 2', [], folderId.toString(), '12345');
|
||||||
|
|
||||||
// expect(db.connect).toHaveBeenCalled();
|
const result = await folder.delete(folderId.toString());
|
||||||
// expect(db.collection).toHaveBeenCalledWith('files');
|
|
||||||
// expect(collection.find).toHaveBeenCalledWith({ folderId });
|
|
||||||
// expect(result).toEqual(content);
|
|
||||||
// });
|
|
||||||
|
|
||||||
// it('should return an empty array if the folder has no content', async () => {
|
expect(result).toBe(true);
|
||||||
// const folderId = '60c72b2f9b1d8b3a4c8e4d3b';
|
|
||||||
|
|
||||||
// // Mock the database response
|
// make sure quizzes were deleted
|
||||||
// collection.find().toArray.mockResolvedValue([]);
|
const quiz1 = await database.collection('files').findOne({ _id: _quiz1ObjectId });
|
||||||
|
const quiz2 = await database.collection('files').findOne({ _id: _quiz2ObjectId });
|
||||||
|
|
||||||
// const result = await folders.getContent(folderId);
|
expect(quiz1).toBeNull();
|
||||||
|
expect(quiz2).toBeNull();
|
||||||
|
|
||||||
// expect(db.connect).toHaveBeenCalled();
|
// Clean up
|
||||||
// expect(db.collection).toHaveBeenCalledWith('files');
|
await database.collection('files').deleteMany({ folderId: folderId.toString() });
|
||||||
// expect(collection.find).toHaveBeenCalledWith({ folderId });
|
await database.collection('folders').deleteMany({ _id: folderId });
|
||||||
// expect(result).toEqual([]);
|
});
|
||||||
// });
|
|
||||||
// });
|
});
|
||||||
|
|
||||||
// // delete
|
// // delete
|
||||||
// describe('delete', () => {
|
// describe('delete', () => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue