@multipart/test-form-data

1.0.0 • Public • Published

@multipart/test-form-data

npm version

@multipart/test-form-data is Data For Testing Multipart/Form-Data Algorithms Written As Zoroaster Mask.

yarn add -D @multipart/test-form-data

Table Of Contents

API

The package is available by importing its named function, and by referencing the mask result file:

import makeTestSuite from '@zoroaster/mask'
import { updateStore } from '@multipart/test-form-data'

export default makeTestSuite('node_modules/@multipart/test-form-data', {
  getResults() {
    // ... must return the store for comparison
  }
})
## basic keys
[
  {
    "key": "name",
    "value": "Bender"
  },
  {
    "key": "hind",
    "value": "Bitable"
  },
  {
    "key": "shiny",
    "value": "Yes"
  }
]

/* expected */
{
  "name": "Bender",
  "hind": "Bitable",
  "shiny": "Yes"
}
/**/

## multiple values
[
  {
    "key": "bottle-on-wall",
    "value": "1"
  },
  {
    "key": "bottle-on-wall",
    "value": "2"
  },
  {
    "key": "bottle-on-wall",
    "value": "3"
  }
]

/* expected */
{
  "bottle-on-wall": [
    "1",
    "2",
    "3"
  ]
}
/**/

## deeper structure
[
  {
    "key": "pet[species]",
    "value": "Dahut"
  },
  {
    "key": "pet[name]",
    "value": "Hypatia"
  },
  {
    "key": "kids[1]",
    "value": "Thelma"
  },
  {
    "key": "kids[0]",
    "value": "Ashley"
  }
]

/* expected */
{
  "pet": {
    "species": "Dahut",
    "name": "Hypatia"
  },
  "kids": [
    "Ashley",
    "Thelma"
  ]
}
/**/

## sparse arrays
[
  {
    "key": "heartbeat[0]",
    "value": "thunk"
  },
  {
    "key": "heartbeat[2]",
    "value": "thunk"
  }
]

/* expected */
{
  "heartbeat": [
    "thunk",
    null,
    "thunk"
  ]
}
/**/

## even deeper
[
  {
    "key": "pet[0][species]",
    "value": "Dahut"
  },
  {
    "key": "pet[0][name]",
    "value": "Hypatia"
  },
  {
    "key": "pet[1][species]",
    "value": "Felis Stultus"
  },
  {
    "key": "pet[1][name]",
    "value": "Billie"
  }
]

/* expected */
{
  "pet": [
    {
      "species": "Dahut",
      "name": "Hypatia"
    },
    {
      "species": "Felis Stultus",
      "name": "Billie"
    }
  ]
}
/**/

## such deep
[
  {
    "key": "wow[such][deep][3][much][power][!]",
    "value": "Amaze"
  }
]

/* expected */
{
  "wow": {
    "such": {
      "deep": [
        null,
        null,
        null,
        {
          "much": {
            "power": {
              "!": "Amaze"
            }
          }
        }
      ]
    }
  }
}
/**/

## merge behaviour
[
  {
    "key": "mix",
    "value": "scalar"
  },
  {
    "key": "mix[0]",
    "value": "array 1"
  },
  {
    "key": "mix[2]",
    "value": "array 2"
  },
  {
    "key": "mix[key]",
    "value": "key key"
  },
  {
    "key": "mix[car]",
    "value": "car key"
  }
]

/* expected */
{
  "mix": {
    "0": "array 1",
    "2": "array 2",
    "": "scalar",
    "key": "key key",
    "car": "car key"
  }
}
/**/

## bad fields
[
  {
    "key": "error[good]",
    "value": "BOOM!"
  },
  {
    "key": "error[bad",
    "value": "BOOM BOOM!"
  }
]

/* expected */
{
  "error": {
    "good": "BOOM!"
  },
  "error[bad": "BOOM BOOM!"
}
/**/

updateStore(
  store: Object,
): void

Updates the store to make undefined in sparse arrays appear as nulls for deepStrictEqual comparison.

import { updateStore } from '@multipart/test-form-data'

const hello = []
hello[2] = 'test'

const store = { hello }
updateStore(store)
console.log(store)
{ hello: [ null, null, 'test' ] }

Copyright

Original data by Linus Unnebäck.


Art Deco © Art Deco for Idio 2019 Idio Tech Nation Visa Tech Nation Visa Sucks

Package Sidebar

Install

npm i @multipart/test-form-data

Weekly Downloads

5

Version

1.0.0

License

MIT

Unpacked Size

11.3 kB

Total Files

10

Last publish

Collaborators

  • zvr