deno.land / std@0.224.0 / json / json_stringify_stream_test.ts

json_stringify_stream_test.ts
View Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import { assertEquals, assertRejects } from "../assert/mod.ts";import { JsonStringifyStream, type StringifyStreamOptions,} from "./json_stringify_stream.ts";
async function assertValidStringify( transformer: typeof JsonStringifyStream, chunks: unknown[], expect: string[], options?: StringifyStreamOptions,) { const r = ReadableStream.from(chunks) .pipeThrough(new transformer(options)); const res = await Array.fromAsync(r); assertEquals(res, expect);}
async function assertInvalidStringify( transformer: typeof JsonStringifyStream, chunks: unknown[], options: StringifyStreamOptions, // deno-lint-ignore no-explicit-any ErrorClass: new (...args: any[]) => Error, msgIncludes: string | undefined,) { const r = ReadableStream.from(chunks) .pipeThrough(new transformer(options)); await assertRejects( async () => await Array.fromAsync(r), ErrorClass, msgIncludes, );}
Deno.test({ name: "JsonStringifyStream", async fn() { await assertValidStringify( JsonStringifyStream, [{ foo: "bar" }, { foo: "bar" }], ['{"foo":"bar"}\n', '{"foo":"bar"}\n'], ); },});
Deno.test({ name: "JsonStringifyStream throws on error", async fn() { const cyclic: Record<string, unknown> = {}; cyclic.cyclic = cyclic; await assertInvalidStringify( JsonStringifyStream, [cyclic], {}, TypeError, "Converting circular structure to JSON", ); },});
Deno.test({ name: "JsonStringifyStream handles prefix and suffix", async fn() { await assertValidStringify( JsonStringifyStream, [{ foo: "bar" }, { foo: "bar" }], [ '[[prefix]]{"foo":"bar"}[[suffix]]', '[[prefix]]{"foo":"bar"}[[suffix]]', ], { prefix: "[[prefix]]", suffix: "[[suffix]]" }, ); },});
std

Version Info

Tagged at
6 months ago