fix(core): update
This commit is contained in:
		| @@ -0,0 +1,67 @@ | ||||
| import * as path from 'path'; | ||||
| import { expect, tap } from '@push.rocks/tapbundle'; | ||||
| import * as smartfile from '../ts/index.js'; // adjust the import path as needed | ||||
|  | ||||
| // Test assets path | ||||
| const testAssetsPath = './test/testassets/'; | ||||
|  | ||||
| // --------------------------- | ||||
| // StreamFile tests | ||||
| // --------------------------- | ||||
|  | ||||
| tap.test('StreamFile.fromPath should create a StreamFile from a file path', async () => { | ||||
|   const streamFile = await smartfile.StreamFile.fromPath(path.join(testAssetsPath, 'mytest.json')); | ||||
|   expect(streamFile).toBeInstanceOf(smartfile.StreamFile); | ||||
|   const contentBuffer = await streamFile.getContentAsBuffer(); | ||||
|   expect(contentBuffer).toBeInstanceOf(Buffer); | ||||
| }); | ||||
|  | ||||
| tap.test('StreamFile.fromUrl should create a StreamFile from a URL', async () => { | ||||
|   const streamFile = await smartfile.StreamFile.fromUrl('http://example.com/somefile.json'); | ||||
|   expect(streamFile).toBeInstanceOf(smartfile.StreamFile); | ||||
| }); | ||||
|  | ||||
| tap.test('StreamFile.fromBuffer should create a StreamFile from a Buffer', async () => { | ||||
|   const buffer = Buffer.from('Some content'); | ||||
|   const streamFile = smartfile.StreamFile.fromBuffer(buffer, 'bufferfile.txt'); | ||||
|   expect(streamFile).toBeInstanceOf(smartfile.StreamFile); | ||||
| }); | ||||
|  | ||||
| tap.test('StreamFile should write the stream to disk', async () => { | ||||
|   const streamFile = await smartfile.StreamFile.fromPath(path.join(testAssetsPath, 'mytest.json')); | ||||
|   await streamFile.writeToDisk(path.join(testAssetsPath, 'temp', 'mytest.json')); | ||||
|   // Verify the file was written | ||||
|   expect( | ||||
|     // We'll use the fileExists method from your smartfile library | ||||
|     // Replace with the actual method you use to check file existence | ||||
|     await smartfile.fs.fileExists(path.join(testAssetsPath, 'temp', 'mytest.json')) | ||||
|   ).toBeTrue(); | ||||
| }); | ||||
|  | ||||
| tap.test('StreamFile should write to a directory', async () => { | ||||
|   const streamFile = await smartfile.StreamFile.fromPath(path.join(testAssetsPath, 'mytest.json')); | ||||
|   await streamFile.writeToDir(path.join(testAssetsPath, 'temp')); | ||||
|   // Verify the file was written | ||||
|   expect( | ||||
|     await smartfile.fs.fileExists(path.join(testAssetsPath, 'temp', 'mytest.json')) | ||||
|   ).toBeTrue(); | ||||
| }); | ||||
|  | ||||
| tap.test('StreamFile should return content as a buffer', async () => { | ||||
|   const streamFile = await smartfile.StreamFile.fromPath(path.join(testAssetsPath, 'mytest.json')); | ||||
|   const contentBuffer = await streamFile.getContentAsBuffer(); | ||||
|   expect(contentBuffer).toBeInstanceOf(Buffer); | ||||
|   // Further checks on the content can be added here if necessary | ||||
| }); | ||||
|  | ||||
| tap.test('StreamFile should return content as a string', async () => { | ||||
|   const streamFile = await smartfile.StreamFile.fromPath(path.join(testAssetsPath, 'mytest.json')); | ||||
|   const contentString = await streamFile.getContentAsString(); | ||||
|   expect(typeof contentString).toBeTypeofString(); | ||||
|   // Verify the content matches what's expected | ||||
|   // This assumes the file contains a JSON object with a key 'key1' with value 'this works' | ||||
|   expect(JSON.parse(contentString).key1).toEqual('this works'); | ||||
| }); | ||||
|  | ||||
| // Start the test sequence | ||||
| tap.start(); | ||||
|   | ||||
							
								
								
									
										8
									
								
								test/testassets/temp/mytest.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								test/testassets/temp/mytest.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| { | ||||
|   "key1": "this works", | ||||
|   "key2": "this works too", | ||||
|   "key3": { | ||||
|     "nestedkey1": "hello" | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										8
									
								
								test/testassets/temp/test/testassets/mytest.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								test/testassets/temp/test/testassets/mytest.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| { | ||||
|   "key1": "this works", | ||||
|   "key2": "this works too", | ||||
|   "key3": { | ||||
|     "nestedkey1": "hello" | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -3,6 +3,6 @@ | ||||
|  */ | ||||
| export const commitinfo = { | ||||
|   name: '@push.rocks/smartfile', | ||||
|   version: '10.0.37', | ||||
|   version: '10.0.38', | ||||
|   description: 'offers smart ways to work with files in nodejs' | ||||
| } | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| import * as plugins from './smartfile.plugins.js'; | ||||
| import * as fsStream from './fsstream.js'; | ||||
| import * as smartfileFs from './fs.js'; | ||||
| import * as smartfileFsStream from './fsstream.js'; | ||||
| import { Readable } from 'stream'; | ||||
|  | ||||
| type StreamSource = () => Promise<Readable>; | ||||
| @@ -21,7 +22,7 @@ export class StreamFile { | ||||
|   // STATIC | ||||
|  | ||||
|   public static async fromPath(filePath: string): Promise<StreamFile> { | ||||
|     const streamSource = () => Promise.resolve(fsStream.createReadStream(filePath)); | ||||
|     const streamSource = () => Promise.resolve(smartfileFsStream.createReadStream(filePath)); | ||||
|     return new StreamFile(streamSource, filePath); | ||||
|   } | ||||
|  | ||||
| @@ -55,7 +56,7 @@ export class StreamFile { | ||||
|    */ | ||||
|   public async writeToDisk(filePathArg: string): Promise<void> { | ||||
|     const readStream = await this.createReadStream(); | ||||
|     const writeStream = fsStream.createWriteStream(filePathArg); | ||||
|     const writeStream = smartfileFsStream.createWriteStream(filePathArg); | ||||
|  | ||||
|     return new Promise((resolve, reject) => { | ||||
|       readStream.pipe(writeStream); | ||||
| @@ -67,6 +68,7 @@ export class StreamFile { | ||||
|  | ||||
|   public async writeToDir(dirPathArg: string) { | ||||
|     const filePath = plugins.path.join(dirPathArg, this.relativeFilePath); | ||||
|     await smartfileFs.ensureDir(plugins.path.parse(filePath).dir); | ||||
|     return this.writeToDisk(filePath); | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -5,6 +5,7 @@ import * as interpreterMod from './interpreter.js'; | ||||
| import * as memoryMod from './memory.js'; | ||||
|  | ||||
| export * from './classes.smartfile.js'; | ||||
| export * from './classes.streamfile.js'; | ||||
| export * from './classes.virtualdirectory.js'; | ||||
|  | ||||
| export const fs = fsMod; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user