Skip to content

testing

Variables

irb

const irb: object;

Intermediate Representation Builder — a collection of test factory functions for constructing well-formed IR nodes with sensible defaults.

Use irb in unit tests to create IrSchema, TypeDef, EnumDef, ConstantDef, Field, TypeRef, LiteralValue, Annotation, and other IR structures without manually supplying every required property.

Type Declaration

annotation()
annotation(name, argument?): Annotation;

Creates an Annotation with the given name and an optional literal argument.

Parameters
name

string

Annotation name without the @ prefix.

argument?

LiteralValue

Optional literal argument attached to the annotation.

Returns

Annotation

An Annotation with a default position.

Example
irb.annotation("minLength", irb.intLiteral(3));
// returns an annotation named "minLength" with an int literal argument
arrayLiteral()
arrayLiteral(items): LiteralValue;

Creates an array LiteralValue from a list of literal items.

Parameters
items

LiteralValue[]

Literal items to include.

Returns

LiteralValue

An array literal node.

Example
irb.arrayLiteral([irb.stringLiteral("a"), irb.stringLiteral("b")]);
// returns a LiteralValue with kind "array"
arrayType()
arrayType(type, dims?): TypeRef;

Creates an array TypeRef wrapping the given element type.

Parameters
type

TypeRef

Element type stored inside the array.

dims?

number = 1

Number of array dimensions (defaults to 1).

Returns

TypeRef

An array TypeRef.

Example
irb.arrayType(irb.primitiveType("string"), 2);
// returns a two-dimensional array TypeRef
boolLiteral()
boolLiteral(value): LiteralValue;

Creates a boolean LiteralValue.

Parameters
value

boolean

Boolean value to store.

Returns

LiteralValue

A boolean literal node.

Example
irb.boolLiteral(true);
// returns a LiteralValue with kind "bool"
constantDef()
constantDef(
   name, 
   typeRef, 
   value, 
   overrides?): ConstantDef;

Creates a ConstantDef with the given name, type, and literal value.

Pass overrides to set annotations or doc.

Parameters
name

string

Constant name.

typeRef

TypeRef

Constant type reference.

value

LiteralValue

Constant literal value.

overrides?

Partial\<Omit\<ConstantDef, "position" | "annotations" | "typeRef" | "value" | "name">> & object = {}

Optional constant overrides.

Returns

ConstantDef

A ConstantDef with defaults applied.

Example
irb.constantDef("ApiVersion", irb.primitiveType("string"), irb.stringLiteral("v1"));
// returns a constant definition named "ApiVersion"
enumDef()
enumDef(
   name, 
   enumValueType, 
   members, 
   overrides?): EnumDef;

Creates an EnumDef with the given name, value type, and members.

Pass overrides to set annotations or doc.

Parameters
name

string

Enum name.

enumValueType

EnumValueType

Underlying enum storage type.

members

EnumMember[]

Enum members.

overrides?

Partial\<Omit\<EnumDef, "position" | "annotations" | "enumType" | "members" | "name">> & object = {}

Optional enum overrides.

Returns

EnumDef

An EnumDef with defaults applied.

Example
irb.enumDef("Role", "string", [
  irb.enumMember("ADMIN", irb.stringLiteral("admin")),
]);
// returns an enum definition named "Role"
enumMember()
enumMember(
   name, 
   value, 
   overrides?): EnumMember;

Creates an EnumMember with the given name and literal value.

Pass overrides to set annotations or doc.

Parameters
name

string

Enum member name.

value

LiteralValue

Enum member literal value.

overrides?

Partial\<Omit\<EnumMember, "position" | "annotations" | "value" | "name">> & object = {}

Optional member overrides.

Returns

EnumMember

An EnumMember with defaults applied.

Example
irb.enumMember("ADMIN", irb.stringLiteral("admin"));
// returns an enum member named "ADMIN"
enumType()
enumType(name, enumType): TypeRef;

Creates a TypeRef that references a named enum type.

Parameters
name

string

Referenced enum name.

enumType

EnumValueType

Underlying enum storage type.

Returns

TypeRef

An enum type reference.

Example
irb.enumType("Role", "string");
// returns a TypeRef with kind "enum"
field()
field(
   name, 
   typeRef, 
   overrides?): Field;

Creates a Field with the given name and type.

Pass overrides to set optional, annotations, or doc.

Parameters
name

string

Field name.

typeRef

TypeRef

Field type reference.

overrides?

Partial\<Omit\<Field, "position" | "annotations" | "typeRef" | "name" | "optional">> & object = {}

Optional field overrides.

Returns

Field

A Field with defaults applied.

Example
irb.field("id", irb.primitiveType("string"), { optional: true });
// returns a Field named "id" marked as optional
floatLiteral()
floatLiteral(value): LiteralValue;

Creates a float LiteralValue.

Parameters
value

number

Floating-point value to store.

Returns

LiteralValue

A float literal node.

Example
irb.floatLiteral(3.14);
// returns a LiteralValue with kind "float"
intLiteral()
intLiteral(value): LiteralValue;

Creates an integer LiteralValue.

Parameters
value

number

Integer value to store.

Returns

LiteralValue

An integer literal node.

Example
irb.intLiteral(42);
// returns a LiteralValue with kind "int"
mapType()
mapType(type): TypeRef;

Creates a map TypeRef whose value type is type.

Parameters
type

TypeRef

Value type stored in the map.

Returns

TypeRef

A map TypeRef.

Example
irb.mapType(irb.namedType("User"));
// returns a TypeRef with kind "map"
namedType()
namedType(name): TypeRef;

Creates a TypeRef that references a named user-defined type.

Parameters
name

string

Referenced type name.

Returns

TypeRef

A named type reference.

Example
irb.namedType("User");
// returns a TypeRef with kind "type"
objectLiteral()
objectLiteral(entries): LiteralValue;

Creates an object LiteralValue from a plain key/value record.

Parameters
entries

Record\<string, LiteralValue>

Object entries keyed by property name.

Returns

LiteralValue

An object literal node.

Example
irb.objectLiteral({ enabled: irb.boolLiteral(true) });
// returns a LiteralValue with kind "object"
objectType()
objectType(fields): TypeRef;

Creates an inline object TypeRef with the given fields.

Parameters
fields

Field[]

Inline object fields.

Returns

TypeRef

An object TypeRef.

Example
irb.objectType([irb.field("id", irb.primitiveType("string"))]);
// returns a TypeRef with kind "object"
pluginInput()
pluginInput(overrides?): PluginInput;

Creates a PluginInput with a default version, empty options, and an empty schema.

Pass overrides to customize any field.

Parameters
overrides?

Partial\<PluginInput> = {}

Plugin input fields to override.

Returns

PluginInput

A ready-to-use PluginInput for tests.

Example
irb.pluginInput({
  options: { prefix: "Api" },
});
// returns a PluginInput with default version and schema
position()
position(overrides?): Position;

Creates a Position with sensible defaults.

Pass overrides to customize specific fields.

Parameters
overrides?

Partial\<Position> = {}

Position fields to override.

Returns

Position

A fully populated Position.

Example
irb.position({ file: "user.vdl", line: 10 });
// returns { file: "user.vdl", line: 10, column: 1 }
primitiveType()
primitiveType(name): TypeRef;

Creates a primitive TypeRef (e.g. string, int, bool).

Parameters
name

PrimitiveType

Primitive type name.

Returns

TypeRef

A primitive TypeRef.

Example
irb.primitiveType("string");
// returns a TypeRef with kind "primitive"
schema()
schema(overrides?): IrSchema;

Creates an IrSchema with empty collections.

Pass overrides to populate constants, enums, types, or docs.

Parameters
overrides?

Partial\<IrSchema> = {}

Schema fields to override.

Returns

IrSchema

An IrSchema with sensible defaults.

Example
irb.schema({
  types: [irb.typeDef("UserId", irb.primitiveType("string"))],
});
// returns a schema containing one typedef
stringLiteral()
stringLiteral(value): LiteralValue;

Creates a string LiteralValue.

Parameters
value

string

String content to store.

Returns

LiteralValue

A string literal node.

Example
irb.stringLiteral("hello");
// returns a LiteralValue with kind "string"
typeDef()
typeDef(
   name, 
   typeRef, 
   overrides?): TypeDef;

Creates a TypeDef with the given name and underlying type.

Pass overrides to set annotations or doc.

Parameters
name

string

Type definition name.

typeRef

TypeRef

Underlying type reference.

overrides?

Partial\<Omit\<TypeDef, "position" | "annotations" | "typeRef" | "name">> & object = {}

Optional typedef overrides.

Returns

TypeDef

A TypeDef with defaults applied.

Example
irb.typeDef("UserId", irb.primitiveType("string"));
// returns a typedef named "UserId"

Example

const input = irb.pluginInput({
  ir: irb.schema({
    types: [
      irb.typeDef("MyType", irb.primitiveType("string"))
    ],
  }),
});