defmodule VavPipeline.MannaShabbatTest do @moduledoc "Shemot 16:22–26: Friday's double portion is the Shabbat's too; nothing else crosses the day boundary." use ExUnit.Case, async: false alias VavPipeline.Manna @friday ~D[2026-10-16] @saturday ~D[2026-10-17] @sunday ~D[2026-10-18] defp write(date, type, expires) do path = Manna.provision_file() File.mkdir_p!(Path.dirname(path)) File.write!(path, Jason.encode!(%{"date" => Date.to_iso8601(date), "provision" => %{"compute_units" => 2000, "memory_mb" => 1, "api_calls_external" => 1, "storage_delta_mb" => 1, "sanhedrin_panels_max" => 1}, "type" => type, "expires_at" => expires, "written_by" => "test", "written_at" => "2026-10-16T00:01:00Z"})) on_exit(fn -> File.rm(path) end) end defp at(date, h), do: DateTime.new!(date, Time.new!(h, 0, 0), "Etc/UTC") test "Friday's double stands on Saturday" do write(@friday, "double", "2026-10-18T00:30:00Z") assert {:ok, %{type: :double}} = Manna.check_at(at(@friday, 12)) assert {:ok, %{type: :double}} = Manna.check_at(at(@saturday, 12)) end test "a regular provision does not cross the boundary; a double does not reach Sunday" do write(@friday, "regular", "2026-10-18T00:30:00Z") assert {:error, "MANNA_STALE" <> _} = Manna.check_at(at(@saturday, 12)) write(@friday, "double", "2026-10-19T00:30:00Z") assert {:error, "MANNA_STALE" <> _} = Manna.check_at(at(@sunday, 12)) end test "a double written on a Thursday does not carry to Friday — only Shabbat receives it" do write(~D[2026-10-15], "double", "2026-10-17T00:30:00Z") assert {:error, "MANNA_STALE" <> _} = Manna.check_at(at(@friday, 12)) end end