als-path-tree
Version:
A Node.js library for managing a virtual file system structure, offering functionalities for file and directory operations with a shared storage system.
68 lines (57 loc) • 2.59 kB
JavaScript
const { describe, it, beforeEach } = require('node:test');
const assert = require('node:assert');
const File = require('../lib/file');
const Directory = require('../lib/directory');
describe('File', () => {
let rootDir;
beforeEach(() => {
rootDir = new Directory('root');
});
it('creates a file with correct metadata', () => {
const file = rootDir.addFile('file.txt', { size: 512 }, 'test content');
assert.strictEqual(file.meta.size, 512);
assert.strictEqual(file.content, 'test content');
});
it('saves new content to a file', () => {
const file = rootDir.addFile('file.txt', { size: 512 }, 'test content');
file.save('updated content');
assert.strictEqual(file.content, 'updated content');
assert.strictEqual(file.meta.size, Buffer.byteLength('updated content'));
});
it('deletes a file from its parent directory', () => {
const file = rootDir.addFile('file.txt', { size: 512 }, 'test content');
file.delete();
assert.strictEqual(rootDir.files['file.txt'], undefined);
});
it('copies a file to another location', () => {
const file = rootDir.addFile('file.txt', { size: 512 }, 'test content');
file.copyTo('copiedFile.txt');
const copiedFile = rootDir.getItem('copiedFile.txt');
assert.strictEqual(copiedFile.content, 'test content');
});
it('moves a file to same location (rename with move)', () => {
const file = rootDir.addFile('file.txt', { size: 512 }, 'test content');
file.moveTo('movedFile.txt')
assert.strictEqual(rootDir.files['file.txt'], undefined);
assert.strictEqual(rootDir.getItem('movedFile.txt'), file);
});
it('parses JSON content correctly', () => {
const jsonData = JSON.stringify({ key: 'value' });
const file = rootDir.addFile('file.json', {}, jsonData);
assert.deepStrictEqual(file.json, { key: 'value' });
});
it('throws an error for invalid JSON content', () => {
const file = rootDir.addFile('file.json', {}, 'invalid json');
assert.throws(() => file.json, Error);
});
it('Saving file with no string or buffer', () => {
const file = rootDir.addFile('test.txt', {}, 'test');
assert(file.content === 'test')
file.save(undefined)
assert(file.content === null)
file.save(null)
assert(file.content === null)
file.save({})
assert(file.content === null)
})
});