422 lines
9.9 KiB
JavaScript
422 lines
9.9 KiB
JavaScript
const User = require("../../../../backend/models/user");
|
|
const mongoose = require("../../../../backend/db/mongoose");
|
|
const conn = mongoose.connection;
|
|
const createUser = require("../../../fixtures/createUser");
|
|
const UtilsFolder = require("../../../../backend/db/utils/folderUtils");
|
|
const utilsFolder = new UtilsFolder();
|
|
const Folder = require("../../../../backend/models/folder");
|
|
|
|
let user;
|
|
let folder;
|
|
|
|
process.env.KEY = "1234";
|
|
|
|
beforeEach(async(done) => {
|
|
|
|
if (conn.readyState === 0) {
|
|
|
|
conn.once("open", async() => {
|
|
|
|
//user = await createUser();
|
|
const {user: gotUser} = await createUser();
|
|
user = gotUser;
|
|
|
|
const folderData = {
|
|
name: "bunny",
|
|
owner: user._id,
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
}
|
|
|
|
|
|
folder = new Folder(folderData);
|
|
await folder.save();
|
|
|
|
done();
|
|
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
//user = await createUser();
|
|
const {user: gotUser} = await createUser();
|
|
user = gotUser;
|
|
|
|
const folderData = {
|
|
name: "bunny",
|
|
owner: user._id,
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
}
|
|
|
|
|
|
folder = new Folder(folderData);
|
|
await folder.save();
|
|
|
|
done();
|
|
}
|
|
|
|
})
|
|
|
|
afterEach( async(done) => {
|
|
|
|
await User.deleteMany({});
|
|
await Folder.deleteMany({});
|
|
|
|
done();
|
|
|
|
})
|
|
|
|
test("When giving userID, and search query, should return a searched filtered folder list", async() => {
|
|
|
|
const userID = user._id;
|
|
let search = "coco";
|
|
search = new RegExp(search, 'i')
|
|
|
|
const folderTwo = await new Folder({
|
|
name: "coconut",
|
|
owner: userID,
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
const folderThree = await new Folder({
|
|
name: "dinnerbone",
|
|
owner: userID,
|
|
parent: "1234",
|
|
parentList: ["/", "1234"]
|
|
})
|
|
|
|
const folderFour = await new Folder({
|
|
name: "cocoelephant",
|
|
owner: "1234",
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
await folderTwo.save();
|
|
await folderThree.save();
|
|
await folderFour.save();
|
|
|
|
|
|
|
|
const recievedFolderList = await utilsFolder.getFolderSearchList(userID, search);
|
|
|
|
|
|
expect(recievedFolderList.length).toBe(1);
|
|
expect(recievedFolderList[0]._id).toEqual(folderTwo._id)
|
|
})
|
|
|
|
test("When giving the wrong userID, should not return search query", async() => {
|
|
|
|
const userID = user._id;
|
|
const wrongUserID = "123456789012"
|
|
let search = "coco";
|
|
search = new RegExp(search, 'i')
|
|
|
|
const folderTwo = await new Folder({
|
|
name: "coconut",
|
|
owner: userID,
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
const folderThree = await new Folder({
|
|
name: "dinnerbone",
|
|
owner: userID,
|
|
parent: "1234",
|
|
parentList: ["/", "1234"]
|
|
})
|
|
|
|
const folderFour = await new Folder({
|
|
name: "cocoelephant",
|
|
owner: "1234",
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
await folderTwo.save();
|
|
await folderThree.save();
|
|
await folderFour.save();
|
|
|
|
|
|
|
|
const recievedFolderList = await utilsFolder.getFolderSearchList(wrongUserID, search);
|
|
|
|
|
|
expect(recievedFolderList.length).toBe(0);
|
|
})
|
|
|
|
test("When giving folderID and userID, should return folder info", async() => {
|
|
|
|
const folderID = folder._id;
|
|
const userID = user._id;
|
|
|
|
|
|
const recievedFolder = await utilsFolder.getFolderInfo(folderID, userID);
|
|
|
|
|
|
expect(recievedFolder._id).toEqual(folderID);
|
|
})
|
|
|
|
test("When giving the wrong folderID, should not return folder info", async() => {
|
|
|
|
const wrongFolderID = "123456789012";
|
|
const userID = user._id;
|
|
|
|
|
|
const recievedFolder = await utilsFolder.getFolderInfo(wrongFolderID, userID);
|
|
|
|
|
|
expect(recievedFolder).toBe(null);
|
|
})
|
|
|
|
|
|
test("When giving the wrong userID, should not return folder info", async() => {
|
|
|
|
const folderID = folder._id;
|
|
const wrongUserID = "123456789012"
|
|
|
|
|
|
const recievedFolder = await utilsFolder.getFolderInfo(folderID, wrongUserID);
|
|
|
|
|
|
expect(recievedFolder).toBe(null);
|
|
})
|
|
|
|
test("When giving userID, parent, and sortby, should return filtered folder list by parent", async() => {
|
|
|
|
const userID = user._id;
|
|
const parent = "1234";
|
|
const sortBy = {createdAt: -1}
|
|
|
|
const folderTwo = await new Folder({
|
|
name: "coconut",
|
|
owner: userID,
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
const folderThree = await new Folder({
|
|
name: "dinnerbone",
|
|
owner: userID,
|
|
parent: "1234",
|
|
parentList: ["/", "1234"]
|
|
})
|
|
|
|
const folderFour = await new Folder({
|
|
name: "cocoelephant",
|
|
owner: "1234",
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
await folderTwo.save();
|
|
await folderThree.save();
|
|
await folderFour.save();
|
|
|
|
|
|
|
|
const recievedFolderList = await utilsFolder.getFolderListByParent(userID, parent, sortBy);
|
|
|
|
|
|
expect(recievedFolderList.length).toBe(1);
|
|
expect(recievedFolderList[0]._id).toEqual(folderThree._id);
|
|
})
|
|
|
|
test("When giving the wrong userID, should not return folder list filtered by parent", async() => {
|
|
|
|
const userID = user._id;
|
|
const parent = "1234";
|
|
const sortBy = {createdAt: -1}
|
|
const wrongUserID = "123456789012"
|
|
|
|
|
|
const folderTwo = await new Folder({
|
|
name: "coconut",
|
|
owner: userID,
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
const folderThree = await new Folder({
|
|
name: "dinnerbone",
|
|
owner: userID,
|
|
parent: "1234",
|
|
parentList: ["/", "1234"]
|
|
})
|
|
|
|
const folderFour = await new Folder({
|
|
name: "cocoelephant",
|
|
owner: "1234",
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
await folderTwo.save();
|
|
await folderThree.save();
|
|
await folderFour.save();
|
|
|
|
|
|
|
|
const recievedFolderList = await utilsFolder.getFolderListByParent(wrongUserID, parent, sortBy);
|
|
|
|
|
|
expect(recievedFolderList.length).toBe(0)
|
|
})
|
|
|
|
test("When giving userID, search query, and sort by, should return folder list by search (no limit)" , async() => {
|
|
|
|
const userID = user._id;
|
|
let search = "coco";
|
|
search = new RegExp(search, 'i')
|
|
|
|
const folderTwo = await new Folder({
|
|
name: "coconut",
|
|
owner: userID,
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
const folderThree = await new Folder({
|
|
name: "dinnerbone",
|
|
owner: userID,
|
|
parent: "1234",
|
|
parentList: ["/", "1234"]
|
|
})
|
|
|
|
const folderFour = await new Folder({
|
|
name: "cocoelephant",
|
|
owner: "1234",
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
await folderTwo.save();
|
|
await folderThree.save();
|
|
await folderFour.save();
|
|
|
|
|
|
|
|
const recievedFolderList = await utilsFolder.getFolderListBySearch(userID, search);
|
|
|
|
|
|
expect(recievedFolderList.length).toBe(1);
|
|
expect(recievedFolderList[0]._id).toEqual(folderTwo._id)
|
|
|
|
})
|
|
|
|
test("When giving wrong userID, should not return folder list by search (no limit)", async() => {
|
|
|
|
const userID = user._id;
|
|
let search = "coco";
|
|
search = new RegExp(search, 'i')
|
|
const wrongUserID = "123456789012"
|
|
|
|
const folderTwo = await new Folder({
|
|
name: "coconut",
|
|
owner: userID,
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
const folderThree = await new Folder({
|
|
name: "dinnerbone",
|
|
owner: userID,
|
|
parent: "1234",
|
|
parentList: ["/", "1234"]
|
|
})
|
|
|
|
const folderFour = await new Folder({
|
|
name: "cocoelephant",
|
|
owner: "1234",
|
|
parent: "/",
|
|
parentList: ["/"]
|
|
})
|
|
|
|
await folderTwo.save();
|
|
await folderThree.save();
|
|
await folderFour.save();
|
|
|
|
|
|
|
|
const recievedFolderList = await utilsFolder.getFolderListBySearch(wrongUserID, search);
|
|
|
|
|
|
expect(recievedFolderList.length).toBe(0);
|
|
})
|
|
|
|
test("When giving folderID, userID, and title, should rename folder", async() => {
|
|
|
|
const folderID = folder._id;
|
|
const userID = user._id;
|
|
const newName = "almonds";
|
|
|
|
|
|
await utilsFolder.renameFolder(folderID, userID, newName);
|
|
const updatedFolder = await Folder.findById(folderID);
|
|
|
|
|
|
expect(updatedFolder.name).toBe(newName);
|
|
})
|
|
|
|
test("When giving wrong folderID, should not rename folder", async() => {
|
|
|
|
const folderID = folder._id;
|
|
const userID = user._id;
|
|
const newName = "almonds";
|
|
const wrongFolderID = "123456789012"
|
|
|
|
|
|
await utilsFolder.renameFolder(wrongFolderID, userID, newName);
|
|
const updatedFolder = await Folder.findById(folderID);
|
|
|
|
|
|
expect(updatedFolder.name).toBe(folder.name);
|
|
})
|
|
|
|
test("When giving the wrong userID, should not rename folder", async() => {
|
|
|
|
const folderID = folder._id;
|
|
const wrongUserID = "123456789012";
|
|
const newName = "almonds";
|
|
|
|
|
|
await utilsFolder.renameFolder(folderID, wrongUserID, newName);
|
|
const updatedFolder = await Folder.findById(folderID);
|
|
|
|
|
|
expect(updatedFolder.name).toBe(folder.name);
|
|
})
|
|
|
|
test("When giving folderID, userID, parent, and parentList, should move folder", async() => {
|
|
|
|
const folderID = folder._id;
|
|
const userID = user._id;
|
|
const parent = "1234";
|
|
const parentList = ["/", "1234"];
|
|
|
|
|
|
await utilsFolder.moveFolder(folderID, userID, parent, parentList);
|
|
const updatedFolder = await Folder.findById(folderID);
|
|
|
|
expect(updatedFolder.parentList.length).toBe(2);
|
|
expect(updatedFolder.parent).toBe(parent);
|
|
})
|
|
|
|
test("When giving the wrong userID for folder move, should not move folder", async() => {
|
|
|
|
const folderID = folder._id;
|
|
const wrongUserID = "123456789012";
|
|
const parent = "1234";
|
|
const parentList = ["/", "1234"];
|
|
|
|
await utilsFolder.moveFolder(folderID, wrongUserID, parent, parentList);
|
|
const updatedFolder = await Folder.findById(folderID);
|
|
|
|
expect(updatedFolder.parentList.length).toBe(1);
|
|
expect(updatedFolder.parent).toBe(folder.parent);
|
|
})
|
|
|