ClaudeCode.Test.Factory (ClaudeCode v0.16.0)

View Source

Test factories for ClaudeCode structs.

Provides simple factory functions with sensible defaults that accept keyword lists or maps for overrides.

Usage

import ClaudeCode.Test.Factory

# Create with defaults
text_block()

# Override with keywords
text_block(text: "custom text")

# Override with map
text_block(%{text: "custom text"})

# Compose factories
assistant_message(message: %{content: [text_block(text: "Hello")]})

Summary

Functions

Creates an AssistantMessage with default values.

Creates a CompactBoundaryMessage with default values.

Returns default usage map for messages

Generates a test message ID

Generates a test session ID

Generates a test signature

Generates a test tool ID

Generates a test UUID

Creates a PartialAssistantMessage (stream event) with default values.

Creates a ResultMessage with default values.

Creates a content_block_start stream event.

Creates a content_block_stop stream event.

Creates an input_json_delta stream event for tool use streaming.

Creates a message_delta stream event.

Creates a message_start stream event.

Creates a message_stop stream event.

Creates a complete sequence of stream events simulating a text response.

Creates a text delta stream event.

Creates a thinking_delta stream event for extended thinking streaming.

Creates a SystemMessage with default values.

Creates a TextBlock with default text.

Creates a TextBlock with the given text.

Creates a ThinkingBlock with default values.

Creates a ThinkingBlock with positional arguments.

Creates a ToolResultBlock with default values.

Creates a ToolResultBlock with positional arguments.

Creates a ToolUseBlock with default values.

Creates a ToolUseBlock with positional arguments.

Generates a unique numeric ID

Creates a UserMessage with default values.

Functions

assistant_message(attrs \\ [])

Creates an AssistantMessage with default values.

The nested message field can be overridden with a map.

assistant_message()
assistant_message(message: %{content: [text_block()]})
assistant_message(session_id: "custom-session")

compact_boundary_message(attrs \\ [])

Creates a CompactBoundaryMessage with default values.

compact_boundary_message()
compact_boundary_message(compact_metadata: %{trigger: "auto", pre_tokens: 5000})

default_usage()

Returns default usage map for messages

generate_message_id()

Generates a test message ID

generate_session_id()

Generates a test session ID

generate_signature()

Generates a test signature

generate_tool_id()

Generates a test tool ID

generate_uuid()

Generates a test UUID

partial_message(attrs \\ [])

Creates a PartialAssistantMessage (stream event) with default values.

partial_message()
partial_message(event: %{type: :content_block_delta, delta: %{type: :text_delta, text: "Hi"}})

result_message(attrs \\ [])

Creates a ResultMessage with default values.

result_message()
result_message(result: "Task completed", is_error: false)
result_message(is_error: true, subtype: :error_during_execution)

stream_event_content_block_start(attrs \\ %{})

Creates a content_block_start stream event.

stream_event_content_block_start()
stream_event_content_block_start(%{index: 0, content_block: %{type: :text, text: ""}})

stream_event_content_block_stop(attrs \\ %{})

Creates a content_block_stop stream event.

stream_event_content_block_stop()
stream_event_content_block_stop(%{index: 0})

stream_event_input_json_delta(partial_json, attrs \\ %{})

Creates an input_json_delta stream event for tool use streaming.

stream_event_input_json_delta("{"path":")
stream_event_input_json_delta(""/test.txt"}", %{index: 1})

stream_event_message_delta(attrs \\ %{})

Creates a message_delta stream event.

stream_event_message_delta()
stream_event_message_delta(%{delta: %{stop_reason: "end_turn"}})

stream_event_message_start(attrs \\ %{})

Creates a message_start stream event.

stream_event_message_start()
stream_event_message_start(%{message: %{id: "msg_123"}})

stream_event_message_stop(attrs \\ %{})

Creates a message_stop stream event.

stream_event_message_stop()

stream_event_sequence(text_chunks)

Creates a complete sequence of stream events simulating a text response.

stream_event_sequence(["Hello", " ", "World!"])

stream_event_text_delta(text, attrs \\ %{})

Creates a text delta stream event.

stream_event_text_delta("Hello")
stream_event_text_delta("world", %{index: 0})

stream_event_thinking_delta(thinking, attrs \\ %{})

Creates a thinking_delta stream event for extended thinking streaming.

stream_event_thinking_delta("Let me reason...")
stream_event_thinking_delta("more reasoning", %{index: 0})

system_message(attrs \\ [])

Creates a SystemMessage with default values.

system_message()
system_message(model: "claude-opus-4-20250514")

text_block(attrs \\ [])

Creates a TextBlock with default text.

text_block()
text_block(text: "custom text")

text_content(text)

Creates a TextBlock with the given text.

text_content("Hello world")

text_delta(text)

thinking_block(attrs \\ [])

Creates a ThinkingBlock with default values.

thinking_block()
thinking_block(thinking: "Let me analyze this...")

thinking_content(thinking, signature \\ nil)

Creates a ThinkingBlock with positional arguments.

thinking_content("Let me reason through this...")
thinking_content("Reasoning...", "sig_abc123")

thinking_delta(thinking)

tool_result_block(attrs \\ [])

Creates a ToolResultBlock with default values.

tool_result_block()
tool_result_block(content: "file contents", is_error: false)

tool_result_content(content, tool_use_id \\ nil, is_error \\ false)

Creates a ToolResultBlock with positional arguments.

tool_result_content("file contents")
tool_result_content("file contents", "tool_123")
tool_result_content("error message", "tool_123", true)

tool_use_block(attrs \\ [])

Creates a ToolUseBlock with default values.

tool_use_block()
tool_use_block(name: "Bash", input: %{command: "ls"})

tool_use_content(name, input, id \\ nil)

Creates a ToolUseBlock with positional arguments.

tool_use_content("Read", %{path: "/tmp/file.txt"})
tool_use_content("Read", %{path: "/tmp/file.txt"}, "tool_123")

unique_id()

Generates a unique numeric ID

user_message(attrs \\ [])

Creates a UserMessage with default values.

user_message()
user_message(message: %{content: [tool_result_block()]})