import base64 from datetime import datetime, timedelta from custom_components.irm_kmi.data import (AnimationFrameData, RadarAnimationData) from custom_components.irm_kmi.rain_graph import RainGraph def get_radar_animation_data() -> RadarAnimationData: with open("tests/fixtures/clouds_be.png", "rb") as file: image_data = file.read() with open("tests/fixtures/loc_layer_be_n.png", "rb") as file: location = file.read() sequence = [ AnimationFrameData( time=datetime.fromisoformat("2023-12-26T18:30:00+00:00") + timedelta(minutes=10 * i), image=image_data, value=2, position=.5, position_lower=.4, position_higher=.6 ) for i in range(10) ] return RadarAnimationData( sequence=sequence, most_recent_image_idx=2, hint="Testing SVG camera", unit="mm/10min", location=location ) async def test_svg_frame_setup(): data = get_radar_animation_data() rain_graph = RainGraph( animation_data=data, background_image_path="custom_components/irm_kmi/resources/be_white.png", background_size=(640, 490), ) await rain_graph.draw_svg_frame() svg_str = rain_graph.get_dwg().tostring() with open("custom_components/irm_kmi/resources/roboto_medium.ttf", "rb") as file: font_b64 = base64.b64encode(file.read()).decode('utf-8') assert '#385E95' in svg_str assert 'font-family: "Roboto Medium";' in svg_str assert font_b64 in svg_str def test_svg_hint(): data = get_radar_animation_data() rain_graph = RainGraph( animation_data=data, background_image_path="custom_components/irm_kmi/resources/be_white.png", background_size=(640, 490), ) rain_graph.write_hint() svg_str = rain_graph.get_dwg().tostring() assert "Testing SVG camera" in svg_str def test_svg_time_bars(): data = get_radar_animation_data() rain_graph = RainGraph( animation_data=data, background_image_path="custom_components/irm_kmi/resources/be_white.png", background_size=(640, 490), ) rain_graph.draw_hour_bars() svg_str = rain_graph.get_dwg().tostring() assert "19h" in svg_str assert "20h" in svg_str assert "