@nahkies/typescript-fetch-runtime
Version:
Runtime package for code generated by @nahkies/openapi-code-generator using the typescript-fetch template
222 lines • 10.7 kB
JavaScript
;
// biome-ignore-all lint/suspicious/noExplicitAny: tests
Object.defineProperty(exports, "__esModule", { value: true });
const globals_1 = require("@jest/globals");
const main_1 = require("./main");
class ConcreteFetchClient extends main_1.AbstractFetchClient {
// biome-ignore lint/complexity/noUselessConstructor: make public
constructor(config) {
super(config);
}
query(params) {
return this._query(params);
}
headers(paramHeaders = {}, optsHeaders = {}) {
return this._headers(paramHeaders, optsHeaders);
}
}
(0, globals_1.describe)("typescript-fetch-runtime/main", () => {
(0, globals_1.describe)("_query", () => {
const client = new ConcreteFetchClient({
basePath: "http://localhost:8080",
defaultHeaders: { Authorization: "Bearer: default" },
});
(0, globals_1.it)("returns an empty string when all params are undefined", () => {
(0, globals_1.expect)(client.query({ foo: undefined, bar: undefined })).toBe("");
});
(0, globals_1.it)("returns the defined params in a simple case", () => {
(0, globals_1.expect)(client.query({ foo: undefined, bar: "baz", foobar: "value" })).toBe("?bar=baz&foobar=value");
});
(0, globals_1.it)("repeats array params", () => {
(0, globals_1.expect)(client.query({ foo: ["bar", "baz"] })).toBe("?foo=bar&foo=baz");
});
(0, globals_1.it)("handles objects", () => {
(0, globals_1.expect)(client.query({ foo: { bar: "baz" } })).toBe(`?${encodeURIComponent("foo[bar]")}=baz`);
});
(0, globals_1.it)("handles arrays of objects with multiple properties", () => {
(0, globals_1.expect)(client.query({
foo: [
{ prop1: "one", prop2: "two" },
{ prop1: "foo", prop2: "bar" },
],
limit: 10,
undefined: undefined,
includeSomething: false,
})).toBe(`?${encodeURIComponent("foo[prop1]")}=one&${encodeURIComponent("foo[prop2]")}=two&${encodeURIComponent("foo[prop1]")}=foo&${encodeURIComponent("foo[prop2]")}=bar&limit=10&includeSomething=false`);
});
});
(0, globals_1.describe)("_headers", () => {
function getActual({ defaultHeaders, routeHeaders, configHeaders, }) {
const client = new ConcreteFetchClient({
basePath: "",
defaultHeaders: defaultHeaders ?? {},
});
return client.headers(routeHeaders, configHeaders);
}
(0, globals_1.describe)("default headers", () => {
(0, globals_1.it)("can set default headers", () => {
const actual = getActual({
defaultHeaders: { Authorization: "Bearer: default" },
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([
["authorization", "Bearer: default"],
]);
});
(0, globals_1.it)("can override default headers with route headers", () => {
const actual = getActual({
defaultHeaders: { Authorization: "Bearer: default" },
routeHeaders: { Authorization: "Bearer: route" },
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([
["authorization", "Bearer: route"],
]);
});
(0, globals_1.it)("can override default headers with config headers", () => {
const actual = getActual({
defaultHeaders: { Authorization: "Bearer: default" },
configHeaders: { Authorization: "Bearer: config" },
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([
["authorization", "Bearer: config"],
]);
});
(0, globals_1.it)("can clear default headers with route headers", () => {
const actual = getActual({
defaultHeaders: { Authorization: "Bearer: default" },
routeHeaders: { Authorization: null },
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([]);
});
(0, globals_1.it)("can clear default headers with config headers", () => {
const actual = getActual({
defaultHeaders: { Authorization: "Bearer: default" },
routeHeaders: { Authorization: "Bearer: route" },
configHeaders: { Authorization: null },
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([]);
});
});
(0, globals_1.describe)("route headers", () => {
(0, globals_1.it)("applies number route headers", () => {
const actual = getActual({
routeHeaders: { "X-Rate-Limit": 10 },
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([
["x-rate-limit", "10"],
]);
});
(0, globals_1.it)("ignores undefined values and lets the default apply", () => {
const actual = getActual({
defaultHeaders: { "X-Rate-Limit": "10" },
routeHeaders: { "X-Rate-Limit": undefined },
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([
["x-rate-limit", "10"],
]);
});
(0, globals_1.it)("applies tuple array headers", () => {
const actual = getActual({
defaultHeaders: { "X-Rate-Limit": "10" },
routeHeaders: [
["X-Rate-Limit", 20],
["Foo", "bar"],
],
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([
["foo", "bar"],
["x-rate-limit", "20"],
]);
});
(0, globals_1.it)("applies Headers", () => {
const headers = new Headers();
headers.append("X-Rate-Limit", "20");
headers.append("Foo", "bar");
headers.append("Foo", "foobar");
const actual = getActual({
defaultHeaders: { "X-Rate-Limit": "10" },
routeHeaders: headers,
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([
// Headers that aren't Set-Cookie get concatenated by the Headers built-in.
["foo", "bar, foobar"],
["x-rate-limit", "20"],
]);
});
});
(0, globals_1.describe)("config headers", () => {
(0, globals_1.it)("can receive a Headers object correctly", () => {
const headers = new Headers();
headers.append("Set-Cookie", "one=cookie-1; SameSite=None; Secure");
headers.append("Set-Cookie", "two=cookie-2; SameSite=None; Secure");
const actual = getActual({
defaultHeaders: { "X-Rate-Limit": "10" },
routeHeaders: { "X-Rate-Limit": undefined },
configHeaders: headers,
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([
["set-cookie", "one=cookie-1; SameSite=None; Secure"],
["set-cookie", "two=cookie-2; SameSite=None; Secure"],
["x-rate-limit", "10"],
]);
});
(0, globals_1.it)("can receive a [string, string][] correctly", () => {
const headers = [
["Set-Cookie", "one=cookie-1; SameSite=None; Secure"],
["Set-Cookie", "two=cookie-2; SameSite=None; Secure"],
];
const actual = getActual({
defaultHeaders: { "X-Rate-Limit": "10" },
routeHeaders: { "X-Rate-Limit": undefined },
configHeaders: headers,
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([
["set-cookie", "one=cookie-1; SameSite=None; Secure"],
["set-cookie", "two=cookie-2; SameSite=None; Secure"],
["x-rate-limit", "10"],
]);
});
(0, globals_1.it)("can receive a string[][] correctly", () => {
const headers = [
[
"Set-Cookie",
"one=cookie-1; SameSite=None; Secure",
"two=cookie-2; SameSite=None; Secure",
],
["Foo", "bar"],
];
const actual = getActual({
defaultHeaders: { "X-Rate-Limit": "10" },
routeHeaders: { "X-Rate-Limit": undefined },
configHeaders: headers,
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([
["foo", "bar"],
["set-cookie", "one=cookie-1; SameSite=None; Secure"],
["set-cookie", "two=cookie-2; SameSite=None; Secure"],
["x-rate-limit", "10"],
]);
});
(0, globals_1.it)("can receive a Record<string, string|string[]> correctly", () => {
const headers = {
"Set-Cookie": [
"one=cookie-1; SameSite=None; Secure",
"two=cookie-2; SameSite=None; Secure",
],
Foo: "bar",
};
const actual = getActual({
defaultHeaders: { "X-Rate-Limit": "10" },
routeHeaders: { "X-Rate-Limit": undefined },
configHeaders: headers,
});
(0, globals_1.expect)(Array.from(actual.entries())).toStrictEqual([
["foo", "bar"],
["set-cookie", "one=cookie-1; SameSite=None; Secure"],
["set-cookie", "two=cookie-2; SameSite=None; Secure"],
["x-rate-limit", "10"],
]);
});
});
});
});
//# sourceMappingURL=main.spec.js.map