mirror of
https://github.com/supabase/supabase.git
synced 2026-06-21 22:12:50 +08:00
97 lines
2.6 KiB
TypeScript
97 lines
2.6 KiB
TypeScript
import { getAnchor, removeAnchor } from './CustomHTMLElements.utils'
|
|
|
|
describe('CustomHTMLElementsUtils', () => {
|
|
describe('getAnchor', () => {
|
|
describe('when value is an object', () => {
|
|
it('returns slugified version of props.children', () => {
|
|
const value = {
|
|
props: {
|
|
children: 'Full Text Search',
|
|
},
|
|
}
|
|
|
|
const result = getAnchor(value)
|
|
|
|
expect(result).toStrictEqual('full-text-search')
|
|
})
|
|
})
|
|
|
|
describe('when value is an array', () => {
|
|
describe('when custom anchor exists', () => {
|
|
it('returns inner slug', () => {
|
|
const value = ['Proximity: <->', '[#proximity]']
|
|
|
|
const result = getAnchor(value)
|
|
|
|
expect(result).toStrictEqual('proximity')
|
|
})
|
|
|
|
it('trims whitespace', () => {
|
|
const value = ['Proximity: <->', ' [#proximity] ']
|
|
|
|
const result = getAnchor(value)
|
|
|
|
expect(result).toStrictEqual('proximity')
|
|
})
|
|
})
|
|
|
|
it('returns concatenated slug of elements', () => {
|
|
const value = ['Full', 'Text', 'Search']
|
|
|
|
const result = getAnchor(value)
|
|
|
|
expect(result).toStrictEqual('full-text-search')
|
|
})
|
|
|
|
it('trims whitespace', () => {
|
|
const value = [' Full ', ' Text ', ' Search ']
|
|
|
|
const result = getAnchor(value)
|
|
|
|
expect(result).toStrictEqual('full-text-search')
|
|
})
|
|
|
|
it('removes special characters', () => {
|
|
const value = ['function()']
|
|
|
|
const result = getAnchor(value)
|
|
|
|
expect(result).toStrictEqual('function')
|
|
})
|
|
})
|
|
|
|
describe('when value is a string', () => {
|
|
it('returns slugified version of string', () => {
|
|
const value = 'My (Very) Awesome Heading'
|
|
|
|
const result = getAnchor(value)
|
|
|
|
expect(result).toStrictEqual('my-very-awesome-heading')
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('removeAnchor', () => {
|
|
describe('when value is an array', () => {
|
|
it('filters out custom anchor elements', () => {
|
|
const value = ['My (Very) Awesome Heading', '[#my-custom-heading]']
|
|
|
|
const result = removeAnchor(value)
|
|
|
|
expect(result).toStrictEqual(['My (Very) Awesome Heading'])
|
|
})
|
|
})
|
|
|
|
describe('when value is a string', () => {
|
|
it('strips out custom anchor string', () => {
|
|
const value = 'My (Very) Awesome Heading [#my-custom-heading]'
|
|
|
|
const result = removeAnchor(value)
|
|
|
|
// Original implementation didn't trim the resulting string - not sure if it really matters
|
|
expect(result).toStrictEqual('My (Very) Awesome Heading ')
|
|
})
|
|
})
|
|
})
|
|
})
|