64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
"""Test to verify that Home Assistant exceptions work."""
 | 
						|
from __future__ import annotations
 | 
						|
 | 
						|
import pytest
 | 
						|
 | 
						|
from homeassistant.exceptions import (
 | 
						|
    ConditionErrorContainer,
 | 
						|
    ConditionErrorIndex,
 | 
						|
    ConditionErrorMessage,
 | 
						|
    TemplateError,
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
def test_conditionerror_format() -> None:
 | 
						|
    """Test ConditionError stringifiers."""
 | 
						|
    error1 = ConditionErrorMessage("test", "A test error")
 | 
						|
    assert str(error1) == "In 'test' condition: A test error"
 | 
						|
 | 
						|
    error2 = ConditionErrorMessage("test", "Another error")
 | 
						|
    assert str(error2) == "In 'test' condition: Another error"
 | 
						|
 | 
						|
    error_pos1 = ConditionErrorIndex("box", index=0, total=2, error=error1)
 | 
						|
    assert (
 | 
						|
        str(error_pos1)
 | 
						|
        == """In 'box' (item 1 of 2):
 | 
						|
  In 'test' condition: A test error"""
 | 
						|
    )
 | 
						|
 | 
						|
    error_pos2 = ConditionErrorIndex("box", index=1, total=2, error=error2)
 | 
						|
    assert (
 | 
						|
        str(error_pos2)
 | 
						|
        == """In 'box' (item 2 of 2):
 | 
						|
  In 'test' condition: Another error"""
 | 
						|
    )
 | 
						|
 | 
						|
    error_container1 = ConditionErrorContainer("box", errors=[error_pos1, error_pos2])
 | 
						|
    assert (
 | 
						|
        str(error_container1)
 | 
						|
        == """In 'box' (item 1 of 2):
 | 
						|
  In 'test' condition: A test error
 | 
						|
In 'box' (item 2 of 2):
 | 
						|
  In 'test' condition: Another error"""
 | 
						|
    )
 | 
						|
 | 
						|
    error_pos3 = ConditionErrorIndex("box", index=0, total=1, error=error1)
 | 
						|
    assert (
 | 
						|
        str(error_pos3)
 | 
						|
        == """In 'box':
 | 
						|
  In 'test' condition: A test error"""
 | 
						|
    )
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    "arg, expected",
 | 
						|
    [
 | 
						|
        ("message", "message"),
 | 
						|
        (Exception("message"), "Exception: message"),
 | 
						|
    ],
 | 
						|
)
 | 
						|
def test_template_message(arg: str | Exception, expected: str) -> None:
 | 
						|
    """Ensure we can create TemplateError."""
 | 
						|
    template_error = TemplateError(arg)
 | 
						|
    assert str(template_error) == expected
 |