mirror of https://github.com/langgenius/dify.git
155 lines
5.0 KiB
TypeScript
155 lines
5.0 KiB
TypeScript
/**
|
|
* Test Template for Utility Functions
|
|
*
|
|
* Instructions:
|
|
* 1. Replace `utilityFunction` with your function name
|
|
* 2. Update import path
|
|
* 3. Use test.each for data-driven tests
|
|
*/
|
|
|
|
// import { utilityFunction } from './utility'
|
|
|
|
// ============================================================================
|
|
// Tests
|
|
// ============================================================================
|
|
|
|
describe('utilityFunction', () => {
|
|
// --------------------------------------------------------------------------
|
|
// Basic Functionality
|
|
// --------------------------------------------------------------------------
|
|
describe('Basic Functionality', () => {
|
|
it('should return expected result for valid input', () => {
|
|
// expect(utilityFunction('input')).toBe('expected-output')
|
|
})
|
|
|
|
it('should handle multiple arguments', () => {
|
|
// expect(utilityFunction('a', 'b', 'c')).toBe('abc')
|
|
})
|
|
})
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Data-Driven Tests
|
|
// --------------------------------------------------------------------------
|
|
describe('Input/Output Mapping', () => {
|
|
test.each([
|
|
// [input, expected]
|
|
['input1', 'output1'],
|
|
['input2', 'output2'],
|
|
['input3', 'output3'],
|
|
])('should return %s for input %s', (input, expected) => {
|
|
// expect(utilityFunction(input)).toBe(expected)
|
|
})
|
|
})
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Edge Cases
|
|
// --------------------------------------------------------------------------
|
|
describe('Edge Cases', () => {
|
|
it('should handle empty string', () => {
|
|
// expect(utilityFunction('')).toBe('')
|
|
})
|
|
|
|
it('should handle null', () => {
|
|
// expect(utilityFunction(null)).toBe(null)
|
|
// or
|
|
// expect(() => utilityFunction(null)).toThrow()
|
|
})
|
|
|
|
it('should handle undefined', () => {
|
|
// expect(utilityFunction(undefined)).toBe(undefined)
|
|
// or
|
|
// expect(() => utilityFunction(undefined)).toThrow()
|
|
})
|
|
|
|
it('should handle empty array', () => {
|
|
// expect(utilityFunction([])).toEqual([])
|
|
})
|
|
|
|
it('should handle empty object', () => {
|
|
// expect(utilityFunction({})).toEqual({})
|
|
})
|
|
})
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Boundary Conditions
|
|
// --------------------------------------------------------------------------
|
|
describe('Boundary Conditions', () => {
|
|
it('should handle minimum value', () => {
|
|
// expect(utilityFunction(0)).toBe(0)
|
|
})
|
|
|
|
it('should handle maximum value', () => {
|
|
// expect(utilityFunction(Number.MAX_SAFE_INTEGER)).toBe(...)
|
|
})
|
|
|
|
it('should handle negative numbers', () => {
|
|
// expect(utilityFunction(-1)).toBe(...)
|
|
})
|
|
})
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Type Coercion (if applicable)
|
|
// --------------------------------------------------------------------------
|
|
describe('Type Handling', () => {
|
|
it('should handle numeric string', () => {
|
|
// expect(utilityFunction('123')).toBe(123)
|
|
})
|
|
|
|
it('should handle boolean', () => {
|
|
// expect(utilityFunction(true)).toBe(...)
|
|
})
|
|
})
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Error Cases
|
|
// --------------------------------------------------------------------------
|
|
describe('Error Handling', () => {
|
|
it('should throw for invalid input', () => {
|
|
// expect(() => utilityFunction('invalid')).toThrow('Error message')
|
|
})
|
|
|
|
it('should throw with specific error type', () => {
|
|
// expect(() => utilityFunction('invalid')).toThrow(ValidationError)
|
|
})
|
|
})
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Complex Objects (if applicable)
|
|
// --------------------------------------------------------------------------
|
|
describe('Object Handling', () => {
|
|
it('should preserve object structure', () => {
|
|
// const input = { a: 1, b: 2 }
|
|
// expect(utilityFunction(input)).toEqual({ a: 1, b: 2 })
|
|
})
|
|
|
|
it('should handle nested objects', () => {
|
|
// const input = { nested: { deep: 'value' } }
|
|
// expect(utilityFunction(input)).toEqual({ nested: { deep: 'transformed' } })
|
|
})
|
|
|
|
it('should not mutate input', () => {
|
|
// const input = { a: 1 }
|
|
// const inputCopy = { ...input }
|
|
// utilityFunction(input)
|
|
// expect(input).toEqual(inputCopy)
|
|
})
|
|
})
|
|
|
|
// --------------------------------------------------------------------------
|
|
// Array Handling (if applicable)
|
|
// --------------------------------------------------------------------------
|
|
describe('Array Handling', () => {
|
|
it('should process all elements', () => {
|
|
// expect(utilityFunction([1, 2, 3])).toEqual([2, 4, 6])
|
|
})
|
|
|
|
it('should handle single element array', () => {
|
|
// expect(utilityFunction([1])).toEqual([2])
|
|
})
|
|
|
|
it('should preserve order', () => {
|
|
// expect(utilityFunction(['c', 'a', 'b'])).toEqual(['c', 'a', 'b'])
|
|
})
|
|
})
|
|
})
|