Skip to content

Commit 512fe27

Browse files
committed
feat: add pipeline template resource method tests
1 parent 5e13e70 commit 512fe27

1 file changed

Lines changed: 152 additions & 0 deletions

File tree

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
import pytest
2+
3+
from deepset_mcp.api.pipeline_template.models import PipelineTemplate
4+
from deepset_mcp.api.pipeline_template.resource import PipelineTemplateResource
5+
from .test_pipeline_template_resource import create_sample_template, DummyClient
6+
7+
8+
class TestPipelineTemplateResource:
9+
"""Tests for the PipelineTemplateResource class."""
10+
11+
@pytest.fixture
12+
def dummy_client(self) -> DummyClient:
13+
"""Return a basic DummyClient instance."""
14+
return DummyClient()
15+
16+
@pytest.fixture
17+
def template_resource(self, dummy_client: DummyClient) -> PipelineTemplateResource:
18+
"""Return a PipelineTemplateResource instance with a dummy client."""
19+
return PipelineTemplateResource(client=dummy_client, workspace="test-workspace")
20+
21+
@pytest.mark.asyncio
22+
async def test_get_template_success(self) -> None:
23+
"""Test getting a template by name successfully."""
24+
# Create sample template data
25+
template_name = "test-template"
26+
sample_template = create_sample_template(name=template_name)
27+
28+
# Create client with predefined response
29+
client = DummyClient(
30+
responses={
31+
f"test-workspace/pipeline_templates/{template_name}": sample_template
32+
}
33+
)
34+
35+
# Create resource and call get method
36+
resource = PipelineTemplateResource(client=client, workspace="test-workspace")
37+
result = await resource.get_template(template_name=template_name)
38+
39+
# Verify results
40+
assert isinstance(result, PipelineTemplate)
41+
assert result.template_name == template_name
42+
assert result.pipeline_type == "query"
43+
assert result.yaml_content == sample_template["query_yaml"]
44+
assert result.description == "A test template"
45+
assert len(result.tags) == 1
46+
47+
# Verify request
48+
assert len(client.requests) == 1
49+
assert client.requests[0]["endpoint"] == f"v1/workspaces/test-workspace/pipeline_templates/{template_name}"
50+
assert client.requests[0]["method"] == "GET"
51+
52+
@pytest.mark.asyncio
53+
async def test_get_template_not_found(self) -> None:
54+
"""Test getting a non-existent template."""
55+
# Create client that raises an exception
56+
client = DummyClient(
57+
responses={"test-workspace/pipeline_templates/nonexistent": ValueError("Template not found")}
58+
)
59+
60+
# Create resource
61+
resource = PipelineTemplateResource(client=client, workspace="test-workspace")
62+
63+
# Verify exception is raised
64+
with pytest.raises(ValueError, match="Template not found"):
65+
await resource.get_template(template_name="nonexistent")
66+
67+
@pytest.mark.asyncio
68+
async def test_list_templates_default_params(self) -> None:
69+
"""Test listing templates with default parameters."""
70+
# Create sample data
71+
sample_templates = [
72+
create_sample_template(name="Template 1", template_id="1fa85f64-5717-4562-b3fc-2c963f66afa6"),
73+
create_sample_template(name="Template 2", template_id="2fa85f64-5717-4562-b3fc-2c963f66afa6"),
74+
]
75+
76+
# Create client with predefined response
77+
client = DummyClient(
78+
responses={
79+
"test-workspace/pipeline_templates?limit=100&page_number=1&field=created_at&order=DESC": {
80+
"data": sample_templates,
81+
"has_more": False,
82+
"total": 2,
83+
}
84+
}
85+
)
86+
87+
# Create resource and call list method
88+
resource = PipelineTemplateResource(client=client, workspace="test-workspace")
89+
result = await resource.list_templates()
90+
91+
# Verify results
92+
assert len(result) == 2
93+
assert isinstance(result[0], PipelineTemplate)
94+
assert result[0].template_name == "Template 1"
95+
assert result[1].template_name == "Template 2"
96+
97+
# Verify request
98+
assert len(client.requests) == 1
99+
assert client.requests[0]["endpoint"] == "v1/workspaces/test-workspace/pipeline_templates?limit=100&page_number=1&field=created_at&order=DESC"
100+
assert client.requests[0]["method"] == "GET"
101+
102+
@pytest.mark.asyncio
103+
async def test_list_templates_custom_limit(self) -> None:
104+
"""Test listing templates with custom limit."""
105+
# Create sample data
106+
sample_templates = [
107+
create_sample_template(name="Template 1", template_id="1fa85f64-5717-4562-b3fc-2c963f66afa6"),
108+
]
109+
110+
# Create client with predefined response
111+
client = DummyClient(
112+
responses={
113+
"test-workspace/pipeline_templates?limit=1&page_number=1&field=created_at&order=DESC": {
114+
"data": sample_templates,
115+
"has_more": True,
116+
"total": 2,
117+
}
118+
}
119+
)
120+
121+
# Create resource and call list method with custom limit
122+
resource = PipelineTemplateResource(client=client, workspace="test-workspace")
123+
result = await resource.list_templates(limit=1)
124+
125+
# Verify results
126+
assert len(result) == 1
127+
assert isinstance(result[0], PipelineTemplate)
128+
assert result[0].template_name == "Template 1"
129+
130+
# Verify request
131+
assert client.requests[0]["endpoint"] == "v1/workspaces/test-workspace/pipeline_templates?limit=1&page_number=1&field=created_at&order=DESC"
132+
133+
@pytest.mark.asyncio
134+
async def test_list_templates_empty_result(self) -> None:
135+
"""Test listing templates when there are no templates."""
136+
# Create client with empty response
137+
client = DummyClient(
138+
responses={
139+
"test-workspace/pipeline_templates?limit=100&page_number=1&field=created_at&order=DESC": {
140+
"data": [],
141+
"has_more": False,
142+
"total": 0
143+
}
144+
}
145+
)
146+
147+
# Create resource and call list method
148+
resource = PipelineTemplateResource(client=client, workspace="test-workspace")
149+
result = await resource.list_templates()
150+
151+
# Verify empty results
152+
assert len(result) == 0

0 commit comments

Comments
 (0)