/** * 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']) }) }) })