diff --git a/server/__tests__/folders.test.js b/server/__tests__/folders.test.js index a6c1bf2..bf8b804 100644 --- a/server/__tests__/folders.test.js +++ b/server/__tests__/folders.test.js @@ -17,6 +17,7 @@ describe('Folders', () => { find: jest.fn().mockReturnValue({ toArray: jest.fn() }), // Mock the find method }; + // Mock the database connection db = { connect: jest.fn(), @@ -29,6 +30,47 @@ describe('Folders', () => { }); + // create + describe('create', () => { + 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'); + + expect(db.connect).toHaveBeenCalled(); + expect(db.collection).toHaveBeenCalledWith('folders'); + expect(collection.findOne).toHaveBeenCalledWith({ title, userId: '12345' }); + expect(collection.insertOne).toHaveBeenCalledWith(expect.objectContaining({ title, userId: '12345' })); + expect(result).toBeDefined(); + }); + + it('should throw an error if the folder already exists', async () => { + const title = 'Existing Folder'; + const userId = '66fc70bea1b9e87655cf17c9'; + + // Mock the database response of a found folder + 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'); + + expect(db.connect).toHaveBeenCalled(); + expect(db.collection).toHaveBeenCalledWith('folders'); + expect(collection.findOne).toHaveBeenCalledWith({ title, userId: userId }); + }); + }); + describe('folderExists', () => { it('should return true if folder exists', async () => { const title = 'Test Folder'; @@ -37,9 +79,6 @@ describe('Folders', () => { // Mock the database response collection.findOne.mockResolvedValue({ title, userId }); - // Spy on console.log - const consoleSpy = jest.spyOn(console, 'log'); - const result = await folders.folderExists(title, userId); expect(db.connect).toHaveBeenCalled(); diff --git a/server/controllers/folders.js b/server/controllers/folders.js index c51451c..1b0c1b3 100644 --- a/server/controllers/folders.js +++ b/server/controllers/folders.js @@ -7,8 +7,6 @@ class FoldersController { constructor(foldersModel) { this.folders = foldersModel; - // this.quizzes = quizModel; - console.log("FoldersController constructor: folders", this.folders); } /*** diff --git a/server/controllers/images.js b/server/controllers/images.js index 415540e..b77ed96 100644 --- a/server/controllers/images.js +++ b/server/controllers/images.js @@ -5,7 +5,6 @@ class ImagesController { constructor(imagesModel) { this.images = imagesModel; - console.log("ImagesController constructor: images", this.images); } upload = async (req, res, next) => { diff --git a/server/controllers/quiz.js b/server/controllers/quiz.js index d6cd918..e293bf6 100644 --- a/server/controllers/quiz.js +++ b/server/controllers/quiz.js @@ -7,9 +7,7 @@ class QuizController { constructor(quizModel, foldersModel) { this.folders = foldersModel; - console.log("QuizController constructor: folders", this.folders); this.quizzes = quizModel; - console.log("QuizController constructor: quizzes", this.quizzes); } create = async (req, res, next) => { diff --git a/server/controllers/users.js b/server/controllers/users.js index 6011948..c6b5dab 100644 --- a/server/controllers/users.js +++ b/server/controllers/users.js @@ -9,7 +9,6 @@ class UsersController { constructor(userModel) { this.users = userModel; - console.log("UsersController constructor: users", this.users); } register = async (req, res, next) => { diff --git a/server/models/folders.js b/server/models/folders.js index 3f94f3a..d2496b3 100644 --- a/server/models/folders.js +++ b/server/models/folders.js @@ -15,7 +15,12 @@ class Folders { const existingFolder = await foldersCollection.findOne({ title: title, userId: userId }); - if (existingFolder) return new Error('Folder already exists'); + console.log(`Folders.create: existingFolder`, existingFolder); + + if (existingFolder) { + console.log('Folder already exists, throwing Error'); + throw new Error('Folder already exists'); + } const newFolder = { userId: userId, @@ -50,6 +55,7 @@ class Folders { return folder.userId; } + // finds all quizzes in a folder async getContent(folderId) { await this.db.connect() const conn = this.db.getConnection(); @@ -110,8 +116,6 @@ class Folders { for (const quiz of sourceFolder.content) { const { title, content } = quiz; - //console.log(title); - //console.log(content); await this.quizModel.create(title, content, newFolderId.toString(), userId); } diff --git a/server/socket/socket.js b/server/socket/socket.js index 5efe1fe..48b4bdb 100644 --- a/server/socket/socket.js +++ b/server/socket/socket.js @@ -9,7 +9,7 @@ const setupWebsocket = (io) => { console.log("Connection limit reached. Disconnecting client."); socket.emit( "join-failure", - "Le nombre maximum de connexion a été atteint" + "Le nombre maximum de connexions a été atteint" ); socket.disconnect(true); return;