code: def test_initialization(self):
      runtime_variables = ["var1", "var2"]
      builder = DynamicPromptBuilder(runtime_variables)
      assert builder.runtime_variables == runtime_variables
  
      # regardless of the chat mode
      # we have inputs that contain: prompt_source, template_variables + runtime_variables
      expected_keys = set(
          runtime_variables + ["prompt_source", "template_variables"]
      )
      assert set(builder.__canals_input__.keys()) == expected_keys
  
      # response is always prompt regardless of chat mode
      assert set(builder.__canals_output__.keys()) == {"prompt"}
  
      # prompt_source is a list of ChatMessage or a string
      assert builder.__canals_input__["prompt_source"].type == str
  
      # output is always prompt, but the type is different depending on the chat mode
      assert builder.__canals_output__["prompt"].type == str
  
file_path: haystack/test/components/builders/test_dynamic_prompt_builder.py
imports: from typing import List
  import pytest
  from jinja2 import TemplateSyntaxError
  from haystack import component, Document, Pipeline
  from haystack.components.builders import DynamicPromptBuilder
label_desc: Use image node_id 1 for calling the TestDynamicPromptBuilder obj's underlying member method code with example usage: obj.test_initialization() without return types