UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

93 lines (92 loc) 3.62 kB
/** * DevExtreme (esm/__internal/core/ai_integration/commands/summarize.test.js) * Version: 25.1.3 * Build date: Wed Jun 25 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import { beforeEach, describe, expect, it, jest } from "@jest/globals"; import { SummarizeCommand } from "../../../core/ai_integration/commands"; import { PromptManager } from "../../../core/ai_integration/core/prompt_manager"; import { RequestManager } from "../../../core/ai_integration/core/request_manager"; import { Provider } from "../../../core/ai_integration/test_utils/provider_mock"; describe("SummarizeCommand", (() => { const params = { text: "text to summarizing" }; let promptManager = null; let requestManager = null; let command = null; beforeEach((() => { const provider = new Provider; requestManager = new RequestManager(provider); promptManager = new PromptManager; command = new SummarizeCommand(promptManager, requestManager) })); describe("getTemplateName", (() => { it("should return the name of the corresponding template", (() => { const templateName = command.getTemplateName(); expect(templateName).toBe("summarize") })) })); describe("buildPromptData", (() => { it("should form PromptData with empty object", (() => { const promptData = command.buildPromptData(params); expect(promptData).toEqual({ user: { text: params.text } }) })) })); describe("parseResult", (() => { it("should return the string without changes", (() => { const result = command.parseResult("Summarized text"); expect(result).toBe("Summarized text") })) })); describe("execute", (() => { const callbacks = { onComplete: () => {} }; it("promptManager.buildPrompt should be called with parameters containing the passed values", (() => { const buildPromptSpy = jest.spyOn(promptManager, "buildPrompt"); command.execute(params, callbacks); expect(buildPromptSpy).toHaveBeenCalledTimes(1); expect(promptManager.buildPrompt).toHaveBeenCalledWith("summarize", { user: { text: params.text } }) })); it("promptManager.buildPrompt should should return prompt with passed values", (() => { jest.spyOn(promptManager, "buildPrompt"); command.execute(params, callbacks); expect(promptManager.buildPrompt).toHaveReturnedWith({ system: "First, identify the key points of the provided text. Then, generate an abstractive summary by paraphrasing these points, ensuring the summary captures the core ideas and is approximately 20% of the text's length. Return answer with no markdown formatting.", user: params.text }) })); it("should call provider.sendRequest once and return the abort function", (() => { const sendRequestSpy = jest.spyOn(requestManager, "sendRequest"); const abort = command.execute(params, callbacks); expect(typeof abort).toBe("function"); expect(sendRequestSpy).toHaveBeenCalledTimes(1) })) })) }));