Update the generator to use options and support a string-based map.

This commit is contained in:
2024-09-05 12:09:03 +03:00
parent 158dcce49b
commit 8ddb7da76e
2 changed files with 44 additions and 14 deletions
@@ -1,18 +1,18 @@
defmodule LinkShortener.Generators.LinkWithRandomShortenTest do
use ExUnit.Case, async: true
alias LinkShortener.Generators.LinkWithRandomShorten
@name "Some name"
@attrs %{
name: @name
}
test "generate/1 returns random safe string with 10 as length" do
assert %{
name: @name,
shorten: shorten
} = LinkWithRandomShorten.generate_one(@attrs)
name: @name,
shorten: shorten
} = LinkWithRandomShorten.generate_one(@attrs)
assert String.length(shorten) == 10
end
@@ -21,22 +21,32 @@ defmodule LinkShortener.Generators.LinkWithRandomShortenTest do
expected_length = 5
assert %{
name: @name,
shorten: shorten
} = LinkWithRandomShorten.generate_one(@attrs, expected_length)
name: @name,
shorten: shorten
} =
LinkWithRandomShorten.generate_one(@attrs,
is_atom_based: true,
length: expected_length
)
assert String.length(shorten) == expected_length
end
test "generate/3 returns random safe string using a lambda function" do
random_generator = fn _ -> "random_shorten" end
expected_shorten = random_generator.(14)
expected_shorten = random_generator.(14)
expected_length = expected_shorten |> String.length()
assert %{
name: @name,
shorten: shorten
} = LinkWithRandomShorten.generate_one(@attrs, expected_length, random_generator)
name: @name,
shorten: shorten
} =
LinkWithRandomShorten.generate_one(
@attrs,
is_atom_based: true,
length: expected_length,
generator: random_generator
)
assert String.length(shorten) == expected_length
assert shorten == expected_shorten