UNPKG

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
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) }) });