Merge pull request #224 from koic/extract_annotations_from_mcp
Extract `MCP::Annotations` into a dedicated file
This commit is contained in:
commit
c11393f4c4
3 changed files with 81 additions and 9 deletions
10
lib/mcp.rb
10
lib/mcp.rb
|
|
@ -1,6 +1,7 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "json_rpc_handler"
|
require_relative "json_rpc_handler"
|
||||||
|
require_relative "mcp/annotations"
|
||||||
require_relative "mcp/configuration"
|
require_relative "mcp/configuration"
|
||||||
require_relative "mcp/content"
|
require_relative "mcp/content"
|
||||||
require_relative "mcp/icon"
|
require_relative "mcp/icon"
|
||||||
|
|
@ -39,13 +40,4 @@ module MCP
|
||||||
@configuration ||= Configuration.new
|
@configuration ||= Configuration.new
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class Annotations
|
|
||||||
attr_reader :audience, :priority
|
|
||||||
|
|
||||||
def initialize(audience: nil, priority: nil)
|
|
||||||
@audience = audience
|
|
||||||
@priority = priority
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
21
lib/mcp/annotations.rb
Normal file
21
lib/mcp/annotations.rb
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module MCP
|
||||||
|
class Annotations
|
||||||
|
attr_reader :audience, :priority, :last_modified
|
||||||
|
|
||||||
|
def initialize(audience: nil, priority: nil, last_modified: nil)
|
||||||
|
@audience = audience
|
||||||
|
@priority = priority
|
||||||
|
@last_modified = last_modified
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_h
|
||||||
|
{
|
||||||
|
audience: audience,
|
||||||
|
priority: priority,
|
||||||
|
lastModified: last_modified,
|
||||||
|
}.compact
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
59
test/mcp/annotations_test.rb
Normal file
59
test/mcp/annotations_test.rb
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
module MCP
|
||||||
|
class AnnotationsTest < ActiveSupport::TestCase
|
||||||
|
def test_initialization
|
||||||
|
annotations = Annotations.new(audience: ["developers"], priority: 0.8)
|
||||||
|
|
||||||
|
assert_equal(["developers"], annotations.audience)
|
||||||
|
assert_equal(0.8, annotations.priority)
|
||||||
|
assert_nil(annotations.last_modified)
|
||||||
|
|
||||||
|
assert_equal({ audience: ["developers"], priority: 0.8 }, annotations.to_h)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_initialization_with_all_attributes
|
||||||
|
timestamp = Time.utc(2025, 1, 12, 15, 0, 58).iso8601
|
||||||
|
annotations = Annotations.new(audience: ["developers"], priority: 0.8, last_modified: timestamp)
|
||||||
|
|
||||||
|
assert_equal(["developers"], annotations.audience)
|
||||||
|
assert_equal(0.8, annotations.priority)
|
||||||
|
assert_equal(timestamp, annotations.last_modified)
|
||||||
|
|
||||||
|
assert_equal({ audience: ["developers"], priority: 0.8, lastModified: timestamp }, annotations.to_h)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_initialization_by_default
|
||||||
|
annotations = Annotations.new
|
||||||
|
|
||||||
|
assert_nil(annotations.audience)
|
||||||
|
assert_nil(annotations.priority)
|
||||||
|
assert_nil(annotations.last_modified)
|
||||||
|
|
||||||
|
assert_empty(annotations.to_h)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_initialization_with_partial_attributes
|
||||||
|
annotations = Annotations.new(audience: ["developers"])
|
||||||
|
|
||||||
|
assert_equal(["developers"], annotations.audience)
|
||||||
|
assert_nil(annotations.priority)
|
||||||
|
assert_nil(annotations.last_modified)
|
||||||
|
|
||||||
|
assert_equal({ audience: ["developers"] }, annotations.to_h)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_initialization_with_last_modified_only
|
||||||
|
timestamp = Time.utc(2025, 1, 12, 15, 0, 58).iso8601
|
||||||
|
annotations = Annotations.new(last_modified: timestamp)
|
||||||
|
|
||||||
|
assert_nil(annotations.audience)
|
||||||
|
assert_nil(annotations.priority)
|
||||||
|
assert_equal(timestamp, annotations.last_modified)
|
||||||
|
|
||||||
|
assert_equal({ lastModified: timestamp }, annotations.to_h)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Reference in a new issue