Skip to content

Commit 72439cb

Browse files
committed
restoring tests that weren't covered for non-es7 before
1 parent 105979f commit 72439cb

File tree

4 files changed

+118
-2
lines changed

4 files changed

+118
-2
lines changed

config/test.exs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,4 @@ config :elastix, json_codec: Jason
55
config :exlasticsearch, ExlasticSearch.Repo, url: "http://localhost:9200"
66
config :exlasticsearch, ExlasticSearch.TypelessTestModel, index_type: :es8
77
config :exlasticsearch, :monitoring, ExlasticSearch.Monitoring.Mock
8-
98
config :exlasticsearch, json_library: Jason

test/exlasticsearch/repo/mapping_types_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ defmodule ExlasticSearch.Repo.MappingTypesTest do
275275
assert Enum.find(results, &(&1._id == id2))
276276
end
277277

278-
test "It will search in a multiple indexes" do
278+
test "It will search in multiple indexes" do
279279
id1 = Ecto.UUID.generate()
280280
id2 = Ecto.UUID.generate()
281281
id3 = Ecto.UUID.generate()

test/exlasticsearch/repo_test.exs

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ defmodule ExlasticSearch.RepoTest do
66
alias ExlasticSearch.Repo
77
alias ExlasticSearch.TypelessMultiVersionTestModel, as: TypelessMVTestModel
88
alias ExlasticSearch.TypelessTestModel
9+
alias ExlasticSearch.TypelessTestModel2
910

1011
require Logger
1112

@@ -14,6 +15,10 @@ defmodule ExlasticSearch.RepoTest do
1415
Repo.create_index(TypelessTestModel, :es8)
1516
{:ok, %{status_code: 200}} = Repo.create_mapping(TypelessTestModel, :es8)
1617

18+
Repo.delete_index(TypelessTestModel2, :es8)
19+
Repo.create_index(TypelessTestModel2, :es8)
20+
{:ok, %{status_code: 200}} = Repo.create_mapping(TypelessTestModel2, :es8)
21+
1722
Repo.delete_index(TypelessMVTestModel, :es8)
1823
Repo.create_index(TypelessMVTestModel, :es8)
1924
{:ok, %{status_code: 200}} = Repo.create_mapping(TypelessMVTestModel, :es8)
@@ -44,6 +49,62 @@ defmodule ExlasticSearch.RepoTest do
4449
end
4550

4651
describe "#bulk" do
52+
test "It will bulk update from es" do
53+
model1 = %ExlasticSearch.TypelessTestModel{id: Ecto.UUID.generate(), name: "test 1"}
54+
model2 = %ExlasticSearch.TypelessTestModel{id: Ecto.UUID.generate(), name: "test 2"}
55+
56+
Repo.index(model1)
57+
Repo.index(model2)
58+
59+
{:ok, _} =
60+
Repo.bulk([
61+
{:update, ExlasticSearch.TypelessTestModel, model1.id, %{doc: %{name: "test 1 edited"}}},
62+
{:update, ExlasticSearch.TypelessTestModel, model2.id, %{doc: %{name: "test 2 edited"}}}
63+
])
64+
65+
{:ok, %{_source: data1}} = Repo.get(model1)
66+
{:ok, %{_source: data2}} = Repo.get(model2)
67+
68+
assert data1.name == "test 1 edited"
69+
assert data2.name == "test 2 edited"
70+
end
71+
72+
test "It will bulk update nested from es" do
73+
model1 = %ExlasticSearch.TypelessTestModel{
74+
id: Ecto.UUID.generate(),
75+
teams: [%{name: "arsenal", rating: 100}]
76+
}
77+
78+
model2 = %ExlasticSearch.TypelessTestModel{
79+
id: Ecto.UUID.generate(),
80+
teams: [%{name: "tottenham", rating: 0}]
81+
}
82+
83+
Repo.index(model1)
84+
Repo.index(model2)
85+
86+
source =
87+
"ctx._source.teams.find(cf -> cf.name == params.data.name).rating = params.data.rating"
88+
89+
data1 = %{script: %{source: source, params: %{data: %{name: "arsenal", rating: 1000}}}}
90+
data2 = %{script: %{source: source, params: %{data: %{name: "tottenham", rating: -1}}}}
91+
92+
{:ok, _} =
93+
Repo.bulk([
94+
{:update, ExlasticSearch.TypelessTestModel, model1.id, data1},
95+
{:update, ExlasticSearch.TypelessTestModel, model2.id, data2}
96+
])
97+
98+
{:ok, %{_source: %{teams: [team1]}}} = Repo.get(model1)
99+
{:ok, %{_source: %{teams: [team2]}}} = Repo.get(model2)
100+
101+
assert team1.name == "arsenal"
102+
assert team1.rating == 1000
103+
104+
assert team2.name == "tottenham"
105+
assert team2.rating == -1
106+
end
107+
47108
test "It will bulk index/delete from es 8+" do
48109
model = %ExlasticSearch.TypelessTestModel{id: Ecto.UUID.generate()}
49110
{:ok, _} = Repo.bulk([{:index, model, :es8}], :es8)
@@ -213,6 +274,44 @@ defmodule ExlasticSearch.RepoTest do
213274
assert Enum.find(results, &(&1._id == id1))
214275
assert Enum.find(results, &(&1._id == id2))
215276
end
277+
278+
test "It will search in multiple indexes" do
279+
id1 = Ecto.UUID.generate()
280+
id2 = Ecto.UUID.generate()
281+
id3 = Ecto.UUID.generate()
282+
id4 = Ecto.UUID.generate()
283+
284+
rand_name = String.replace(Ecto.UUID.generate(), "-", "")
285+
286+
model1 = %TypelessTestModel{id: id1, name: rand_name}
287+
model2 = %TypelessTestModel{id: id2, name: rand_name}
288+
model3 = %TypelessTestModel{id: id3, name: "something else"}
289+
290+
model4 = %TypelessTestModel2{id: id4, name: rand_name}
291+
292+
Repo.index(model1)
293+
Repo.index(model2)
294+
Repo.index(model3)
295+
296+
Repo.index(model4)
297+
298+
Repo.refresh(TypelessTestModel)
299+
Repo.refresh(TypelessTestModel2)
300+
301+
query = %ExlasticSearch.Query{
302+
queryable: [TypelessTestModel, TypelessTestModel2],
303+
filter: [
304+
%{term: %{name: rand_name}}
305+
]
306+
}
307+
308+
{:ok, %{hits: %{hits: results}}} = Repo.search(query, [])
309+
310+
assert length(results) == 3
311+
assert Enum.find(results, &(&1._id == id1))
312+
assert Enum.find(results, &(&1._id == id2))
313+
assert Enum.find(results, &(&1._id == id4))
314+
end
216315
end
217316

218317
defp exists?(model, index) do

test/support/test_model.ex

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,23 @@ defmodule ExlasticSearch.TypelessTestModel do
109109
end
110110
end
111111

112+
defmodule ExlasticSearch.TypelessTestModel2 do
113+
@moduledoc false
114+
use Ecto.Schema
115+
use ExlasticSearch.Model
116+
117+
schema "typeless_test_models2" do
118+
field(:name, :string)
119+
end
120+
121+
indexes :typeless_test_model2, doc_type: nil do
122+
versions(2)
123+
settings(%{})
124+
options(%{dynamic: :strict})
125+
mapping(:name)
126+
end
127+
end
128+
112129
defmodule ExlasticSearch.TypelessMultiVersionTestModel do
113130
@moduledoc false
114131
use Ecto.Schema
@@ -145,6 +162,7 @@ defimpl ExlasticSearch.Indexable,
145162
ExlasticSearch.TestModel2,
146163
ExlasticSearch.MultiVersionTestModel,
147164
ExlasticSearch.TypelessTestModel,
165+
ExlasticSearch.TypelessTestModel2,
148166
ExlasticSearch.TypelessMultiVersionTestModel
149167
] do
150168
def id(%{id: id}), do: id

0 commit comments

Comments
 (0)