Skip to content
Merged
Prev Previous commit
Next Next commit
Test coverage
  • Loading branch information
ptitfred committed Dec 11, 2025
commit 40d8d7ba1b11af1172fd064b74de710b056ab980
2 changes: 1 addition & 1 deletion apps/transport/lib/validators/netex/results_adapter.ex
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ defmodule Transport.Validators.NeTEx.ResultsAdapter do
@callback count_by_severity(map()) :: map()
# DEPRECATED
@callback get_issues(map(), map()) :: list()
@callback get_issues(binary(), map(), Scrivener.Config.t()) :: {pos_integer(), list()}
@callback get_issues(binary(), map(), Scrivener.Config.t()) :: {map(), {pos_integer(), list()}}
@callback digest(map()) :: map()
@callback issue_type(list()) :: nil | binary()
@callback format_severity(binary(), non_neg_integer()) :: binary()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,63 @@
defmodule Transport.Validators.NeTEx.ResultsAdapters.V0_1_0Test do
use ExUnit.Case, async: true
doctest Transport.Validators.NeTEx.ResultsAdapters.V0_1_0, import: true
alias Transport.Validators.NeTEx.ResultsAdapters.V0_1_0
import TransportWeb.PaginationHelpers, only: [make_pagination_config: 1]

@xsd %{
"code" => "xsd-123",
"message" => "Resource 23504000009 hasn't expected class but Netex::OperatingPeriod",
"criticity" => "error"
}
@rule %{
"code" => "valid-day-bits",
"message" => "Mandatory attribute valid_day_bits not found",
"criticity" => "error"
}

test "get_issues from binary" do
pagination_config = make_pagination_config(%{})

binary_result =
result_factory("xsd-123": 41, "valid-day-bits": 41)
|> V0_1_0.to_binary_result()

assert {%{"issue_type" => "valid-day-bits"}, {41, repeated(@rule, 20)}} ==
V0_1_0.get_issues(binary_result, %{}, pagination_config)

assert {%{"issue_type" => "xsd-123"}, {41, repeated(@xsd, 20)}} ==
V0_1_0.get_issues(binary_result, %{"issue_type" => "xsd-123"}, pagination_config)

assert {%{"issue_type" => "valid-day-bits"}, {41, repeated(@rule, 20)}} ==
V0_1_0.get_issues(binary_result, %{"issue_type" => "valid-day-bits"}, pagination_config)

pagination_config = make_pagination_config(%{"page" => "3"})

assert {%{"issue_type" => "valid-day-bits"}, {41, repeated(@rule, 1)}} ==
V0_1_0.get_issues(binary_result, %{}, pagination_config)

assert {%{"issue_type" => "xsd-123"}, {41, repeated(@xsd, 1)}} ==
V0_1_0.get_issues(binary_result, %{"issue_type" => "xsd-123"}, pagination_config)

assert {%{"issue_type" => "valid-day-bits"}, {41, repeated(@rule, 1)}} ==
V0_1_0.get_issues(binary_result, %{"issue_type" => "valid-day-bits"}, pagination_config)
end

defp result_factory(counts) do
counts
|> Enum.map(fn {category, count} ->
{Atom.to_string(category), error_factory(category, count)}
end)
|> Map.new()
end

defp error_factory(:"xsd-123", count), do: repeated(@xsd, count)
defp error_factory(:"valid-day-bits", count), do: repeated(@rule, count)
defp error_factory(_, _), do: []

defp repeated(item, times) do
[item]
|> Stream.cycle()
|> Enum.take(times)
end
end
Original file line number Diff line number Diff line change
@@ -1,4 +1,63 @@
defmodule Transport.Validators.NeTEx.ResultsAdapters.V0_2_0Test do
use ExUnit.Case, async: true
doctest Transport.Validators.NeTEx.ResultsAdapters.V0_2_0, import: true
alias Transport.Validators.NeTEx.ResultsAdapters.V0_2_0
import TransportWeb.PaginationHelpers, only: [make_pagination_config: 1]

@xsd %{
"code" => "xsd-123",
"message" => "Resource 23504000009 hasn't expected class but Netex::OperatingPeriod",
"criticity" => "error"
}
@rule %{
"code" => "valid-day-bits",
"message" => "Mandatory attribute valid_day_bits not found",
"criticity" => "error"
}

test "get_issues from binary" do
pagination_config = make_pagination_config(%{})

binary_result =
result_factory("base-rules": 41, "xsd-schema": 41)
|> V0_2_0.to_binary_result()

assert {%{"issues_category" => "xsd-schema"}, {41, repeated(@xsd, 20)}} ==
V0_2_0.get_issues(binary_result, %{}, pagination_config)

assert {%{"issues_category" => "xsd-schema"}, {41, repeated(@xsd, 20)}} ==
V0_2_0.get_issues(binary_result, %{"issues_category" => "xsd-schema"}, pagination_config)

assert {%{"issues_category" => "base-rules"}, {41, repeated(@rule, 20)}} ==
V0_2_0.get_issues(binary_result, %{"issues_category" => "base-rules"}, pagination_config)

pagination_config = make_pagination_config(%{"page" => "3"})

assert {%{"issues_category" => "xsd-schema"}, {41, repeated(@xsd, 1)}} ==
V0_2_0.get_issues(binary_result, %{}, pagination_config)

assert {%{"issues_category" => "xsd-schema"}, {41, repeated(@xsd, 1)}} ==
V0_2_0.get_issues(binary_result, %{"issues_category" => "xsd-schema"}, pagination_config)

assert {%{"issues_category" => "base-rules"}, {41, repeated(@rule, 1)}} ==
V0_2_0.get_issues(binary_result, %{"issues_category" => "base-rules"}, pagination_config)
end

defp result_factory(counts) do
counts
|> Enum.map(fn {category, count} ->
{Atom.to_string(category), error_factory(category, count)}
end)
|> Map.new()
end

defp error_factory(:"xsd-schema", count), do: repeated(@xsd, count)
defp error_factory(:"base-rules", count), do: repeated(@rule, count)
defp error_factory(_, _), do: []

defp repeated(item, times) do
[item]
|> Stream.cycle()
|> Enum.take(times)
end
end
Original file line number Diff line number Diff line change
@@ -1,4 +1,63 @@
defmodule Transport.Validators.NeTEx.ResultsAdapters.V0_2_1Test do
use ExUnit.Case, async: true
doctest Transport.Validators.NeTEx.ResultsAdapters.V0_2_1, import: true
alias Transport.Validators.NeTEx.ResultsAdapters.V0_2_1
import TransportWeb.PaginationHelpers, only: [make_pagination_config: 1]

@xsd %{
"code" => "xsd-123",
"message" => "Resource 23504000009 hasn't expected class but Netex::OperatingPeriod",
"criticity" => "error"
}
@rule %{
"code" => "valid-day-bits",
"message" => "Mandatory attribute valid_day_bits not found",
"criticity" => "error"
}

test "get_issues from binary" do
pagination_config = make_pagination_config(%{})

binary_result =
result_factory("base-rules": 41, "xsd-schema": 41)
|> V0_2_1.to_binary_result()

assert {%{"issues_category" => "xsd-schema"}, {41, repeated(@xsd, 20)}} ==
V0_2_1.get_issues(binary_result, %{}, pagination_config)

assert {%{"issues_category" => "xsd-schema"}, {41, repeated(@xsd, 20)}} ==
V0_2_1.get_issues(binary_result, %{"issues_category" => "xsd-schema"}, pagination_config)

assert {%{"issues_category" => "base-rules"}, {41, repeated(@rule, 20)}} ==
V0_2_1.get_issues(binary_result, %{"issues_category" => "base-rules"}, pagination_config)

pagination_config = make_pagination_config(%{"page" => "3"})

assert {%{"issues_category" => "xsd-schema"}, {41, repeated(@xsd, 1)}} ==
V0_2_1.get_issues(binary_result, %{}, pagination_config)

assert {%{"issues_category" => "xsd-schema"}, {41, repeated(@xsd, 1)}} ==
V0_2_1.get_issues(binary_result, %{"issues_category" => "xsd-schema"}, pagination_config)

assert {%{"issues_category" => "base-rules"}, {41, repeated(@rule, 1)}} ==
V0_2_1.get_issues(binary_result, %{"issues_category" => "base-rules"}, pagination_config)
end

defp result_factory(counts) do
counts
|> Enum.map(fn {category, count} ->
{Atom.to_string(category), error_factory(category, count)}
end)
|> Map.new()
end

defp error_factory(:"xsd-schema", count), do: repeated(@xsd, count)
defp error_factory(:"base-rules", count), do: repeated(@rule, count)
defp error_factory(_, _), do: []

defp repeated(item, times) do
[item]
|> Stream.cycle()
|> Enum.take(times)
end
end