towerops/test/towerops_web/plugs/capture_timezone_test.exs

48 lines
1.4 KiB
Elixir

defmodule ToweropsWeb.Plugs.CaptureTimezoneTest do
use ToweropsWeb.ConnCase, async: true
alias ToweropsWeb.Plugs.CaptureTimezone
describe "call/2" do
test "captures cf-timezone header and stores in session", %{conn: conn} do
conn =
conn
|> init_test_session(%{})
|> put_req_header("cf-timezone", "America/Chicago")
|> CaptureTimezone.call([])
assert get_session(conn, :detected_timezone) == "America/Chicago"
end
test "defaults to UTC when cf-timezone header is missing", %{conn: conn} do
conn =
conn
|> init_test_session(%{})
|> CaptureTimezone.call([])
assert get_session(conn, :detected_timezone) == "UTC"
end
test "defaults to UTC when cf-timezone header is empty", %{conn: conn} do
conn =
conn
|> init_test_session(%{})
|> put_req_header("cf-timezone", "")
|> CaptureTimezone.call([])
assert get_session(conn, :detected_timezone) == "UTC"
end
test "handles overridden timezone headers by taking last", %{conn: conn} do
# put_req_header replaces the header value, so the last one wins
conn =
conn
|> init_test_session(%{})
|> put_req_header("cf-timezone", "America/Chicago")
|> put_req_header("cf-timezone", "Europe/London")
|> CaptureTimezone.call([])
assert get_session(conn, :detected_timezone) == "Europe/London"
end
end
end