1- import { beforeEach , describe , expect , it , vi } from " vitest" ;
2- import type { EngineState } from " ../../src/state" ;
1+ import { beforeEach , describe , expect , it , vi } from ' vitest' ;
2+ import type { EngineState } from ' ../../src/state' ;
33
44const completionsMock = vi . fn ( ) ;
55
6- vi . mock ( " openai" , ( ) => {
6+ vi . mock ( ' openai' , ( ) => {
77 return {
88 default : vi . fn ( ) . mockImplementation ( ( ) => ( {
99 chat : {
@@ -15,55 +15,49 @@ vi.mock("openai", () => {
1515 } ;
1616} ) ;
1717
18- const { OpenAIFeedbackClient } = await import ( " ../../src/config/llm" ) ;
18+ const { OpenAIFeedbackClient } = await import ( ' ../../src/config/llm' ) ;
1919
20- describe ( " OpenAIFeedbackClient" , ( ) => {
20+ describe ( ' OpenAIFeedbackClient' , ( ) => {
2121 const baseState : EngineState = {
22- sessionId : " llm-test" ,
23- uploadUrl : " https://example.com/file.wav" ,
22+ sessionId : ' llm-test' ,
23+ uploadUrl : ' https://example.com/file.wav' ,
2424 } ;
2525
2626 beforeEach ( ( ) => {
2727 vi . clearAllMocks ( ) ;
2828 delete process . env . OPENAI_API_KEY ;
2929 } ) ;
3030
31- it ( " throws when API key missing" , ( ) => {
31+ it ( ' throws when API key missing' , ( ) => {
3232 expect ( ( ) => new OpenAIFeedbackClient ( ) ) . toThrow ( / O P E N A I _ A P I _ K E Y / ) ;
3333 } ) ;
3434
35- it ( " calls OpenAI chat completions and returns parsed payload" , async ( ) => {
36- process . env . OPENAI_API_KEY = " test-key" ;
35+ it ( ' calls OpenAI chat completions and returns parsed payload' , async ( ) => {
36+ process . env . OPENAI_API_KEY = ' test-key' ;
3737
3838 completionsMock . mockResolvedValueOnce ( {
3939 choices : [
4040 {
4141 message : {
4242 content : JSON . stringify ( {
43- feedbackText : "Solid balance." ,
44- suggestions : [
45- "Ease 2kHz" ,
46- "Add saturation" ,
47- "Use multiband compression" ,
48- ] ,
43+ feedbackText : 'Solid balance.' ,
44+ suggestions : [ 'Ease 2kHz' , 'Add saturation' , 'Use multiband compression' ] ,
4945 } ) ,
5046 } ,
5147 } ,
5248 ] ,
5349 } ) ;
5450
55- const client = new OpenAIFeedbackClient ( { model : " gpt-test" } ) ;
51+ const client = new OpenAIFeedbackClient ( { model : ' gpt-test' } ) ;
5652 const response = await client . generateFeedback ( baseState ) ;
5753
58- expect ( response . feedbackText ) . toContain ( " Solid" ) ;
54+ expect ( response . feedbackText ) . toContain ( ' Solid' ) ;
5955 expect ( response . suggestions ) . toHaveLength ( 3 ) ;
60- expect ( completionsMock ) . toHaveBeenCalledWith (
61- expect . objectContaining ( { model : "gpt-test" } ) ,
62- ) ;
56+ expect ( completionsMock ) . toHaveBeenCalledWith ( expect . objectContaining ( { model : 'gpt-test' } ) ) ;
6357 } ) ;
6458
65- it ( " throws when OpenAI returns empty content" , async ( ) => {
66- process . env . OPENAI_API_KEY = " test-key" ;
59+ it ( ' throws when OpenAI returns empty content' , async ( ) => {
60+ process . env . OPENAI_API_KEY = ' test-key' ;
6761
6862 completionsMock . mockResolvedValueOnce ( {
6963 choices : [
@@ -79,14 +73,14 @@ describe("OpenAIFeedbackClient", () => {
7973 await expect ( client . generateFeedback ( baseState ) ) . rejects . toThrow ( / e m p t y r e s p o n s e / ) ;
8074 } ) ;
8175
82- it ( " throws when OpenAI returns invalid JSON" , async ( ) => {
83- process . env . OPENAI_API_KEY = " test-key" ;
76+ it ( ' throws when OpenAI returns invalid JSON' , async ( ) => {
77+ process . env . OPENAI_API_KEY = ' test-key' ;
8478
8579 completionsMock . mockResolvedValueOnce ( {
8680 choices : [
8781 {
8882 message : {
89- content : " not-json" ,
83+ content : ' not-json' ,
9084 } ,
9185 } ,
9286 ] ,
@@ -96,8 +90,8 @@ describe("OpenAIFeedbackClient", () => {
9690 await expect ( client . generateFeedback ( baseState ) ) . rejects . toThrow ( / F a i l e d t o p a r s e / ) ;
9791 } ) ;
9892
99- it ( " throws when OpenAI omits content" , async ( ) => {
100- process . env . OPENAI_API_KEY = " test-key" ;
93+ it ( ' throws when OpenAI omits content' , async ( ) => {
94+ process . env . OPENAI_API_KEY = ' test-key' ;
10195
10296 completionsMock . mockResolvedValueOnce ( {
10397 choices : [
0 commit comments