47 lines
1.4 KiB
Elixir
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
|