77 lines
2.0 KiB
TypeScript
77 lines
2.0 KiB
TypeScript
import { parseFrontmatter, loadCustomCommands } from '../src/services/customCommands'
|
|
import { describe, expect, test } from '@jest/globals'
|
|
|
|
describe('Custom Commands', () => {
|
|
describe('parseFrontmatter', () => {
|
|
test('should parse YAML frontmatter correctly', () => {
|
|
const content = `---
|
|
name: test-command
|
|
description: A test command
|
|
aliases: [tc, test]
|
|
enabled: true
|
|
hidden: false
|
|
---
|
|
|
|
This is the command content.`
|
|
|
|
const result = parseFrontmatter(content)
|
|
|
|
expect(result.frontmatter.name).toBe('test-command')
|
|
expect(result.frontmatter.description).toBe('A test command')
|
|
expect(result.frontmatter.aliases).toEqual(['tc', 'test'])
|
|
expect(result.frontmatter.enabled).toBe(true)
|
|
expect(result.frontmatter.hidden).toBe(false)
|
|
expect(result.content.trim()).toBe('This is the command content.')
|
|
})
|
|
|
|
test('should handle missing frontmatter', () => {
|
|
const content = 'Just some content without frontmatter.'
|
|
const result = parseFrontmatter(content)
|
|
|
|
expect(result.frontmatter).toEqual({})
|
|
expect(result.content).toBe(content)
|
|
})
|
|
|
|
test('should handle multi-line arrays', () => {
|
|
const content = `---
|
|
name: multi-array
|
|
aliases:
|
|
- alias1
|
|
- alias2
|
|
- alias3
|
|
---
|
|
|
|
Content here.`
|
|
|
|
const result = parseFrontmatter(content)
|
|
expect(result.frontmatter.aliases).toEqual(['alias1', 'alias2', 'alias3'])
|
|
})
|
|
|
|
test('should handle inline arrays', () => {
|
|
const content = `---
|
|
name: inline-array
|
|
aliases: [a1, a2, a3]
|
|
argNames: ["env", "version"]
|
|
---
|
|
|
|
Content here.`
|
|
|
|
const result = parseFrontmatter(content)
|
|
expect(result.frontmatter.aliases).toEqual(['a1', 'a2', 'a3'])
|
|
expect(result.frontmatter.argNames).toEqual(['env', 'version'])
|
|
})
|
|
|
|
test('should handle boolean values', () => {
|
|
const content = `---
|
|
enabled: true
|
|
hidden: false
|
|
---
|
|
|
|
Content`
|
|
|
|
const result = parseFrontmatter(content)
|
|
expect(result.frontmatter.enabled).toBe(true)
|
|
expect(result.frontmatter.hidden).toBe(false)
|
|
})
|
|
})
|
|
}) |