language_colours/test/language_colours_test.exs
2021-09-03 21:51:45 +03:00

67 lines
2 KiB
Elixir

defmodule LanguageColoursTest do
use ExUnit.Case
setup_all do
start_supervised!(
{LanguageColours.ETSDatabase,
LanguageColours.ETSDatabase.startup_options(
Application.get_env(:language_colours, :databases).test_db
)}
)
:ok
end
test "gets the correct colour" do
assert LanguageColours.get("Ada", :test_db) == "#02f88c"
end
test "gets fallback if colour doesn't exist" do
assert "#" <> <<_rest::binary-size(6)>> = LanguageColours.get("Aaaaaaadaaaaaaa", :test_db)
end
test "is case insensitive" do
assert LanguageColours.get("AdA", :test_db) == "#02f88c"
end
test "returns nil if there is no fallback and language wasn't found" do
config =
Application.get_env(:language_colours, :databases).test_db
|> Map.put(:fallback, false)
|> Map.put(:server_name, :test_db_2)
|> Map.put(:ets_table, :best_table)
start_supervised!(
{LanguageColours.ETSDatabase, LanguageColours.ETSDatabase.startup_options(config)}
)
assert is_nil(LanguageColours.get("Aaaaaaadaaaaaaa", config))
end
test "language is deleted if no longer in updated dataset" do
config =
Application.get_env(:language_colours, :databases).test_db
|> Map.put(:file, "test/colours-without-ada.json")
assert LanguageColours.update(config) == :ok
assert LanguageColours.get("Ada", config) != "#02f88c"
# Teardown
config = Application.get_env(:language_colours, :databases).test_db
assert LanguageColours.update(config) == :ok
end
test "languages are updated correctly" do
config =
Application.get_env(:language_colours, :databases).test_db
|> Map.put(:file, "test/colours-without-ada.json")
assert LanguageColours.get("1C Enterprise", config) == "#814CCC"
assert LanguageColours.update(config) == :ok
assert LanguageColours.get("Ada", config) != "#ABCDEF"
# Teardown
config = Application.get_env(:language_colours, :databases).test_db
assert LanguageColours.update(config) == :ok
end
end