lib/exvcr/iex.ex
defmodule ExVCR.IEx do
@moduledoc """
Provides helper functions for IEx.
"""
alias ExVCR.Recorder
@doc """
Provides helper for monitoring http request/response in cassette json format.
"""
defmacro print(options \\ [], test) do
adapter = options[:adapter] || ExVCR.Adapter.IBrowse
method_name = :"ExVCR.IEx.Sample#{ExVCR.Util.uniq_id()}"
quote do
defmodule unquote(method_name) do
use ExVCR.Mock, adapter: unquote(adapter)
def run do
recorder = Recorder.start(
unquote(options) ++ [fixture: "", adapter: unquote(adapter)])
try do
ExVCR.Mock.mock_methods(recorder, unquote(adapter))
unquote(test)
after
ExVCR.MockLock.release_lock()
Recorder.get(recorder)
|> JSX.encode!
|> JSX.prettify!
|> IO.puts
end
:ok
end
end
unquote(method_name).run()
end
end
end