audiobookshelf/test-validateTagsGenres.js

78 lines
2.7 KiB
JavaScript
Raw Normal View History

// Quick test for validateTagsGenresArray function
const validateTagsGenresArray = (tagsGenres) => {
if (!tagsGenres || (typeof tagsGenres !== 'string' && !Array.isArray(tagsGenres))) return undefined
// If string, split by comma and trim each item
if (typeof tagsGenres === 'string') tagsGenres = tagsGenres.split(',')
// If array, ensure all items are strings
else if (!tagsGenres.every((t) => typeof t === 'string')) return undefined
// Trim and filter out empty strings
tagsGenres = tagsGenres.map((t) => t.trim()).filter(Boolean)
if (!tagsGenres.length) return undefined
// Dedup
return [...new Set(tagsGenres)]
}
// Test cases
console.log('Test 1 - String with commas:')
console.log(validateTagsGenresArray('tag1, tag2, tag3'))
console.log('Expected: ["tag1", "tag2", "tag3"]')
console.log('\nTest 2 - Array of strings:')
console.log(validateTagsGenresArray(['tag1', 'tag2', 'tag3']))
console.log('Expected: ["tag1", "tag2", "tag3"]')
console.log('\nTest 3 - Duplicates:')
console.log(validateTagsGenresArray(['tag1', 'tag2', 'tag1', 'tag3', 'tag2']))
console.log('Expected: ["tag1", "tag2", "tag3"]')
console.log('\nTest 4 - String with duplicates:')
console.log(validateTagsGenresArray('tag1, tag2, tag1, tag3'))
console.log('Expected: ["tag1", "tag2", "tag3"]')
console.log('\nTest 5 - Extra whitespace:')
console.log(validateTagsGenresArray(' tag1 , tag2 , tag3 '))
console.log('Expected: ["tag1", "tag2", "tag3"]')
console.log('\nTest 6 - Empty string:')
console.log(validateTagsGenresArray(''))
console.log('Expected: undefined')
console.log('\nTest 7 - String with only commas:')
console.log(validateTagsGenresArray(',,,'))
console.log('Expected: undefined')
console.log('\nTest 8 - Empty array:')
console.log(validateTagsGenresArray([]))
console.log('Expected: undefined')
console.log('\nTest 9 - null:')
console.log(validateTagsGenresArray(null))
console.log('Expected: undefined')
console.log('\nTest 10 - undefined:')
console.log(validateTagsGenresArray(undefined))
console.log('Expected: undefined')
console.log('\nTest 11 - Array with non-strings:')
console.log(validateTagsGenresArray([1, 2, 3]))
console.log('Expected: undefined')
console.log('\nTest 12 - Array with mixed types:')
console.log(validateTagsGenresArray(['tag1', 2, 'tag3']))
console.log('Expected: undefined')
console.log('\nTest 13 - Array with empty strings:')
console.log(validateTagsGenresArray(['tag1', '', 'tag2', ' ']))
console.log('Expected: ["tag1", "tag2"]')
console.log('\nTest 14 - Single item:')
console.log(validateTagsGenresArray('tag1'))
console.log('Expected: ["tag1"]')
console.log('\nTest 15 - Object (invalid):')
console.log(validateTagsGenresArray({ tag: 'value' }))
console.log('Expected: undefined')