compare-timezones.prompt.spec.tsβ’3.31 kB
import { describe, it, expect, beforeEach } from 'vitest'
import { CompareTimezonesPrompt } from './compare-timezones.prompt'
describe('CompareTimezonesPrompt', () => {
let prompt: CompareTimezonesPrompt
beforeEach(() => {
prompt = new CompareTimezonesPrompt()
})
describe('execute', () => {
it('should return a prompt with description and messages', async () => {
const result = await prompt.execute({
timezone1: 'America/New_York',
timezone2: 'Europe/London',
})
expect(result).toHaveProperty('description')
expect(result).toHaveProperty('messages')
expect(result.messages).toBeInstanceOf(Array)
})
it('should have user and assistant messages', async () => {
const result = await prompt.execute({
timezone1: 'Asia/Tokyo',
timezone2: 'America/Los_Angeles',
})
expect(result.messages).toHaveLength(2)
expect(result.messages[0]).toHaveProperty('role', 'user')
expect(result.messages[1]).toHaveProperty('role', 'assistant')
})
it('should have text content in messages', async () => {
const result = await prompt.execute({
timezone1: 'Europe/Paris',
timezone2: 'Asia/Singapore',
})
expect(result.messages[0].content).toHaveProperty('type', 'text')
expect(result.messages[0].content).toHaveProperty('text')
expect(result.messages[1].content).toHaveProperty('type', 'text')
expect(result.messages[1].content).toHaveProperty('text')
})
it('should include both timezones in the description', async () => {
const timezone1 = 'America/Chicago'
const timezone2 = 'Europe/Berlin'
const result = await prompt.execute({ timezone1, timezone2 })
expect(result.description).toContain(timezone1)
expect(result.description).toContain(timezone2)
})
it('should include both timezones in user message', async () => {
const timezone1 = 'America/Denver'
const timezone2 = 'Asia/Dubai'
const result = await prompt.execute({ timezone1, timezone2 })
const userMessage = result.messages[0].content.text
expect(userMessage).toContain(timezone1)
expect(userMessage).toContain(timezone2)
})
it('should include both timezones in assistant message', async () => {
const timezone1 = 'America/Toronto'
const timezone2 = 'Australia/Sydney'
const result = await prompt.execute({ timezone1, timezone2 })
const assistantMessage = result.messages[1].content.text
expect(assistantMessage).toContain(timezone1)
expect(assistantMessage).toContain(timezone2)
})
it('should reference the get_timezone_info tool in assistant message', async () => {
const result = await prompt.execute({
timezone1: 'Europe/Madrid',
timezone2: 'America/Mexico_City',
})
const assistantMessage = result.messages[1].content.text
expect(assistantMessage).toContain('get_timezone_info')
})
it('should mention comparison in user message', async () => {
const result = await prompt.execute({
timezone1: 'Asia/Seoul',
timezone2: 'Europe/Rome',
})
const userMessage = result.messages[0].content.text.toLowerCase()
expect(userMessage).toContain('compare')
})
})
})