- Valkey.RedixAdapter: 0% -> 100% (delegation lines exercised) - Buildings.BulkFetch: 0% -> 56% (run/4 with stubbed empty index) - AprsRepo: 50% -> exercises repo config + Ecto.Repo callbacks - Maidenhead.valid?/1: covers non-binary non-nil arms - Canopy.tile_filename/2: S/E hemisphere prefix branches
48 lines
1.3 KiB
Elixir
48 lines
1.3 KiB
Elixir
defmodule Microwaveprop.Buildings.BulkFetchTest do
|
|
use ExUnit.Case, async: false
|
|
|
|
import ExUnit.CaptureLog
|
|
|
|
alias Microwaveprop.Buildings.BulkFetch
|
|
|
|
setup do
|
|
prev = Application.get_env(:microwaveprop, :ms_footprints_http_get)
|
|
|
|
on_exit(fn ->
|
|
if prev,
|
|
do: Application.put_env(:microwaveprop, :ms_footprints_http_get, prev),
|
|
else: Application.delete_env(:microwaveprop, :ms_footprints_http_get)
|
|
end)
|
|
|
|
:ok
|
|
end
|
|
|
|
describe "run/4" do
|
|
test "returns the result struct with zero counters when index is empty" do
|
|
# Stub the dataset index fetch to return empty TSV → no quadkeys
|
|
# in index → no downloads attempted.
|
|
Application.put_env(:microwaveprop, :ms_footprints_http_get, fn _url, _opts ->
|
|
{:ok, %{status: 200, body: "Location\tQuadkey\tUrl\tSize\n"}}
|
|
end)
|
|
|
|
# Need to invalidate the dataset_index cache so our stub takes effect.
|
|
Microwaveprop.Cache.invalidate(:ms_footprints_index)
|
|
|
|
capture_log(fn ->
|
|
result = BulkFetch.run(32.8, -97.0, 1, concurrency: 1)
|
|
send(self(), result)
|
|
end)
|
|
|
|
assert_received %{
|
|
downloaded: 0,
|
|
cached: 0,
|
|
failed: 0,
|
|
missing: missing,
|
|
cache_dir: cache_dir
|
|
}
|
|
|
|
assert is_integer(missing)
|
|
assert is_binary(cache_dir)
|
|
end
|
|
end
|
|
end
|