Buckets:
ktongue/docker_container / .cache /opencode /node_modules /fast-json-stringify /test /issue-794.test.js
| const { test } = require('node:test') | |
| const build = require('..') | |
| test('serialize string with quotes - issue #794', (t) => { | |
| t.plan(2) | |
| const schema = { | |
| type: 'object', | |
| properties: { | |
| message: { | |
| type: 'string' | |
| } | |
| } | |
| } | |
| const input = { | |
| message: 'Error: Property "name" is required' | |
| } | |
| const stringify = build(schema) | |
| const output = stringify(input) | |
| // The output should be valid JSON | |
| t.assert.doesNotThrow(() => { | |
| JSON.parse(output) | |
| }, 'JSON output should be parseable') | |
| // The parsed output should match the input | |
| const parsed = JSON.parse(output) | |
| t.assert.equal(parsed.message, input.message) | |
| }) | |
| test('serialize string with various quote types - issue #794', (t) => { | |
| t.plan(6) | |
| const schema = { | |
| type: 'string' | |
| } | |
| const stringify = build(schema) | |
| // Test double quotes | |
| const inputDoubleQuotes = 'Property "name" is required' | |
| const outputDoubleQuotes = stringify(inputDoubleQuotes) | |
| t.assert.doesNotThrow(() => JSON.parse(outputDoubleQuotes)) | |
| t.assert.equal(JSON.parse(outputDoubleQuotes), inputDoubleQuotes) | |
| // Test single quotes (should be fine but test for completeness) | |
| const inputSingleQuotes = "Property 'name' is required" | |
| const outputSingleQuotes = stringify(inputSingleQuotes) | |
| t.assert.doesNotThrow(() => JSON.parse(outputSingleQuotes)) | |
| t.assert.equal(JSON.parse(outputSingleQuotes), inputSingleQuotes) | |
| // Test mixed quotes | |
| const inputMixedQuotes = 'Error: "Property \'name\' is required"' | |
| const outputMixedQuotes = stringify(inputMixedQuotes) | |
| t.assert.doesNotThrow(() => JSON.parse(outputMixedQuotes)) | |
| t.assert.equal(JSON.parse(outputMixedQuotes), inputMixedQuotes) | |
| }) | |
| test('serialize error-like object with quotes in message - issue #794', (t) => { | |
| t.plan(2) | |
| const schema = { | |
| type: 'object', | |
| properties: { | |
| error: { | |
| type: 'object', | |
| properties: { | |
| message: { | |
| type: 'string' | |
| }, | |
| code: { | |
| type: 'string' | |
| } | |
| } | |
| } | |
| } | |
| } | |
| const input = { | |
| error: { | |
| message: 'Validation failed: Property "email" must be a valid email address', | |
| code: 'VALIDATION_ERROR' | |
| } | |
| } | |
| const stringify = build(schema) | |
| const output = stringify(input) | |
| // The output should be valid JSON | |
| t.assert.doesNotThrow(() => { | |
| JSON.parse(output) | |
| }, 'JSON output should be parseable') | |
| // The parsed output should match the input | |
| const parsed = JSON.parse(output) | |
| t.assert.deepEqual(parsed, input) | |
| }) | |
| test('serialize validation errors array with quotes - issue #794', (t) => { | |
| t.plan(2) | |
| const schema = { | |
| type: 'object', | |
| properties: { | |
| errors: { | |
| type: 'array', | |
| items: { | |
| type: 'object', | |
| properties: { | |
| message: { | |
| type: 'string' | |
| }, | |
| field: { | |
| type: 'string' | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| const input = { | |
| errors: [ | |
| { | |
| message: 'Property "name" is required', | |
| field: 'name' | |
| }, | |
| { | |
| message: 'Property "email" must be a valid email address', | |
| field: 'email' | |
| }, | |
| { | |
| message: 'Value must be between "1" and "100"', | |
| field: 'age' | |
| } | |
| ] | |
| } | |
| const stringify = build(schema) | |
| const output = stringify(input) | |
| // The output should be valid JSON | |
| t.assert.doesNotThrow(() => { | |
| JSON.parse(output) | |
| }, 'JSON output should be parseable') | |
| // The parsed output should match the input | |
| const parsed = JSON.parse(output) | |
| t.assert.deepEqual(parsed, input) | |
| }) | |
| test('serialize string with backslashes and quotes - issue #794', (t) => { | |
| t.plan(4) | |
| const schema = { | |
| type: 'string' | |
| } | |
| const stringify = build(schema) | |
| // Test backslashes | |
| const inputBackslash = 'Path: C:\\Users\\test\\file.json' | |
| const outputBackslash = stringify(inputBackslash) | |
| t.assert.doesNotThrow(() => JSON.parse(outputBackslash)) | |
| t.assert.equal(JSON.parse(outputBackslash), inputBackslash) | |
| // Test combination of backslashes and quotes | |
| const inputMixed = 'Error: Could not find file "C:\\Users\\test\\config.json"' | |
| const outputMixed = stringify(inputMixed) | |
| t.assert.doesNotThrow(() => JSON.parse(outputMixed)) | |
| t.assert.equal(JSON.parse(outputMixed), inputMixed) | |
| }) | |
Xet Storage Details
- Size:
- 4.33 kB
- Xet hash:
- e28858870c47f8fef608bb43ddd62d85f606e9ff77137b539afa22ecf132dbdb
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.