defmodule ImageToolsTest do use ExUnit.Case import ExUnit.CaptureIO @test_image File.read!(Path.join(__DIR__, "assets/sample.jpg")) test "create_thumbnail/4 creates a thumbnail successfully" do assert {:ok, binary} = ImageTools.create_thumbnail(@test_image, 320, 240) assert is_binary(binary) end test "create_thumbnail/4 handles quality option" do assert {:ok, binary} = ImageTools.create_thumbnail(@test_image, 320, 240, quality: 50) assert is_binary(binary) end test "create_thumbnail/4 handles target_size option" do assert {:ok, binary} = ImageTools.create_thumbnail(@test_image, 320, 240, target_size: 12_000) assert is_binary(binary) end test "create_thumbnail/4 handles invalid input" do assert {:error, "width must be > 0"} = ImageTools.create_thumbnail(@test_image, 0, 240) assert {:error, "height must be > 0"} = ImageTools.create_thumbnail(@test_image, 320, 0) assert {:error, "quality must be >= 0"} = ImageTools.create_thumbnail(@test_image, 320, 240, quality: -1) assert {:error, "quality must be <= 100"} = ImageTools.create_thumbnail(@test_image, 320, 240, quality: 101) assert {:error, "target_size must be > 0"} = ImageTools.create_thumbnail(@test_image, 320, 240, target_size: 0) end end