Skip to content

Commit 892753c

Browse files
google-genai-botcopybara-github
authored andcommitted
ADK changes
PiperOrigin-RevId: 815624156
1 parent bd8b98e commit 892753c

File tree

5 files changed

+106
-88
lines changed

5 files changed

+106
-88
lines changed

src/app/core/services/agent.service.spec.ts

Lines changed: 76 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -141,50 +141,53 @@ describe('AgentService', () => {
141141
});
142142
});
143143

144-
it('should emit LlmResponses received from fetch', (done) => {
145-
const fakeResponse1 = createFakeLlmResponse();
146-
const fakeResponse2 = createFakeLlmResponse({
147-
content: {role: 'model', parts: [{text: 'fake response 2'}]},
148-
});
149-
const mockBody = new ReadableStream({
150-
start(controller) {
151-
const encoder = new TextEncoder();
152-
controller.enqueue(
153-
encoder.encode(`data: ${JSON.stringify(fakeResponse1)}\n`),
154-
);
155-
controller.enqueue(
156-
encoder.encode(`data: ${JSON.stringify(fakeResponse2)}\n`),
157-
);
158-
controller.close();
159-
},
160-
});
161-
spyOn(window, 'fetch').and.resolveTo(new Response(mockBody));
162-
const results: LlmResponse[] = [];
163-
service.runSse(RUN_SSE_PAYLOAD).subscribe({
164-
next: (data) => {
165-
results.push(data);
166-
},
167-
complete: () => {
168-
expect(results).toEqual([fakeResponse1, fakeResponse2]);
169-
done();
170-
},
171-
});
172-
});
144+
it(
145+
'should emit LlmResponses received from fetch', (done) => {
146+
const fakeResponse1 = createFakeLlmResponse();
147+
const fakeResponse2 = createFakeLlmResponse({
148+
content: {role: 'model', parts: [{text: 'fake response 2'}]},
149+
});
150+
const mockBody = new ReadableStream({
151+
start(controller) {
152+
const encoder = new TextEncoder();
153+
controller.enqueue(
154+
encoder.encode(`data: ${JSON.stringify(fakeResponse1)}\n`),
155+
);
156+
controller.enqueue(
157+
encoder.encode(`data: ${JSON.stringify(fakeResponse2)}\n`),
158+
);
159+
controller.close();
160+
},
161+
});
162+
spyOn(window, 'fetch').and.resolveTo(new Response(mockBody));
163+
const results: LlmResponse[] = [];
164+
service.runSse(RUN_SSE_PAYLOAD).subscribe({
165+
next: (data) => {
166+
results.push(data);
167+
},
168+
complete: () => {
169+
expect(results).toEqual([fakeResponse1, fakeResponse2]);
170+
done();
171+
},
172+
});
173+
});
174+
175+
it(
176+
'should set loading state to false when fetch is done', (done) => {
177+
const mockBody = new ReadableStream({
178+
start(controller) {
179+
controller.close();
180+
},
181+
});
182+
spyOn(window, 'fetch').and.resolveTo(new Response(mockBody));
183+
service.runSse(RUN_SSE_PAYLOAD).subscribe({
184+
complete: () => {
185+
expect(service.getLoadingState().value).toBeFalse();
186+
done();
187+
},
188+
});
189+
});
173190

174-
it('should set loading state to false when fetch is done', (done) => {
175-
const mockBody = new ReadableStream({
176-
start(controller) {
177-
controller.close();
178-
},
179-
});
180-
spyOn(window, 'fetch').and.resolveTo(new Response(mockBody));
181-
service.runSse(RUN_SSE_PAYLOAD).subscribe({
182-
complete: () => {
183-
expect(service.getLoadingState().value).toBeFalse();
184-
done();
185-
},
186-
});
187-
});
188191

189192
it('should emit error if fetch fails', (done) => {
190193
spyOn(window, 'fetch').and.rejectWith(new Error('Fetch failed'));
@@ -196,32 +199,35 @@ describe('AgentService', () => {
196199
});
197200
});
198201

199-
it('should handle incomplete JSON chunks', (done) => {
200-
const fakeResponse = createFakeLlmResponse();
201-
const fakeResponseJson = JSON.stringify(fakeResponse);
202-
const mid = Math.floor(fakeResponseJson.length / 2);
203-
const chunk1 = fakeResponseJson.substring(0, mid);
204-
const chunk2 = fakeResponseJson.substring(mid);
205-
206-
const mockBody = new ReadableStream({
207-
start(controller) {
208-
const encoder = new TextEncoder();
209-
controller.enqueue(encoder.encode(`data: ${chunk1}`));
210-
controller.enqueue(encoder.encode(`${chunk2}\n`));
211-
controller.close();
212-
},
213-
});
214-
spyOn(window, 'fetch').and.resolveTo(new Response(mockBody));
215-
const results: LlmResponse[] = [];
216-
service.runSse(RUN_SSE_PAYLOAD).subscribe({
217-
next: (data) => {
218-
results.push(data);
219-
},
220-
complete: () => {
221-
expect(results).toEqual([fakeResponse]);
222-
done();
223-
},
224-
});
225-
});
202+
// BEGIN-EXTERNAL
203+
// it('should handle incomplete JSON chunks', (done) => {
204+
// const fakeResponse = createFakeLlmResponse();
205+
// const fakeResponseJson = JSON.stringify(fakeResponse);
206+
// const mid = Math.floor(fakeResponseJson.length / 2);
207+
// const chunk1 = fakeResponseJson.substring(0, mid);
208+
// const chunk2 = fakeResponseJson.substring(mid);
209+
210+
// const mockBody = new ReadableStream({
211+
// start(controller) {
212+
// const encoder = new TextEncoder();
213+
// controller.enqueue(encoder.encode(`data: ${chunk1}`));
214+
// controller.enqueue(encoder.encode(`${chunk2}\n`));
215+
// controller.close();
216+
// },
217+
// });
218+
// spyOn(window, 'fetch').and.resolveTo(new Response(mockBody));
219+
// const results: LlmResponse[] = [];
220+
// service.runSse(RUN_SSE_PAYLOAD).subscribe({
221+
// next: (data) => {
222+
// results.push(data);
223+
// },
224+
// complete: () => {
225+
// expect(results).toEqual([fakeResponse]);
226+
// done();
227+
// },
228+
// });
229+
// });
230+
// END-EXTERNAL
231+
226232
});
227233
});

src/app/core/services/audio.service.spec.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
import {fakeAsync, TestBed, tick} from '@angular/core/testing';
18+
import {TestBed} from '@angular/core/testing';
1919

2020
import {AUDIO_WORKLET_MODULE_PATH, AudioService} from './audio.service';
2121
import {MockWebSocketService} from './testing/mock-websocket.service';
@@ -61,7 +61,9 @@ describe('AudioService', () => {
6161
if (!navigator.mediaDevices) {
6262
(navigator as any).mediaDevices = {};
6363
}
64-
spyOn(navigator.mediaDevices, 'getUserMedia').and.resolveTo(mockStream);
64+
navigator.mediaDevices.getUserMedia =
65+
jasmine.createSpy('getUserMedia')
66+
.and.returnValue(Promise.resolve(mockStream));
6567
spyOn(window, 'AudioContext').and.returnValue(mockAudioContext);
6668
spyOn(window, 'AudioWorkletNode').and.returnValue(mockWorkletNode);
6769
mockAudioContext.audioWorklet.addModule.and.resolveTo();

src/app/core/services/download.service.spec.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ describe('DownloadService', () => {
4444
});
4545
service = TestBed.inject(DownloadService);
4646
safeValuesService = TestBed.inject(
47-
SAFE_VALUES_SERVICE,
48-
) as MockSafeValuesService;
47+
SAFE_VALUES_SERVICE,
48+
) as MockSafeValuesService;
4949

5050
mockAnchor = jasmine.createSpyObj('HTMLAnchorElement', ['click']);
5151
createElementSpy = spyOn(document, 'createElement')
@@ -71,10 +71,11 @@ describe('DownloadService', () => {
7171

7272
it('should call safeValuesService.setAnchorHref', () => {
7373
service.downloadBase64Data(base64Data, mimeType, FILE_NAME_PNG);
74-
expect(safeValuesService.setAnchorHref).toHaveBeenCalledWith(
75-
mockAnchor,
76-
base64Data,
77-
);
74+
expect(safeValuesService.setAnchorHref)
75+
.toHaveBeenCalledWith(
76+
mockAnchor,
77+
base64Data,
78+
);
7879
});
7980

8081
it('should set download attribute to filename', () => {
@@ -129,16 +130,18 @@ describe('DownloadService', () => {
129130
service.downloadObjectAsJson(data, FILE_NAME_JSON);
130131
expect(safeValuesService.createObjectUrl).toHaveBeenCalled();
131132
expect(
132-
safeValuesService.createObjectUrl.calls.mostRecent().args[0].type,
133-
).toBe(OCTET_STREAM);
133+
safeValuesService.createObjectUrl.calls.mostRecent().args[0].type,
134+
)
135+
.toBe(OCTET_STREAM);
134136
});
135137

136138
it('should call safeValuesService.setAnchorHref with object url', () => {
137139
service.downloadObjectAsJson(data, FILE_NAME_JSON);
138-
expect(safeValuesService.setAnchorHref).toHaveBeenCalledWith(
139-
mockAnchor,
140-
blobUrl,
141-
);
140+
expect(safeValuesService.setAnchorHref)
141+
.toHaveBeenCalledWith(
142+
mockAnchor,
143+
blobUrl,
144+
);
142145
});
143146

144147
it('should create an anchor element', () => {

src/app/core/services/stream-chat.service.spec.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@
1616
*/
1717

1818
import {ElementRef} from '@angular/core';
19-
import {fakeAsync, TestBed, tick} from '@angular/core/testing';
19+
import {TestBed} from '@angular/core/testing';
20+
21+
import {URLUtil} from '../../../utils/url-util';
22+
import {fakeAsync,
23+
tick} from '../../testing/utils';
2024

2125
import {AUDIO_SERVICE} from './audio.service';
2226
import {StreamChatService} from './stream-chat.service';
@@ -35,6 +39,7 @@ describe('StreamChatService', () => {
3539

3640

3741
beforeEach(() => {
42+
spyOn(URLUtil, 'getWSServerUrl').and.returnValue('localhost:9876');
3843
mockWebSocketService = new MockWebSocketService();
3944
mockAudioService = new MockAudioService();
4045
mockVideoService = new MockVideoService();

src/app/core/services/video.service.spec.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
* limitations under the License.
1616
*/
1717

18-
import {ElementRef, Renderer2, RendererFactory2,} from '@angular/core';
19-
import {fakeAsync, flush, TestBed, tick} from '@angular/core/testing';
18+
import {ElementRef, Renderer2, RendererFactory2} from '@angular/core';
19+
import {TestBed} from '@angular/core/testing';
2020

2121
import {MockWebSocketService} from './testing/mock-websocket.service';
2222
import {VideoService} from './video.service';
@@ -84,7 +84,9 @@ describe('VideoService', () => {
8484
if (!navigator.mediaDevices) {
8585
(navigator as any).mediaDevices = {};
8686
}
87-
spyOn(navigator.mediaDevices, 'getUserMedia').and.resolveTo(mockStream);
87+
navigator.mediaDevices.getUserMedia =
88+
jasmine.createSpy('getUserMedia')
89+
.and.returnValue(Promise.resolve(mockStream));
8890
spyOn(window, 'MediaRecorder').and.returnValue(mockMediaRecorder);
8991

9092
container = new ElementRef(document.createElement('div'));

0 commit comments

Comments
 (0)