Skip to content

Commit eca955f

Browse files
committed
ignore test for incomplete JSON response in v26.0
1 parent 74cb400 commit eca955f

5 files changed

Lines changed: 26 additions & 12 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## major.minor.patch (yyyy.mm.dd)
99

10-
## 0.2.0 (2024.12.xx)
10+
## 0.2.0 (2024.12.14)
1111

1212
### Changed
1313

@@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1818
* Default client, currently using [`Req`](https://hexdocs.pm/req).
1919
* `Connection` module, which is taken from [`ExTypesense`](https://hexdocs.pm/ex_typesense) because someone requested for loading of credentials at runtime.
2020
* `defstruct` in Modules `Debug`, `Documents` and `Stopwords` because it is throwing undefined struct error.
21+
* Few descriptions in `priv/open_api.yml` for 4XX response.
2122

2223
## 0.1.0 (2024.11.08)
2324

coveralls.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"skip_files": [
33
"test",
44
"deps",
5-
"lib/open_api_typesense/schemas"
5+
"lib/open_api_typesense/schemas",
6+
"lib/open_api_typesense.ex"
67
]
78
}

lib/open_api_typesense.ex

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
defmodule OpenApiTypesense do
22
@moduledoc false
3+
4+
@doc false
5+
def count_uniq_atom_keys do
6+
nil
7+
end
38
end

lib/open_api_typesense/client.ex

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ defmodule OpenApiTypesense.Client do
7979
{:ok, %OpenApiTypesense.HealthStatus{ok: true}}
8080
"""
8181
@doc since: "0.2.0"
82-
@spec request(Connection.t(), map()) :: response()
83-
def request(conn, opts \\ %{}) do
82+
@spec request(Connection.t(), list()) :: response()
83+
def request(conn, opts \\ []) do
8484
# Req.Request.append_error_steps and its retry option are used here.
8585
# options like retry, max_retries, etc. can be found in:
8686
# https://hexdocs.pm/req/Req.Steps.html#retry/1
@@ -118,6 +118,8 @@ defmodule OpenApiTypesense.Client do
118118
url: url,
119119
retry: retry,
120120
max_retries: max_retries,
121+
compress_body: opts[:opts][:compress] || false,
122+
cache: opts[:opts][:cache] || false,
121123
decode_json: [keys: :atoms]
122124
]
123125
|> Req.new()
@@ -145,7 +147,7 @@ defmodule OpenApiTypesense.Client do
145147
parse_values(code, values, resp.body)
146148
end
147149

148-
defp parse_values(code, :map, body) when is_map(body) do
150+
defp parse_values(code, :map, body) do
149151
status = if code in 200..299, do: :ok, else: :error
150152

151153
{status, body}

test/operations/analytics_test.exs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ defmodule AnalyticsTest do
104104
assert {:error, %ApiResponse{message: _}} = Analytics.create_analytics_rule(body)
105105
end
106106

107-
@tag ["27.1": true, "26.0": true, "0.25.2": true]
107+
@tag ["27.1": true, "26.0": true, "0.25.2": false]
108108
test "success: upsert analytics rule" do
109109
name = "product_no_hits"
110110

@@ -161,10 +161,12 @@ defmodule AnalyticsTest do
161161
assert length(rules) >= 0
162162
end
163163

164-
@tag ["27.1": true, "26.0": true, "0.25.2": true]
165-
test "success: create analytics rule and event" do
164+
@tag ["27.1": true, "26.0": false, "0.25.2": false]
165+
test "success (v27.1): create analytics rule and event" do
166166
name = "product_popularity"
167167

168+
event_name = "products_click_event#{System.unique_integer()}"
169+
168170
body =
169171
%{
170172
"name" => name,
@@ -173,7 +175,7 @@ defmodule AnalyticsTest do
173175
"source" => %{
174176
"collections" => ["products"],
175177
"events" => [
176-
%{"type" => "click", "weight" => 1, "name" => "products_click_event"}
178+
%{"type" => "click", "weight" => 1, "name" => event_name}
177179
]
178180
},
179181
"destination" => %{
@@ -187,19 +189,22 @@ defmodule AnalyticsTest do
187189
assert {:ok, %AnalyticsRuleSchema{name: ^name}} = Analytics.create_analytics_rule(body)
188190
assert {:ok, %AnalyticsRuleSchema{name: ^name}} = Analytics.retrieve_analytics_rule(name)
189191

190-
name = "products_click_event"
191-
192192
body =
193193
%{
194-
"name" => name,
194+
"name" => event_name,
195195
"type" => "click",
196196
"data" => %{
197+
"q" => "nike_shoes",
197198
"doc_id" => "2468",
198199
"user_id" => "9903"
199200
}
200201
}
201202
|> Jason.encode_to_iodata!()
202203

204+
# Here's the reason why v26.0 is not tested
205+
# Docs v26.0: https://typesense.org/docs/26.0/api/analytics-query-suggestions.html#sending-click-events
206+
# Problem: the response JSON body is actually {"ok": true
207+
# where it is missing a closing curly bracket "}"
203208
assert {:ok, %AnalyticsEventCreateResponse{ok: true}} = Analytics.create_analytics_event(body)
204209
end
205210
end

0 commit comments

Comments
 (0)