31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
import { describe, it } from "@effect/vitest"
|
|
import { assertNone, assertSome } from "@effect/vitest/utils"
|
|
import { Schema } from "effect"
|
|
import { UrlParams } from "effect/unstable/http"
|
|
import { assertSuccess } from "../../utils/assert.ts"
|
|
|
|
describe("UrlParams", () => {
|
|
describe("UrlParamsSchema", () => {
|
|
it("round-trips ordered pairs with the serializer annotation", () => {
|
|
const iso = Schema.toIso(UrlParams.UrlParamsSchema)
|
|
const params = UrlParams.make([["a", "1"], ["b", "2"]])
|
|
assertSuccess(iso.getResult(params), [["a", "1"], ["b", "2"]])
|
|
assertSuccess(iso.replaceResult([["a", "1"], ["b", "3"]], params), UrlParams.make([["a", "1"], ["b", "3"]]))
|
|
})
|
|
})
|
|
|
|
it("getFirst and getLast return Option", () => {
|
|
const params = UrlParams.fromInput([[
|
|
"foo",
|
|
"a"
|
|
], [
|
|
"foo",
|
|
"b"
|
|
]])
|
|
assertSome(UrlParams.getFirst(params, "foo"), "a")
|
|
assertSome(UrlParams.getLast(params, "foo"), "b")
|
|
assertNone(UrlParams.getFirst(params, "bar"))
|
|
assertNone(UrlParams.getLast(params, "bar"))
|
|
})
|
|
})
|