prop/test/microwaveprop/workers/station_elevation_worker_test.exs

47 lines
1.4 KiB
Elixir

defmodule Microwaveprop.Workers.StationElevationWorkerTest do
use Microwaveprop.DataCase, async: false
import Microwaveprop.AccountsFixtures
alias Microwaveprop.Rover
alias Microwaveprop.Rover.FixedStation
alias Microwaveprop.Workers.StationElevationWorker
setup do
tmp = Path.join(System.tmp_dir!(), "station_elev_#{System.unique_integer([:positive])}")
File.mkdir_p!(tmp)
prev = Application.get_env(:microwaveprop, :srtm_tiles_dir)
Application.put_env(:microwaveprop, :srtm_tiles_dir, tmp)
on_exit(fn ->
File.rm_rf!(tmp)
if prev do
Application.put_env(:microwaveprop, :srtm_tiles_dir, prev)
else
Application.delete_env(:microwaveprop, :srtm_tiles_dir)
end
end)
:ok
end
describe "perform/1" do
test "returns :ok and leaves elevation nil when SRTM tile is missing" do
user = user_fixture()
{:ok, station} = Rover.create_station(user, %{callsign: "W5LUA", lat: 33.0, lon: -96.0})
assert :ok = StationElevationWorker.perform(%Oban.Job{args: %{"id" => station.id}})
reloaded = Repo.get!(FixedStation, station.id)
assert reloaded.elevation_m == nil
end
test "returns :ok when station id no longer exists" do
assert :ok =
StationElevationWorker.perform(%Oban.Job{
args: %{"id" => Ecto.UUID.generate()}
})
end
end
end