mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 13:52:43 +08:00
54 lines
2.1 KiB
TypeScript
54 lines
2.1 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { calculateToastDuration } from "#/utils/toast-duration";
|
|
|
|
describe("calculateToastDuration", () => {
|
|
it("should return minimum duration for short messages", () => {
|
|
const shortMessage = "OK";
|
|
const duration = calculateToastDuration(shortMessage, 5000);
|
|
expect(duration).toBe(5000);
|
|
});
|
|
|
|
it("should return minimum duration for messages that calculate below minimum", () => {
|
|
const shortMessage = "Settings saved";
|
|
const duration = calculateToastDuration(shortMessage, 5000);
|
|
expect(duration).toBe(5000);
|
|
});
|
|
|
|
it("should calculate longer duration for long messages", () => {
|
|
const longMessage =
|
|
"Settings saved. For old conversations, you will need to stop and restart the conversation to see the changes.";
|
|
const duration = calculateToastDuration(longMessage, 5000);
|
|
expect(duration).toBeGreaterThan(5000);
|
|
expect(duration).toBeLessThanOrEqual(10000);
|
|
});
|
|
|
|
it("should respect maximum duration cap", () => {
|
|
const veryLongMessage = "A".repeat(10000); // Very long message
|
|
const duration = calculateToastDuration(veryLongMessage, 5000, 10000);
|
|
expect(duration).toBe(10000);
|
|
});
|
|
|
|
it("should use custom minimum and maximum durations", () => {
|
|
const message = "Test message";
|
|
const customMin = 3000;
|
|
const customMax = 8000;
|
|
const duration = calculateToastDuration(message, customMin, customMax);
|
|
expect(duration).toBeGreaterThanOrEqual(customMin);
|
|
expect(duration).toBeLessThanOrEqual(customMax);
|
|
});
|
|
|
|
it("should calculate duration based on reading speed", () => {
|
|
// Test with a message that should take exactly the calculated time
|
|
// At 200 WPM (1000 chars/min), 60 chars should take 3.6 seconds
|
|
// With 1.5x buffer, that's 5.4 seconds
|
|
const message = "This is a test message that contains exactly sixty chars.";
|
|
expect(message.length).toBe(57); // Close to 60 chars
|
|
|
|
const duration = calculateToastDuration(message, 0, 20000); // No min/max constraints
|
|
|
|
// Should be around 5.4 seconds (5400ms) for 57 characters
|
|
expect(duration).toBeGreaterThan(5000);
|
|
expect(duration).toBeLessThan(6000);
|
|
});
|
|
});
|