Skip to content

Commit 248c1ec

Browse files
authored
Merge pull request #220 from koic/fix_resource_embedded_not_setting_resource_in_initialize
Fix `Resource::Embedded` not setting `@resource` in `initialize`
2 parents 0ab77c3 + 05c0119 commit 248c1ec

File tree

2 files changed

+108
-0
lines changed

2 files changed

+108
-0
lines changed

lib/mcp/resource/embedded.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ class Embedded
66
attr_reader :resource, :annotations
77

88
def initialize(resource:, annotations: nil)
9+
@resource = resource
910
@annotations = annotations
1011
end
1112

test/mcp/resource/embedded_test.rb

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# frozen_string_literal: true
2+
3+
require "test_helper"
4+
5+
module MCP
6+
class Resource
7+
class EmbeddedTest < ActiveSupport::TestCase
8+
test "initializes with resource" do
9+
resource = Resource.new(
10+
uri: "file:///test.txt",
11+
name: "test_resource",
12+
description: "a test resource",
13+
)
14+
embedded = Resource::Embedded.new(resource: resource)
15+
16+
assert_equal resource, embedded.resource
17+
end
18+
19+
test "initializes with resource and annotations" do
20+
resource = Resource.new(
21+
uri: "file:///test.txt",
22+
name: "test_resource",
23+
description: "a test resource",
24+
)
25+
annotations = { audience: ["user"], priority: 1.0 }
26+
embedded = Resource::Embedded.new(resource: resource, annotations: annotations)
27+
28+
assert_equal resource, embedded.resource
29+
assert_equal annotations, embedded.annotations
30+
end
31+
32+
test "initializes with annotations as nil when not provided" do
33+
resource = Resource.new(
34+
uri: "file:///test.txt",
35+
name: "test_resource",
36+
description: "a test resource",
37+
)
38+
embedded = Resource::Embedded.new(resource: resource)
39+
40+
assert_nil embedded.annotations
41+
end
42+
43+
test "#to_h returns hash with resource data when annotations is nil" do
44+
resource = Resource.new(
45+
uri: "file:///test.txt",
46+
name: "test_resource",
47+
description: "a test resource",
48+
)
49+
embedded = Resource::Embedded.new(resource: resource)
50+
51+
expected = {
52+
resource: {
53+
uri: "file:///test.txt",
54+
name: "test_resource",
55+
description: "a test resource",
56+
},
57+
}
58+
59+
assert_equal expected, embedded.to_h
60+
end
61+
62+
test "#to_h returns hash with resource and annotations when both are present" do
63+
resource = Resource.new(
64+
uri: "file:///test.txt",
65+
name: "test_resource",
66+
description: "a test resource",
67+
)
68+
annotations = { audience: ["user"], priority: 1.0 }
69+
embedded = Resource::Embedded.new(resource: resource, annotations: annotations)
70+
71+
expected = {
72+
resource: {
73+
uri: "file:///test.txt",
74+
name: "test_resource",
75+
description: "a test resource",
76+
},
77+
annotations: { audience: ["user"], priority: 1.0 },
78+
}
79+
80+
assert_equal expected, embedded.to_h
81+
end
82+
83+
test "#to_h handles resource with all optional fields" do
84+
resource = Resource.new(
85+
uri: "file:///test.txt",
86+
name: "test_resource",
87+
title: "Test Resource",
88+
description: "a test resource",
89+
mime_type: "text/plain",
90+
)
91+
embedded = Resource::Embedded.new(resource: resource)
92+
93+
expected = {
94+
resource: {
95+
uri: "file:///test.txt",
96+
name: "test_resource",
97+
title: "Test Resource",
98+
description: "a test resource",
99+
mimeType: "text/plain",
100+
},
101+
}
102+
103+
assert_equal expected, embedded.to_h
104+
end
105+
end
106+
end
107+
end

0 commit comments

Comments
 (0)