Class: ModelContextProtocol::RSpec::Matchers::BeValidMcpClass

Inherits:
Object
  • Object
show all
Defined in:
lib/model_context_protocol/rspec/matchers/be_valid_mcp_class.rb

Constant Summary collapse

BASE_CLASSES =
{
  tool: ModelContextProtocol::Server::Tool,
  prompt: ModelContextProtocol::Server::Prompt,
  resource: ModelContextProtocol::Server::Resource,
  resource_template: ModelContextProtocol::Server::ResourceTemplate
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(expected_type) ⇒ BeValidMcpClass

Returns a new instance of BeValidMcpClass.



29
30
31
32
# File 'lib/model_context_protocol/rspec/matchers/be_valid_mcp_class.rb', line 29

def initialize(expected_type)
  @expected_type = expected_type
  @failure_reasons = []
end

Instance Method Details

#descriptionObject



52
53
54
# File 'lib/model_context_protocol/rspec/matchers/be_valid_mcp_class.rb', line 52

def description
  "be a valid MCP class#{type_constraint_message}"
end

#failure_messageObject



43
44
45
46
# File 'lib/model_context_protocol/rspec/matchers/be_valid_mcp_class.rb', line 43

def failure_message
  "expected #{@actual} to be a valid MCP class#{type_constraint_message}, but:\n" +
    @failure_reasons.map { |reason| "  - #{reason}" }.join("\n")
end

#failure_message_when_negatedObject



48
49
50
# File 'lib/model_context_protocol/rspec/matchers/be_valid_mcp_class.rb', line 48

def failure_message_when_negated
  "expected #{@actual} not to be a valid MCP class#{type_constraint_message}, but it was"
end

#matches?(actual) ⇒ Boolean

Returns:



34
35
36
37
38
39
40
41
# File 'lib/model_context_protocol/rspec/matchers/be_valid_mcp_class.rb', line 34

def matches?(actual)
  @actual = actual
  @failure_reasons = []

  validate_inheritance &&
    validate_name_defined &&
    validate_description_defined
end