rdf-ex/test/unit/resource_generators/iri_uuid_generator_test.exs

136 lines
4.3 KiB
Elixir

defmodule RDF.IRI.UUID.GeneratorTest do
use RDF.Test.Case
doctest RDF.IRI.UUID.Generator
alias RDF.Resource.Generator
test "without arguments, a URN is generated" do
assert %IRI{value: "urn:uuid:" <> _} =
IRI.UUID.Generator.generator_config()
|> Generator.generate(nil)
end
test "setting the prefix function arguments" do
assert %IRI{value: "http://example.com/ns/" <> _} =
IRI.UUID.Generator.generator_config(prefix: "http://example.com/ns/")
|> Generator.generate(nil)
assert %IRI{} =
iri1 =
IRI.UUID.Generator.generator_config(prefix: EX)
|> Generator.generate(nil)
assert String.starts_with?(iri1.value, EX.__base_iri__())
assert %IRI{} =
iri2 =
IRI.UUID.Generator.generator_config(prefix: EX)
|> Generator.generate(nil)
assert iri1 != iri2
end
test "setting UUID params via defaults" do
for version <- [1, 4], format <- [:default, :hex] do
assert %IRI{value: "http://example.com/ns/" <> uuid} =
IRI.UUID.Generator.generator_config(
prefix: "http://example.com/ns/",
version: version,
format: format
)
|> Generator.generate(nil)
uuid_info = UUID.info!(uuid)
assert Keyword.get(uuid_info, :version) == version
assert Keyword.get(uuid_info, :type) == format
end
for version <- [3, 5],
format <- [:default, :hex],
namespace <- [:dns, :url, UUID.uuid4()] do
assert %IRI{value: "http://example.com/ns/" <> uuid} =
IRI.UUID.Generator.generator_config(
prefix: "http://example.com/ns/",
version: version,
format: format,
namespace: namespace,
name: "test"
)
|> Generator.generate(nil)
uuid_info = UUID.info!(uuid)
assert Keyword.get(uuid_info, :version) == version
assert Keyword.get(uuid_info, :type) == format
end
end
test "setting UUID params on generate/2" do
for version <- [1, 4], format <- [:default, :hex] do
assert %IRI{value: "http://example.com/ns/" <> uuid} =
IRI.UUID.Generator.generator_config()
|> Generator.generate(
prefix: "http://example.com/ns/",
version: version,
format: format
)
uuid_info = UUID.info!(uuid)
assert Keyword.get(uuid_info, :version) == version
assert Keyword.get(uuid_info, :type) == format
end
for version <- [3, 5],
format <- [:default, :hex],
namespace <- [:dns, :url, UUID.uuid4()] do
assert %IRI{value: "http://example.com/ns/" <> uuid} =
IRI.UUID.Generator.generator_config()
|> Generator.generate(
prefix: "http://example.com/ns/",
version: version,
format: format,
namespace: namespace,
name: "test"
)
uuid_info = UUID.info!(uuid)
assert Keyword.get(uuid_info, :version) == version
assert Keyword.get(uuid_info, :type) == format
end
end
test "overwriting default UUID params on generate/2" do
assert %IRI{value: "http://example.com/ns/" <> uuid} =
IRI.UUID.Generator.generator_config(
prefix: "http://example.com/ns/",
version: 4,
format: :default
)
|> Generator.generate(
version: 1,
format: :hex
)
uuid_info = UUID.info!(uuid)
assert Keyword.get(uuid_info, :version) == 1
assert Keyword.get(uuid_info, :type) == :hex
assert %IRI{value: "http://example.com/ns/" <> uuid} =
IRI.UUID.Generator.generator_config(
prefix: "http://example.com/ns/",
version: 3,
format: :hex,
namespace: :url
)
|> Generator.generate(
version: 5,
namespace: :dns,
name: "example.com"
)
uuid_info = UUID.info!(uuid)
assert Keyword.get(uuid_info, :version) == 5
assert Keyword.get(uuid_info, :type) == :hex
end
end