|
- import * as fc from 'fast-check'
- import * as fcArb from '../../utilities/fast-check/arbitraries'
- import stringify from './stringify'
-
- it('should exist', () => {
- expect(stringify).toBeDefined()
- })
-
- it('should be a function', () => {
- expect(stringify).toBeFunction()
- })
-
- it('should accept 1 argument', () => {
- expect(stringify).toHaveLength(1)
- })
-
- it('should return a string value', () => {
- fc.assert(
- fc.property(
- fc.anything(),
- v => {
- expect(stringify(v)).toBeString()
- }
- )
- )
- })
-
- describe('on arguments', () => {
- it('should consider `undefined` as empty string', () => {
- expect(stringify(undefined)).toBe('')
- })
-
- it('should consider `null` as empty string', () => {
- expect(stringify(null)).toBe('')
- })
-
- it('should stringify non-objects', () => {
- fc.assert(
- fc.property(
- fcArb.nonObject(),
- fc.string(),
- v => {
- expect(stringify(v)).toBe(String(v))
- }
- )
- )
- })
-
- it('should stringify objects', () => {
- fc.assert(
- fc.property(
- fc.object(),
- v => {
- expect(stringify(v)).toBe(JSON.stringify(v))
- }
- )
- )
- })
-
- describe('on arrays', () => {
- it('should stringify empty arrays', () => {
- fc.assert(
- fc.property(
- fc.array(fcArb.nonObject(), 0),
- v => {
- expect(stringify(v)).toBe('')
- }
- )
- )
- })
-
- it('should stringify arrays with single values', () => {
- fc.assert(
- fc.property(
- fc.array(fcArb.nonObject(), 1, 1),
- v => {
- expect(stringify(v)).toBe(String(v[0]))
- }
- )
- )
- })
-
- it('should stringify arrays with 2 or more values', () => {
- fc.assert(
- fc.property(
- fc.array(fcArb.nonObject(), 2, 20),
- v => {
- expect(stringify(v)).toContain(',')
- }
- )
- )
- })
- })
- })
|