mirror of
https://github.com/deepset-ai/haystack.git
synced 2025-07-03 23:19:20 +00:00
64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
# SPDX-FileCopyrightText: 2022-present deepset GmbH <info@deepset.ai>
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
import tempfile
|
|
from unittest import mock
|
|
|
|
import pytest
|
|
|
|
from haystack import Pipeline
|
|
from haystack.core.pipeline.template import PipelineTemplate, PredefinedPipeline
|
|
|
|
|
|
@pytest.fixture
|
|
def random_valid_template():
|
|
template = """
|
|
components:
|
|
generator:
|
|
{{ generator | indent }}
|
|
|
|
prompt_builder:
|
|
{{ prompt_builder | indent }}
|
|
|
|
connections:
|
|
- receiver: generator.prompt
|
|
sender: prompt_builder.prompt
|
|
"""
|
|
return template
|
|
|
|
|
|
class TestPipelineTemplate:
|
|
def test_from_str(self):
|
|
with pytest.raises(ValueError):
|
|
PipelineTemplate("{{ invalid template }")
|
|
|
|
assert PipelineTemplate("{{ valid_template }}").template_content == "{{ valid_template }}"
|
|
|
|
def test_from_file(self, random_valid_template):
|
|
with pytest.raises(FileNotFoundError):
|
|
PipelineTemplate.from_file("invalid/path")
|
|
|
|
with tempfile.NamedTemporaryFile(mode="w", delete=False) as fp:
|
|
fp.write(random_valid_template)
|
|
fp.seek(0)
|
|
assert PipelineTemplate.from_file(fp.name).template_content == random_valid_template
|
|
|
|
def test_from_predefined(self):
|
|
tpl = PipelineTemplate.from_predefined(PredefinedPipeline.INDEXING)
|
|
assert len(tpl.template_content)
|
|
|
|
# Building a pipeline directly using all default components specified in a predefined or custom template.
|
|
def test_build_pipeline_with_default_components(self, monkeypatch):
|
|
monkeypatch.setenv("OPENAI_API_KEY", "fake_key")
|
|
rendered = PipelineTemplate.from_predefined(PredefinedPipeline.INDEXING).render()
|
|
pipeline = Pipeline.loads(rendered)
|
|
|
|
# pipeline has components
|
|
assert pipeline.get_component("cleaner")
|
|
assert pipeline.get_component("writer")
|
|
assert pipeline.get_component("embedder")
|
|
|
|
# pipeline should have inputs and outputs
|
|
assert len(pipeline.inputs()) > 0
|
|
assert len(pipeline.outputs()) > 0
|