Merge pull request #224 from koic/extract_annotations_from_mcp

Extract `MCP::Annotations` into a dedicated file
This commit is contained in:
Koichi ITO 2026-02-10 02:30:42 +09:00 • committed by GitHub
commit c11393f4c4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 81 additions and 9 deletions

View file

@ -1,6 +1,7 @@
# frozen_string_literal: true
require_relative "json_rpc_handler"
require_relative "mcp/annotations"
require_relative "mcp/configuration"
require_relative "mcp/content"
require_relative "mcp/icon"
@ -39,13 +40,4 @@ module MCP
@configuration ||= Configuration.new
end
end
class Annotations
attr_reader :audience, :priority
def initialize(audience: nil, priority: nil)
@audience = audience
@priority = priority
end
end
end

21
lib/mcp/annotations.rb Normal file
View 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

View 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