defmodule Towerops.Lidar.Test.FakeParser do @moduledoc """ Test-only stand-in for `Towerops.Lidar.Sources.ThreeDep.GdalParser`. Tests configure canned tile responses per project name via `put_state/1`, which are stored in an ETS table so the parser process can be the test process or any Oban-spawned worker. """ @table :lidar_catalog_fake_parser def put_state(map) do ensure_table() :ets.insert(@table, {:state, map}) end def enumerate(project_name, _opts) do ensure_table() case :ets.lookup(@table, :state) do [{:state, map}] -> case Map.fetch(map, project_name) do {:ok, {:error, _} = err} -> err {:ok, tiles} -> {:ok, tiles} :error -> {:error, :unknown_project} end _ -> {:error, :no_state} end end defp ensure_table do case :ets.info(@table) do :undefined -> :ets.new(@table, [:named_table, :public, :set]) _ -> @table end end end