| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /**
- * Description Validation Test
- *
- * Tests for the 400-character description validation across App and Dataset
- * creation and editing workflows to ensure consistent validation behavior.
- */
-
- describe('Description Validation Logic', () => {
- // Simulate backend validation function
- const validateDescriptionLength = (description?: string | null) => {
- if (description && description.length > 400)
- throw new Error('Description cannot exceed 400 characters.')
-
- return description
- }
-
- describe('Backend Validation Function', () => {
- test('allows description within 400 characters', () => {
- const validDescription = 'x'.repeat(400)
- expect(() => validateDescriptionLength(validDescription)).not.toThrow()
- expect(validateDescriptionLength(validDescription)).toBe(validDescription)
- })
-
- test('allows empty description', () => {
- expect(() => validateDescriptionLength('')).not.toThrow()
- expect(() => validateDescriptionLength(null)).not.toThrow()
- expect(() => validateDescriptionLength(undefined)).not.toThrow()
- })
-
- test('rejects description exceeding 400 characters', () => {
- const invalidDescription = 'x'.repeat(401)
- expect(() => validateDescriptionLength(invalidDescription)).toThrow(
- 'Description cannot exceed 400 characters.',
- )
- })
- })
-
- describe('Backend Validation Consistency', () => {
- test('App and Dataset have consistent validation limits', () => {
- const maxLength = 400
- const validDescription = 'x'.repeat(maxLength)
- const invalidDescription = 'x'.repeat(maxLength + 1)
-
- // Both should accept exactly 400 characters
- expect(validDescription.length).toBe(400)
- expect(() => validateDescriptionLength(validDescription)).not.toThrow()
-
- // Both should reject 401 characters
- expect(invalidDescription.length).toBe(401)
- expect(() => validateDescriptionLength(invalidDescription)).toThrow()
- })
-
- test('validation error messages are consistent', () => {
- const expectedErrorMessage = 'Description cannot exceed 400 characters.'
-
- // This would be the error message from both App and Dataset backend validation
- expect(expectedErrorMessage).toBe('Description cannot exceed 400 characters.')
-
- const invalidDescription = 'x'.repeat(401)
- try {
- validateDescriptionLength(invalidDescription)
- }
- catch (error) {
- expect((error as Error).message).toBe(expectedErrorMessage)
- }
- })
- })
-
- describe('Character Length Edge Cases', () => {
- const testCases = [
- { length: 0, shouldPass: true, description: 'empty description' },
- { length: 1, shouldPass: true, description: '1 character' },
- { length: 399, shouldPass: true, description: '399 characters' },
- { length: 400, shouldPass: true, description: '400 characters (boundary)' },
- { length: 401, shouldPass: false, description: '401 characters (over limit)' },
- { length: 500, shouldPass: false, description: '500 characters' },
- { length: 1000, shouldPass: false, description: '1000 characters' },
- ]
-
- testCases.forEach(({ length, shouldPass, description }) => {
- test(`handles ${description} correctly`, () => {
- const testDescription = length > 0 ? 'x'.repeat(length) : ''
- expect(testDescription.length).toBe(length)
-
- if (shouldPass) {
- expect(() => validateDescriptionLength(testDescription)).not.toThrow()
- expect(validateDescriptionLength(testDescription)).toBe(testDescription)
- }
- else {
- expect(() => validateDescriptionLength(testDescription)).toThrow(
- 'Description cannot exceed 400 characters.',
- )
- }
- })
- })
- })
- })
|