mirror of
https://github.com/codex-team/codex.docs.git
synced 2025-07-20 21:59:41 +02:00
234 lines
6.5 KiB
JavaScript
234 lines
6.5 KiB
JavaScript
|
const {expect} = require('chai');
|
||
|
const fs = require('fs');
|
||
|
const path = require('path');
|
||
|
const config = require('../../config');
|
||
|
const File = require('../../src/models/file');
|
||
|
const {files} = require('../../src/utils/database');
|
||
|
|
||
|
describe('File model', () => {
|
||
|
|
||
|
after(() => {
|
||
|
const pathToDB = path.resolve(__dirname, '../../', config.database, './files.db');
|
||
|
|
||
|
if (fs.existsSync(pathToDB)) {
|
||
|
fs.unlinkSync(pathToDB);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
it('Working with empty model', async () => {
|
||
|
let file = new File();
|
||
|
|
||
|
expect(file.data).to.be.a('object');
|
||
|
|
||
|
let {data} = file;
|
||
|
|
||
|
expect(data._id).to.be.undefined;
|
||
|
expect(data.name).to.be.undefined;
|
||
|
expect(data.filename).to.be.undefined;
|
||
|
expect(data.path).to.be.undefined;
|
||
|
expect(data.size).to.be.undefined;
|
||
|
expect(data.mimetype).to.be.undefined;
|
||
|
|
||
|
file = new File(null);
|
||
|
|
||
|
data = file.data;
|
||
|
|
||
|
expect(data._id).to.be.undefined;
|
||
|
expect(data.name).to.be.undefined;
|
||
|
expect(data.filename).to.be.undefined;
|
||
|
expect(data.path).to.be.undefined;
|
||
|
expect(data.size).to.be.undefined;
|
||
|
expect(data.mimetype).to.be.undefined;
|
||
|
|
||
|
const initialData = {
|
||
|
_id: 'file_id',
|
||
|
name: 'filename',
|
||
|
filename: 'randomname',
|
||
|
path: '/uploads/randomname',
|
||
|
size: 1024,
|
||
|
mimetype: 'image/png'
|
||
|
};
|
||
|
|
||
|
file = new File(initialData);
|
||
|
|
||
|
const json = file.toJSON();
|
||
|
|
||
|
data = file.data;
|
||
|
|
||
|
expect(data._id).to.equal(initialData._id);
|
||
|
expect(data.name).to.equal(initialData.name);
|
||
|
expect(data.filename).to.equal(initialData.filename);
|
||
|
expect(data.path).to.equal(initialData.path);
|
||
|
expect(data.size).to.equal(initialData.size);
|
||
|
expect(data.mimetype).to.equal(initialData.mimetype);
|
||
|
|
||
|
const update = {
|
||
|
_id: 12345,
|
||
|
name: 'updated filename',
|
||
|
filename: 'updated randomname',
|
||
|
path: '/uploads/updated randomname',
|
||
|
size: 2048,
|
||
|
mimetype: 'image/jpeg'
|
||
|
};
|
||
|
|
||
|
file.data = update;
|
||
|
|
||
|
data = file.data;
|
||
|
|
||
|
expect(data._id).to.equal(initialData._id);
|
||
|
expect(data.name).to.equal(update.name);
|
||
|
expect(data.filename).to.equal(update.filename);
|
||
|
expect(data.path).to.equal(update.path);
|
||
|
expect(data.size).to.equal(update.size);
|
||
|
expect(data.mimetype).to.equal(update.mimetype);
|
||
|
});
|
||
|
|
||
|
it('Saving, updating and deleting model in the database', async () => {
|
||
|
const initialData = {
|
||
|
name: 'filename',
|
||
|
filename: 'randomname',
|
||
|
path: '/uploads/randomname',
|
||
|
size: 1024,
|
||
|
mimetype: 'image/png'
|
||
|
};
|
||
|
|
||
|
const file = new File(initialData);
|
||
|
|
||
|
let savedFile = await file.save();
|
||
|
|
||
|
expect(savedFile._id).not.be.undefined;
|
||
|
expect(savedFile.name).to.equal(initialData.name);
|
||
|
expect(savedFile.filename).to.equal(initialData.filename);
|
||
|
expect(savedFile.path).to.equal(initialData.path);
|
||
|
expect(savedFile.size).to.equal(initialData.size);
|
||
|
expect(savedFile.mimetype).to.equal(initialData.mimetype);
|
||
|
|
||
|
const insertedFile = await files.findOne({_id: file._id});
|
||
|
|
||
|
expect(insertedFile._id).to.equal(file._id);
|
||
|
expect(insertedFile.name).to.equal(file.name);
|
||
|
expect(insertedFile.filename).to.equal(file.filename);
|
||
|
expect(insertedFile.path).to.equal(file.path);
|
||
|
expect(insertedFile.size).to.equal(file.size);
|
||
|
expect(insertedFile.mimetype).to.equal(file.mimetype);
|
||
|
|
||
|
const updateData = {
|
||
|
_id: 12345,
|
||
|
name: 'updated filename',
|
||
|
filename: 'updated randomname',
|
||
|
path: '/uploads/updated randomname',
|
||
|
size: 2048,
|
||
|
mimetype: 'image/jpeg'
|
||
|
};
|
||
|
|
||
|
file.data = updateData;
|
||
|
await file.save();
|
||
|
|
||
|
expect(file._id).to.equal(insertedFile._id);
|
||
|
|
||
|
const updatedFile = await files.findOne({_id: file._id});
|
||
|
|
||
|
expect(updatedFile._id).to.equal(savedFile._id);
|
||
|
expect(updatedFile.name).to.equal(updateData.name);
|
||
|
expect(updatedFile.filename).to.equal(updateData.filename);
|
||
|
expect(updatedFile.path).to.equal(updateData.path);
|
||
|
expect(updatedFile.size).to.equal(updateData.size);
|
||
|
expect(updatedFile.mimetype).to.equal(updateData.mimetype);
|
||
|
|
||
|
await file.destroy();
|
||
|
|
||
|
expect(file._id).to.be.undefined;
|
||
|
|
||
|
const removedFile = await files.findOne({_id: updatedFile._id});
|
||
|
|
||
|
expect(removedFile).to.be.null;
|
||
|
});
|
||
|
|
||
|
it('Static get method', async () => {
|
||
|
const initialData = {
|
||
|
name: 'filename',
|
||
|
filename: 'randomname',
|
||
|
path: '/uploads/randomname',
|
||
|
size: 1024,
|
||
|
mimetype: 'image/png'
|
||
|
};
|
||
|
|
||
|
const file = new File(initialData);
|
||
|
|
||
|
const savedFile = await file.save();
|
||
|
|
||
|
const foundFile = await File.get(savedFile._id);
|
||
|
|
||
|
const {data} = foundFile;
|
||
|
|
||
|
expect(data._id).to.equal(savedFile._id);
|
||
|
expect(data.name).to.equal(savedFile.name);
|
||
|
expect(data.filename).to.equal(savedFile.filename);
|
||
|
expect(data.path).to.equal(savedFile.path);
|
||
|
expect(data.size).to.equal(savedFile.size);
|
||
|
expect(data.mimetype).to.equal(savedFile.mimetype);
|
||
|
|
||
|
await file.destroy();
|
||
|
});
|
||
|
|
||
|
it('Static getByFilename method', async () => {
|
||
|
const initialData = {
|
||
|
name: 'filename',
|
||
|
filename: 'randomname',
|
||
|
path: '/uploads/randomname',
|
||
|
size: 1024,
|
||
|
mimetype: 'image/png'
|
||
|
};
|
||
|
|
||
|
const file = new File(initialData);
|
||
|
|
||
|
const savedFile = await file.save();
|
||
|
|
||
|
const foundFile = await File.getByFilename(savedFile.filename);
|
||
|
|
||
|
const {data} = foundFile;
|
||
|
|
||
|
expect(data._id).to.equal(savedFile._id);
|
||
|
expect(data.name).to.equal(savedFile.name);
|
||
|
expect(data.filename).to.equal(savedFile.filename);
|
||
|
expect(data.path).to.equal(savedFile.path);
|
||
|
expect(data.size).to.equal(savedFile.size);
|
||
|
expect(data.mimetype).to.equal(savedFile.mimetype);
|
||
|
|
||
|
await file.destroy();
|
||
|
});
|
||
|
|
||
|
it('Static getAll method', async () => {
|
||
|
const filesToSave = [
|
||
|
new File({
|
||
|
name: 'filename1',
|
||
|
filename: 'randomname1',
|
||
|
path: '/uploads/randomname1',
|
||
|
size: 1024,
|
||
|
mimetype: 'image/png'
|
||
|
}),
|
||
|
new File({
|
||
|
name: 'filename2',
|
||
|
filename: 'randomname2',
|
||
|
path: '/uploads/randomname2',
|
||
|
size: 2048,
|
||
|
mimetype: 'image/jpeg'
|
||
|
}),
|
||
|
];
|
||
|
|
||
|
const savedFiles = await Promise.all(filesToSave.map(file => file.save()));
|
||
|
|
||
|
const foundFiles = await File.getAll({_id: {$in: savedFiles.map(file => file._id)}});
|
||
|
|
||
|
expect(foundFiles.length).to.equal(2);
|
||
|
|
||
|
foundFiles.forEach((file, i) => {
|
||
|
expect(file.name).to.equal(filesToSave[i].name);
|
||
|
expect(file.filename).to.equal(filesToSave[i].filename);
|
||
|
expect(file.path).to.equal(filesToSave[i].path);
|
||
|
expect(file.size).to.equal(filesToSave[i].size);
|
||
|
expect(file.mimetype).to.equal(filesToSave[i].mimetype);
|
||
|
});
|
||
|
});
|
||
|
});
|