Home / File/ error-map.test.js — astro Source File

error-map.test.js — astro Source File

Architecture documentation for error-map.test.js, a javascript file in the astro codebase. 6 imports, 0 dependents.

Entity Profile

Dependency Diagram

graph LR
  1ca4a691_7c9c_3b68_cd08_fd2967c8ae18["error-map.test.js"]
  2c2ad99c_ec0d_bae1_2956_a019f5b6a543["../dist/core/errors/zod-error-map.js"]
  1ca4a691_7c9c_3b68_cd08_fd2967c8ae18 --> 2c2ad99c_ec0d_bae1_2956_a019f5b6a543
  c6e6d952_1368_2c1c_2f3a_ad92a305600b["../../dist/zod.js"]
  1ca4a691_7c9c_3b68_cd08_fd2967c8ae18 --> c6e6d952_1368_2c1c_2f3a_ad92a305600b
  0a624eac_945e_c9e8_c9de_3feb9de2dd15["test-utils.js"]
  1ca4a691_7c9c_3b68_cd08_fd2967c8ae18 --> 0a624eac_945e_c9e8_c9de_3feb9de2dd15
  beb21e0a_5a04_1aeb_f065_5ab6c5ffe2ea["fixLineEndings"]
  1ca4a691_7c9c_3b68_cd08_fd2967c8ae18 --> beb21e0a_5a04_1aeb_f065_5ab6c5ffe2ea
  e1e2fac7_5a95_7a88_cb1e_0a3b91c4e607["strict"]
  1ca4a691_7c9c_3b68_cd08_fd2967c8ae18 --> e1e2fac7_5a95_7a88_cb1e_0a3b91c4e607
  6b0635f9_51ea_77aa_767b_7857878e98a6["node:test"]
  1ca4a691_7c9c_3b68_cd08_fd2967c8ae18 --> 6b0635f9_51ea_77aa_767b_7857878e98a6
  style 1ca4a691_7c9c_3b68_cd08_fd2967c8ae18 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import * as assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import { errorMap } from '../dist/core/errors/zod-error-map.js';
import { z } from '../dist/zod.js';
import { fixLineEndings } from './test-utils.js';

describe('Content Collections - error map', () => {
	it('Returns formatted error for type mismatch', () => {
		const error = getParseError(
			z.object({
				foo: z.string(),
			}),
			{ foo: 1 },
		);
		assert.deepEqual(messages(error), ['**foo**: Expected type `"string"`, received `"number"`']);
	});
	it('Returns formatted error for literal mismatch', () => {
		const error = getParseError(
			z.object({
				lang: z.literal('en'),
			}),
			{ lang: 'es' },
		);
		assert.deepEqual(messages(error), ['Invalid input: expected "en"']);
	});
	it('Replaces undefined errors with "Required"', () => {
		const error = getParseError(
			z.object({
				foo: z.string(),
				bar: z.string(),
			}),
			{ foo: 'foo' },
		);
		assert.deepEqual(messages(error), ['**bar**: Required']);
	});
	it('Returns formatted error for basic union mismatch', () => {
		const error = getParseError(
			z.union([z.boolean(), z.number()]),
			'not a boolean or a number, oops!',
		);
		assert.deepEqual(messages(error), [
			fixLineEndings('Did not match union.\n> Expected type `"boolean"`, received `"string"`'),
		]);
	});
	it('Returns formatted error for union mismatch on nested object properties', () => {
		const error = getParseError(
			z.union([
				z.object({
					type: z.literal('tutorial'),
				}),
				z.object({
					type: z.literal('article'),
				}),
			]),
			{ type: 'integration-guide' },
		);
		assert.deepEqual(messages(error), [
			fixLineEndings(
				'Did not match union.\n' +
					'> Expected type `"tutorial" | "article"`\n' +
					'> Received `{ "type": "integration-guide" }`',
			),
		]);
	});
	it('Lets unhandled errors fall through', () => {
		const error = getParseError(
			z.object({
				lang: z.enum(['en', 'fr']),
			}),
			{ lang: 'jp' },
		);
		assert.deepEqual(messages(error), [`Invalid option: expected one of "en"|"fr"`]);
	});
});

/**
 * @param {z.ZodError} error
 * @returns string[]
 */
function messages(error) {
	return error.issues.map((e) => e.message);
}

function getParseError(schema, entry, parseOpts = { error: errorMap }) {
	const res = schema.safeParse(entry, parseOpts);
	assert.equal(res.success, false, 'Schema should raise error');
	return res.error;
}

Subdomains

Dependencies

Frequently Asked Questions

What does error-map.test.js do?
error-map.test.js is a source file in the astro codebase, written in javascript. It belongs to the IntegrationAdapters domain, SsrAdapters subdomain.
What functions are defined in error-map.test.js?
error-map.test.js defines 2 function(s): getParseError, messages.
What does error-map.test.js depend on?
error-map.test.js imports 6 module(s): ../../dist/zod.js, ../dist/core/errors/zod-error-map.js, fixLineEndings, node:test, strict, test-utils.js.
Where is error-map.test.js in the architecture?
error-map.test.js is located at packages/astro/test/error-map.test.js (domain: IntegrationAdapters, subdomain: SsrAdapters, directory: packages/astro/test).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free