defmodule <%= inspect @module %> do use ExUnit.Case, async: true alias <%= inspect @simulator.namespace %> <%= if @simulator_helpers_module do %> setup [{<%= inspect(@simulator_helpers_module.module) %>, :configure_for_<%= @simulator.underscore_name %>_simulator}] setup do req = Req.new(base_url: <%= inspect(@swappable_config.namespace) %>.<%= @simulator.underscore_name %>_base_url(), retry: false) [req: req] end <% else %> setup do sim = start_supervised!(<%= inspect @simulator.alias %>) req = Req.new(base_url: <%= inspect @simulator.alias %>.base_url(sim), retry: false) [<%= @simulator.underscore_name %>_simulator: sim, req: req] end <% end %> test "simulator starts successfully", %{<%= @simulator.underscore_name %>_simulator: sim, req: req} do response = Req.get!(req, url: "/hello") assert response.body =~ "It works!" assert response.status == 200 <%= inspect @simulator.alias %>.set_greeting(sim, "Hello world") response = Req.get!(req, url: "/hello") assert response.body =~ "Hello world" assert response.status == 200 end test "allows for closing and reopening a connection", %{<%= @simulator.underscore_name %>_simulator: sim, req: req} do <%= inspect @simulator.alias %>.down(sim) assert {:error, %Req.TransportError{reason: :econnrefused}} = Req.request(req, url: "/hello", method: :get) <%= inspect @simulator.alias %>.up(sim) assert Req.get!(req, url: "/hello").status == 200 end <%= if @simulator.options.response_stubs? do %> test "triggering and clearing stubbed responses on specific endpoints", %{<%= @simulator.underscore_name %>_simulator: sim, req: req} do <%= inspect @simulator.alias %>.trigger_internal_server_errors(sim, :greeting) response = Req.get!(req, url: "/hello") assert response.status == 500 assert response.body =~ "Internal Server Error" <%= inspect @simulator.alias %>.clear_stubbed_responses(sim, :greeting) response = Req.get!(req, url: "/hello") assert response.status == 200 assert response.body =~ "It works!" <%= inspect @simulator.alias %>.trigger_internal_server_errors(sim, :all) response = Req.get!(req, url: "/hello") assert response.status == 500 assert response.body =~ "Internal Server Error" end <% end %> end