@@ -19,6 +19,15 @@ def temp_file(tmp_path: Path):
1919 yield tmp_file
2020
2121
22+ def test_init_with_resource_templates ():
23+ def greet (name : str ) -> str :
24+ return f"Hello, { name } !"
25+
26+ template = ResourceTemplate .from_function (fn = greet , uri_template = "greet://{name}" , name = "greeter" )
27+ manager = ResourceManager (resource_templates = [template ])
28+ assert manager .list_templates () == [template ]
29+
30+
2231def test_init_with_resources (temp_file : Path , caplog : pytest .LogCaptureFixture ):
2332 resource = FileResource (uri = f"file://{ temp_file } " , name = "test" , path = temp_file )
2433 manager = ResourceManager (resources = [resource ])
@@ -89,7 +98,7 @@ def greet(name: str) -> str:
8998 return f"Hello, { name } !"
9099
91100 template = ResourceTemplate .from_function (fn = greet , uri_template = "greet://{name}" , name = "greeter" )
92- manager ._templates [ template . uri_template ] = template
101+ manager .add_resource_template ( template )
93102
94103 resource = await manager .get_resource (AnyUrl ("greet://world" ), Context ())
95104 assert isinstance (resource , FunctionResource )
@@ -122,6 +131,59 @@ def test_list_resources(temp_file: Path):
122131def get_item (id : str ) -> str : ...
123132
124133
134+ def test_add_resource_template ():
135+ """Test adding a resource template."""
136+ manager = ResourceManager ()
137+
138+ def greet (name : str ) -> str :
139+ return f"Hello, { name } !"
140+
141+ template = ResourceTemplate .from_function (fn = greet , uri_template = "greet://{name}" , name = "greeter" )
142+ added = manager .add_resource_template (template )
143+ assert added == template
144+ assert manager .list_templates () == [template ]
145+
146+
147+ def test_add_duplicate_resource_template ():
148+ """Test adding the same resource template twice."""
149+ manager = ResourceManager ()
150+
151+ def greet (name : str ) -> str :
152+ return f"Hello, { name } !"
153+
154+ template = ResourceTemplate .from_function (fn = greet , uri_template = "greet://{name}" , name = "greeter" )
155+ first = manager .add_resource_template (template )
156+ second = manager .add_resource_template (template )
157+ assert first == second
158+ assert manager .list_templates () == [template ]
159+
160+
161+ def test_warn_on_duplicate_resource_templates (caplog : pytest .LogCaptureFixture ):
162+ """Test warning on duplicate resource templates."""
163+ manager = ResourceManager ()
164+
165+ def greet (name : str ) -> str :
166+ return f"Hello, { name } !"
167+
168+ template = ResourceTemplate .from_function (fn = greet , uri_template = "greet://{name}" , name = "greeter" )
169+ manager .add_resource_template (template )
170+ manager .add_resource_template (template )
171+ assert "Resource template already exists" in caplog .text
172+
173+
174+ def test_disable_warn_on_duplicate_resource_templates (caplog : pytest .LogCaptureFixture ):
175+ """Test disabling warning on duplicate resource templates."""
176+ manager = ResourceManager (warn_on_duplicate_resources = False )
177+
178+ def greet (name : str ) -> str :
179+ return f"Hello, { name } !"
180+
181+ template = ResourceTemplate .from_function (fn = greet , uri_template = "greet://{name}" , name = "greeter" )
182+ manager .add_resource_template (template )
183+ manager .add_resource_template (template )
184+ assert "Resource template already exists" not in caplog .text
185+
186+
125187def test_add_template_with_metadata ():
126188 """Test that ResourceManager.add_template() accepts and passes meta parameter."""
127189 manager = ResourceManager ()
0 commit comments