2023-02-22 03:40:58 +13:00
|
|
|
defmodule Ash.Query.Function.StringJoinTest do
|
|
|
|
use ExUnit.Case, async: true
|
|
|
|
|
|
|
|
alias Ash.Query.Function.StringJoin
|
2024-01-12 18:21:30 +13:00
|
|
|
import Ash.CiString, only: [sigil_i: 2]
|
|
|
|
alias Ash.CiString
|
2023-02-22 03:40:58 +13:00
|
|
|
|
2024-01-12 18:21:30 +13:00
|
|
|
describe "when only strings are present" do
|
|
|
|
test "join with separator" do
|
|
|
|
assert {:known, "one, two"} = StringJoin.evaluate(%{arguments: [["one", "two"], ", "]})
|
|
|
|
assert {:known, "one"} = StringJoin.evaluate(%{arguments: [["one", nil], ", "]})
|
|
|
|
assert {:known, ""} = StringJoin.evaluate(%{arguments: [[nil, nil], ", "]})
|
|
|
|
end
|
|
|
|
|
|
|
|
test "join without separator" do
|
|
|
|
assert {:known, "onetwo"} = StringJoin.evaluate(%{arguments: [["one", "two"]]})
|
|
|
|
assert {:known, "one"} = StringJoin.evaluate(%{arguments: [["one", nil]]})
|
|
|
|
assert {:known, ""} = StringJoin.evaluate(%{arguments: [[nil, nil]]})
|
|
|
|
end
|
2023-02-22 03:40:58 +13:00
|
|
|
end
|
|
|
|
|
2024-01-12 18:21:30 +13:00
|
|
|
describe "when only ci_strings are present" do
|
|
|
|
test "join with separator" do
|
|
|
|
assert {:known, %CiString{string: "one, two"}} =
|
|
|
|
StringJoin.evaluate(%{arguments: [[~i"one", ~i"two"], ~i", "]})
|
|
|
|
|
|
|
|
assert {:known, %CiString{string: "one"}} =
|
|
|
|
StringJoin.evaluate(%{arguments: [[~i"one", nil], ~i", "]})
|
|
|
|
|
|
|
|
assert {:known, %CiString{string: ""}} =
|
|
|
|
StringJoin.evaluate(%{arguments: [[nil, nil], ~i", "]})
|
|
|
|
end
|
|
|
|
|
|
|
|
test "join without separator" do
|
|
|
|
assert {:known, %CiString{string: "onetwo"}} =
|
|
|
|
StringJoin.evaluate(%{arguments: [[~i"one", ~i"two"]]})
|
|
|
|
|
|
|
|
assert {:known, %CiString{string: "one"}} =
|
|
|
|
StringJoin.evaluate(%{arguments: [[~i"one", nil]]})
|
|
|
|
|
|
|
|
assert {:known, ""} = StringJoin.evaluate(%{arguments: [[nil, nil]]})
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "when both strings and ci_strings coexist" do
|
|
|
|
test "join with separator" do
|
|
|
|
assert {:known, %CiString{string: "one, two"}} =
|
|
|
|
StringJoin.evaluate(%{arguments: [[~i"one", "two"], ", "]})
|
|
|
|
|
|
|
|
assert {:known, %CiString{string: "one, two"}} =
|
|
|
|
StringJoin.evaluate(%{arguments: [["one", ~i"two"], ", "]})
|
|
|
|
|
|
|
|
assert {:known, %CiString{string: "one, two"}} =
|
|
|
|
StringJoin.evaluate(%{arguments: [["one", "two"], ~i", "]})
|
|
|
|
end
|
|
|
|
|
|
|
|
test "join without separator" do
|
|
|
|
assert {:known, %CiString{string: "onetwo"}} =
|
|
|
|
StringJoin.evaluate(%{arguments: [[~i"one", "two"]]})
|
|
|
|
|
|
|
|
assert {:known, %CiString{string: "one"}} =
|
|
|
|
StringJoin.evaluate(%{arguments: [[~i"one", nil]]})
|
|
|
|
|
|
|
|
assert {:known, ""} = StringJoin.evaluate(%{arguments: [[nil, nil]]})
|
|
|
|
end
|
2023-02-22 03:40:58 +13:00
|
|
|
end
|
|
|
|
end
|