Stub color extractor in tests

Makes the test suite much faster
This commit is contained in:
Claudio Ortolina
2026-03-26 22:58:39 +00:00
parent 152b3ddb70
commit e575f2af9e
5 changed files with 35 additions and 3 deletions
+9
View File
@@ -0,0 +1,9 @@
defmodule MusicLibrary.Colors.Extractor do
@moduledoc """
Behaviour that defines the functions necessary to implement a dominant colors
extractor.
"""
@callback extract_dominant_colors(binary(), pos_integer()) ::
{:ok, [String.t()]} | {:error, term()}
end
@@ -3,9 +3,11 @@ defmodule MusicLibrary.Colors.KMeansExtractor do
Extracts dominant colors from images using K-Means clustering via the dominant_colors library.
"""
@behaviour MusicLibrary.Colors.Extractor
alias Vix.Vips.Image
@spec extract_dominant_colors(binary(), pos_integer()) :: {:ok, [String.t()]} | {:error, term()}
@impl true
def extract_dominant_colors(image_data, num_colors \\ 5) do
:telemetry.span(
[:music_library, :colors, :extract],
+7 -2
View File
@@ -7,10 +7,15 @@ defmodule MusicLibrary.Records do
alias MusicLibrary.Artists
alias MusicLibrary.Assets
alias MusicLibrary.Colors.KMeansExtractor
alias MusicLibrary.Records.{ArtistRecord, Record, SearchIndex, SearchParser}
alias MusicLibrary.{Repo, Worker}
@color_extractor Application.compile_env(
:music_library,
:color_extractor,
MusicLibrary.Colors.KMeansExtractor
)
@type import_opts :: [
format: atom(),
purchased_at: DateTime.t() | nil,
@@ -305,7 +310,7 @@ defmodule MusicLibrary.Records do
def extract_colors(record) do
asset = Assets.get!(record.cover_hash)
with {:ok, colors} <- KMeansExtractor.extract_dominant_colors(asset.content) do
with {:ok, colors} <- @color_extractor.extract_dominant_colors(asset.content) do
update_record(record, %{dominant_colors: colors})
end
end