string.spec.js 2.78 KB
import {
  escapeRegExp,
  kebabCase,
  lowerFirst,
  pascalCase,
  startCase,
  toString,
  upperFirst
} from './string'

describe('utils/string', () => {
  it('kebabCase() works', async () => {
    expect(kebabCase('foo')).toBe('foo')
    expect(kebabCase('Foo')).toBe('foo')
    expect(kebabCase('fooBar')).toBe('foo-bar')
    expect(kebabCase('FooBar')).toBe('foo-bar')
    expect(kebabCase('XFooBar')).toBe('x-foo-bar')
  })

  it('pascalCase() works', async () => {
    expect(pascalCase('foo')).toBe('Foo')
    expect(pascalCase('Foo')).toBe('Foo')
    expect(pascalCase('fooBar')).toBe('FooBar')
    expect(pascalCase('FooBar')).toBe('FooBar')
    expect(pascalCase('foo-bar')).toBe('FooBar')
    expect(pascalCase('x-foo-bar')).toBe('XFooBar')
    expect(pascalCase('xFooBar')).toBe('XFooBar')
  })

  it('startCase() works', async () => {
    expect(startCase('foobar')).toBe('Foobar')
    expect(startCase('Foobar')).toBe('Foobar')
    expect(startCase('foo_bar')).toBe('Foo Bar')
    expect(startCase('foo bar')).toBe('Foo Bar')
    expect(startCase('fooBar')).toBe('Foo Bar')
  })

  it('lowerFirst() works', async () => {
    expect(lowerFirst('Upper')).toBe('upper')
    expect(lowerFirst(' Upper ')).toBe('upper')
    expect(lowerFirst('Upper case')).toBe('upper case')
    expect(lowerFirst(null)).toBe('null')
    expect(lowerFirst(undefined)).toBe('undefined')
    expect(lowerFirst({})).toBe('[object Object]')
    expect(lowerFirst([])).toBe('')
    expect(lowerFirst(['Foo', 'bar'])).toBe('foo,bar')
  })

  it('upperFirst() works', async () => {
    expect(upperFirst('lower')).toBe('Lower')
    expect(upperFirst(' lower ')).toBe('Lower')
    expect(upperFirst('lower case')).toBe('Lower case')
    expect(upperFirst(null)).toBe('Null')
    expect(upperFirst(undefined)).toBe('Undefined')
    expect(upperFirst({})).toBe('[object Object]')
    expect(upperFirst([])).toBe('')
    expect(upperFirst(['foo', 'bar'])).toBe('Foo,bar')
  })

  it('escapeRegExp() works', async () => {
    expect(escapeRegExp('Hello?')).toBe('Hello\\?')
    expect(escapeRegExp('$100')).toBe('\\$100')
    expect(escapeRegExp('10 * 5')).toBe('10 \\* 5')
    expect(escapeRegExp('[-/\\^$*+?.()|[\\]{}]')).toBe(
      '\\[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\\\\\]\\{\\}\\]'
    )
  })

  it('toString() works', async () => {
    expect(toString(null)).toBe('')
    expect(toString(undefined)).toBe('')
    expect(toString(true)).toBe('true')
    expect(toString(false)).toBe('false')
    expect(toString({ a: 1, b: 2, c: { d: 'foo' } })).toBe(`{
  "a": 1,
  "b": 2,
  "c": {
    "d": "foo"
  }
}`)
    expect(toString({ a: 1, b: 2, c: { d: 'foo' } }, 4)).toBe(`{
    "a": 1,
    "b": 2,
    "c": {
        "d": "foo"
    }
}`)
    expect(toString([])).toBe('[]')
    expect(toString(['foo', 'bar'])).toBe(`[
  "foo",
  "bar"
]`)
  })
})