deno.land / x / domain_functions@v1.2.0 / src / input-resolvers.test.ts
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157import { describe, it } from 'https://deno.land/std@0.156.0/testing/bdd.ts'import { assertEquals } from 'https://deno.land/std@0.117.0/testing/asserts.ts'
import * as subject from './input-resolvers.ts'
const makePost: (entries: Array<[string, string]>, url?: string) => Request = ( entries, url = 'http://localhost/test',) => new Request(url, { method: 'POST', body: new URLSearchParams(entries).toString(), headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, })
const makeGet: (entries: Array<[string, string]>, url?: string) => Request = ( entries, url = 'http://localhost/test',) => new Request(url + '?' + new URLSearchParams(entries).toString(), { method: 'GET', })
describe('inputFromForm', () => { it("extracts the input values from a Request's FormData as an Object", async () => { const request = makePost([ ['foo', 'bar'], ['fizz', 'buzz'], ]) assertEquals(await subject.inputFromForm(request), { foo: 'bar', fizz: 'buzz', }) })
it('accepts array-like values', async () => { const request = makePost([ ['foo', 'bar'], ['arr[]', '1'], ['arr[]', '2'], ]) assertEquals(await subject.inputFromForm(request), { foo: 'bar', arr: ['1', '2'], }) })
it('accepts structured values', async () => { const request = makePost([ ['person[0][name]', 'John'], ['person[0][email]', 'john@email.com'], ['person[1][name]', 'Bill'], ['person[1][email]', 'bill@email.com'], ]) assertEquals(await subject.inputFromForm(request), { person: [ { name: 'John', email: 'john@email.com' }, { name: 'Bill', email: 'bill@email.com' }, ], }) })})
describe('inputFromUrl', () => { it("extracts the input values from a Request's URL as an Object", () => { const request = makeGet([ ['foo', 'bar'], ['fizz', 'buzz'], ]) assertEquals(subject.inputFromUrl(request), { foo: 'bar', fizz: 'buzz' }) })
it('accepts array-like values', async () => { const request = makeGet([ ['foo', 'bar'], ['arr[]', '1'], ['arr[]', '2'], ]) assertEquals(await subject.inputFromUrl(request), { foo: 'bar', arr: ['1', '2'], }) })
it('accepts structured values', async () => { const request = makeGet([ ['person[0][name]', 'John'], ['person[0][email]', 'john@email.com'], ['person[1][name]', 'Bill'], ['person[1][email]', 'bill@email.com'], ]) assertEquals(await subject.inputFromUrl(request), { person: [ { email: 'john@email.com', name: 'John' }, { name: 'Bill', email: 'bill@email.com' }, ], }) })})
describe('inputFromFormData', () => { it('extracts a structured object from a FormData', async () => { const request = makePost([ ['person[0][name]', 'John'], ['person[0][email]', 'john@email.com'], ['person[1][name]', 'Bill'], ['person[1][email]', 'bill@email.com'], ]) assertEquals(subject.inputFromFormData(await request.formData()), { person: [ { name: 'John', email: 'john@email.com' }, { name: 'Bill', email: 'bill@email.com' }, ], }) })
it('accepts manually constructed FormData', () => { const formData = new FormData() formData.append('email', 'john@doe.com') formData.append('tasks[]', 'one') formData.append('tasks[]', 'two') assertEquals(subject.inputFromFormData(formData), { email: 'john@doe.com', tasks: ['one', 'two'], }) })})
describe('inputFromSearch', () => { it('extracts a structured object from a URLSearchParams', () => { const request = makeGet([ ['person[0][name]', 'John'], ['person[0][email]', 'john@email.com'], ['person[1][name]', 'Bill'], ['person[1][email]', 'bill@email.com'], ]) assertEquals(subject.inputFromSearch(new URL(request.url).searchParams), { person: [ { email: 'john@email.com', name: 'John' }, { name: 'Bill', email: 'bill@email.com' }, ], }) })
it('accepts manually constructed URLSearchParams', () => { const qs = new URLSearchParams() qs.append('colors[]', 'red') qs.append('colors[]', 'green') qs.append('colors[]', 'blue') assertEquals(subject.inputFromSearch(qs), { colors: ['red', 'green', 'blue'], }) })})
Version Info