Skip to content

Commit

Permalink
Merge pull request #57 from breakroom/fix-tests-on-otp-26
Browse files Browse the repository at this point in the history
Fix tests on OTP 26
  • Loading branch information
tomtaylor authored Jul 25, 2023
2 parents da0bf38 + c010afd commit 359f299
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 23 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@ jobs:
strategy:
matrix:
include:
- elixir: 1.15.x
otp: 26.x
check_formatted: true
- elixir: 1.14.x
otp: 25.x
check_formatted: true
- elixir: 1.13.x
otp: 24.x
- elixir: 1.12.x
Expand Down
4 changes: 2 additions & 2 deletions .tool-versions
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
elixir 1.12.3-otp-24
erlang 24.0.6
elixir 1.15.4-otp-26
erlang 26.0.2
52 changes: 52 additions & 0 deletions lib/snap/bulk/action.ex
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,55 @@ defmodule Snap.Bulk.Action.Update do
doc: map()
}
end

defimpl Jason.Encoder, for: Snap.Bulk.Action.Create do
require Jason.Helpers

def encode(%Snap.Bulk.Action.Create{_index: index, _id: id, require_alias: require_alias}, opts) do
values = [_index: index, _id: id, require_alias: require_alias]

values
|> Enum.reject(&is_nil(elem(&1, 1)))
|> then(fn values -> %{"create" => Jason.OrderedObject.new(values)} end)
|> Jason.Encode.map(opts)
end
end

defimpl Jason.Encoder, for: Snap.Bulk.Action.Delete do
require Jason.Helpers

def encode(%Snap.Bulk.Action.Delete{_index: index, _id: id, require_alias: require_alias}, opts) do
values = [_index: index, _id: id, require_alias: require_alias]

values
|> Enum.reject(&is_nil(elem(&1, 1)))
|> then(fn values -> %{"delete" => Jason.OrderedObject.new(values)} end)
|> Jason.Encode.map(opts)
end
end

defimpl Jason.Encoder, for: Snap.Bulk.Action.Update do
require Jason.Helpers

def encode(%Snap.Bulk.Action.Update{_index: index, _id: id, require_alias: require_alias}, opts) do
values = [_index: index, _id: id, require_alias: require_alias]

values
|> Enum.reject(&is_nil(elem(&1, 1)))
|> then(fn values -> %{"update" => Jason.OrderedObject.new(values)} end)
|> Jason.Encode.map(opts)
end
end

defimpl Jason.Encoder, for: Snap.Bulk.Action.Index do
require Jason.Helpers

def encode(%Snap.Bulk.Action.Index{_index: index, _id: id, require_alias: require_alias}, opts) do
values = [_index: index, _id: id, require_alias: require_alias]

values
|> Enum.reject(&is_nil(elem(&1, 1)))
|> then(fn values -> %{"index" => Jason.OrderedObject.new(values)} end)
|> Jason.Encode.map(opts)
end
end
18 changes: 1 addition & 17 deletions lib/snap/bulk/actions.ex
Original file line number Diff line number Diff line change
Expand Up @@ -51,22 +51,6 @@ defmodule Snap.Bulk.Actions do
end

defp encode_action_command(action) do
key =
case action do
%Create{} -> "create"
%Update{} -> "update"
%Delete{} -> "delete"
%Index{} -> "index"
end

body =
action
|> Map.from_struct()
|> Map.delete(:doc)
|> Enum.reject(fn {_, v} -> is_nil(v) end)
|> Map.new()

%{key => body}
|> Jason.encode!()
Jason.encode!(action)
end
end
2 changes: 1 addition & 1 deletion test/bulk/actions_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ defmodule Snap.Bulk.ActionsTest do
encoded = Actions.encode(actions) |> IO.chardata_to_string()

assert encoded ==
"{\"index\":{\"_index\":\"foo\"}}\n{\"foo\":\"bar\"}\n{\"create\":{\"_index\":\"foo\",\"require_alias\":true}}\n{\"foo\":\"bar\"}\n{\"update\":{\"_id\":2,\"_index\":\"foo\"}}\n{\"doc\":{\"foo\":\"bar\"}}\n{\"delete\":{\"_id\":1,\"_index\":\"foo\"}}\n"
"{\"index\":{\"_index\":\"foo\"}}\n{\"foo\":\"bar\"}\n{\"create\":{\"_index\":\"foo\",\"require_alias\":true}}\n{\"foo\":\"bar\"}\n{\"update\":{\"_index\":\"foo\",\"_id\":2}}\n{\"doc\":{\"foo\":\"bar\"}}\n{\"delete\":{\"_index\":\"foo\",\"_id\":1}}\n"
end
end
4 changes: 2 additions & 2 deletions test/test_helper.exs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
ExUnit.configure(exclude: [integration: true])
ExUnit.start()

url = "http://localhost:9200"

{:ok, _} = Snap.Test.Cluster.start_link(url: url)

ExUnit.start()

0 comments on commit 359f299

Please sign in to comment.