forked from CopilotKit/CopilotKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcopilot-chat-assistant-message.component.spec.ts
More file actions
75 lines (66 loc) · 2.12 KB
/
Copy pathcopilot-chat-assistant-message.component.spec.ts
File metadata and controls
75 lines (66 loc) · 2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import {
EnvironmentInjector,
Injectable,
runInInjectionContext,
} from "@angular/core";
import { TestBed } from "@angular/core/testing";
import { beforeEach, describe, expect, it, vi } from "vitest";
import type { AssistantMessage } from "../copilot-chat-assistant-message.types";
import { CopilotChatAssistantMessage } from "../copilot-chat-assistant-message";
import { CopilotChatViewHandlers } from "../copilot-chat-view-handlers";
@Injectable()
class ViewHandlersStub extends CopilotChatViewHandlers {
constructor() {
super();
this.hasAssistantThumbsUpHandler.set(true);
}
}
const assistantMessage: AssistantMessage = {
id: "assistant-1",
role: "assistant",
content: "Assistant message",
toolCalls: [
{
id: "call-1",
type: "function",
function: { name: "demo", arguments: "{}" },
} as any,
],
};
describe("CopilotChatAssistantMessage", () => {
let injector: EnvironmentInjector;
let component: CopilotChatAssistantMessage;
beforeEach(() => {
TestBed.resetTestingModule();
TestBed.configureTestingModule({
providers: [
{ provide: CopilotChatViewHandlers, useClass: ViewHandlersStub },
],
});
injector = TestBed.inject(EnvironmentInjector);
component = runInInjectionContext(
injector,
() => new CopilotChatAssistantMessage(),
);
(component as any).message = () => assistantMessage;
(component as any).messages = () => [assistantMessage];
(component as any).isLoading = () => false;
});
it("provides markdown renderer context", () => {
expect(component.markdownRendererContext().content).toBe(
"Assistant message",
);
});
it("exposes tool call context", () => {
const context = component.toolCallsViewContext();
expect(context.message).toBe(assistantMessage);
expect(context.messages).toEqual([assistantMessage]);
expect(context.isLoading).toBe(false);
});
it("emits thumbs up events", () => {
const thumbsUpSpy = vi.fn();
component.thumbsUp.subscribe(thumbsUpSpy);
component.handleThumbsUp();
expect(thumbsUpSpy).toHaveBeenCalledWith({ message: assistantMessage });
});
});