40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import { expect, tap } from '@push.rocks/tapbundle';
							 | 
						||
| 
								 | 
							
								import * as qenv from '@push.rocks/qenv';
							 | 
						||
| 
								 | 
							
								import * as smartfile from '@push.rocks/smartfile';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const testQenv = new qenv.Qenv('./', './.nogit/');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import * as smartai from '../ts/index.js';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let testSmartai: smartai.SmartAi;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								tap.test('OpenAI Audio: should create a smartai instance with OpenAI provider', async () => {
							 | 
						||
| 
								 | 
							
								  testSmartai = new smartai.SmartAi({
							 | 
						||
| 
								 | 
							
								    openaiToken: await testQenv.getEnvVarOnDemand('OPENAI_TOKEN'),
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								  await testSmartai.start();
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								tap.test('OpenAI Audio: should create audio response', async () => {
							 | 
						||
| 
								 | 
							
								  // Call the audio method with a sample message.
							 | 
						||
| 
								 | 
							
								  const audioStream = await testSmartai.openaiProvider.audio({
							 | 
						||
| 
								 | 
							
								    message: 'This is a test of audio generation.',
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								  // Read all chunks from the stream.
							 | 
						||
| 
								 | 
							
								  const chunks: Uint8Array[] = [];
							 | 
						||
| 
								 | 
							
								  for await (const chunk of audioStream) {
							 | 
						||
| 
								 | 
							
								    chunks.push(chunk as Uint8Array);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  const audioBuffer = Buffer.concat(chunks);
							 | 
						||
| 
								 | 
							
								  await smartfile.fs.toFs(audioBuffer, './.nogit/testoutput.mp3');
							 | 
						||
| 
								 | 
							
								  console.log(`Audio Buffer length: ${audioBuffer.length}`);
							 | 
						||
| 
								 | 
							
								  // Assert that the resulting buffer is not empty.
							 | 
						||
| 
								 | 
							
								  expect(audioBuffer.length).toBeGreaterThan(0);
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								tap.test('OpenAI Audio: should stop the smartai instance', async () => {
							 | 
						||
| 
								 | 
							
								  await testSmartai.stop();
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export default tap.start();
							 |