add tests
This commit is contained in:
1 parent
ea9a25f5b4
commit
08cddbe947
4 files changed
+112
-1
No files matched your search
@@ -15,7 +15,13 @@ defmodule FeedReader.TestSupport.ExternalFormat do
|
||||
def handler, do: FeedReader.TestSupport.ExternalFormatHandler
|
||||
|
||||
@impl true
|
||||
def new_parser_state(event_sink, opts), do: %{event_sink: event_sink, opts: opts}
|
||||
def new_parser_state(event_sink, opts) do
|
||||
if notify = Keyword.get(opts, :notify_parser) do
|
||||
send(notify, {:parser_pid, self()})
|
||||
end
|
||||
|
||||
%{event_sink: event_sink, opts: opts}
|
||||
end
|
||||
|
||||
@impl true
|
||||
def normalize_feed(_state, _opts), do: %Feed{title: "External", type: :rss}
|
||||
|
||||
@@ -2,6 +2,22 @@ defmodule FeedReader.TestSupport.ExternalFormatHandler do
|
||||
@moduledoc false
|
||||
@behaviour Saxy.Handler
|
||||
|
||||
alias FeedReader.Feed
|
||||
|
||||
@impl true
|
||||
def handle_event(:start_document, _data, %{opts: opts} = state) do
|
||||
if Keyword.get(opts, :emit_event), do: emit_event(state)
|
||||
|
||||
{:ok, state}
|
||||
end
|
||||
|
||||
def handle_event(:end_document, _data, %{opts: opts} = state) do
|
||||
if Keyword.get(opts, :emit_event), do: emit_event(state)
|
||||
|
||||
{:ok, state}
|
||||
end
|
||||
|
||||
def handle_event(_event_type, _data, state), do: {:ok, state}
|
||||
|
||||
defp emit_event(state), do: state.event_sink.({:feed, %Feed{title: "External", type: :rss}})
|
||||
end
|
||||
@@ -13,6 +13,7 @@ defmodule FeedReader.TestSupport.ParserHaltFormat do
|
||||
@impl true
|
||||
def new_parser_state(_event_sink, opts) do
|
||||
if Keyword.get(opts, :normal_exit), do: exit(:normal)
|
||||
if Keyword.get(opts, :abnormal_exit), do: exit(:parser_crashed)
|
||||
nil
|
||||
end
|
||||
|
||||
|
||||
Reference in new issue
Block a user