197 lines
5.3 KiB
Elixir
197 lines
5.3 KiB
Elixir
defmodule LabelmakerWeb.ConstantsTest do
|
|
use ExUnit.Case, async: true
|
|
alias LabelmakerWeb.Constants
|
|
|
|
describe "colors/0" do
|
|
test "returns list of valid colors" do
|
|
colors = Constants.colors()
|
|
assert is_list(colors)
|
|
assert "black" in colors
|
|
assert "white" in colors
|
|
assert "red" in colors
|
|
assert "blue" in colors
|
|
assert "green" in colors
|
|
end
|
|
|
|
test "contains no duplicates" do
|
|
colors = Constants.colors()
|
|
assert length(colors) == length(Enum.uniq(colors))
|
|
end
|
|
end
|
|
|
|
describe "fonts/0" do
|
|
test "returns list of valid fonts" do
|
|
fonts = Constants.fonts()
|
|
assert is_list(fonts)
|
|
assert "Helvetica" in fonts
|
|
assert "Impact" in fonts
|
|
assert "Georgia" in fonts
|
|
end
|
|
|
|
test "fonts are properly formatted" do
|
|
fonts = Constants.fonts()
|
|
# Should not contain -MS suffix
|
|
refute "Comic-Sans-MS" in fonts
|
|
# Should contain cleaned version
|
|
assert "Comic Sans" in fonts
|
|
end
|
|
end
|
|
|
|
describe "font_map/0" do
|
|
test "returns map with font shortcuts" do
|
|
font_map = Constants.font_map()
|
|
assert is_map(font_map)
|
|
assert font_map["h"] == "Helvetica"
|
|
assert font_map["i"] == "Impact"
|
|
assert font_map["cs"] == "Comic-Sans-MS"
|
|
end
|
|
|
|
test "includes full font names as keys" do
|
|
font_map = Constants.font_map()
|
|
assert font_map["helvetica"] == "Helvetica"
|
|
assert font_map["impact"] == "Impact"
|
|
end
|
|
end
|
|
|
|
describe "outlines/0" do
|
|
test "returns list including 'none' and all colors" do
|
|
outlines = Constants.outlines()
|
|
assert "none" in outlines
|
|
assert "black" in outlines
|
|
assert "white" in outlines
|
|
end
|
|
end
|
|
|
|
describe "sizes/0" do
|
|
test "returns list of valid sizes as strings" do
|
|
sizes = Constants.sizes()
|
|
assert is_list(sizes)
|
|
assert "16" in sizes
|
|
assert "72" in sizes
|
|
assert "128" in sizes
|
|
end
|
|
|
|
test "all sizes are strings" do
|
|
sizes = Constants.sizes()
|
|
assert Enum.all?(sizes, &is_binary/1)
|
|
end
|
|
|
|
test "sizes are in increments of 8" do
|
|
sizes = Constants.sizes()
|
|
integers = Enum.map(sizes, &String.to_integer/1)
|
|
# Check that consecutive sizes differ by 8
|
|
diffs =
|
|
integers
|
|
|> Enum.chunk_every(2, 1, :discard)
|
|
|> Enum.map(fn [a, b] -> b - a end)
|
|
|
|
assert Enum.all?(diffs, &(&1 == 8))
|
|
end
|
|
end
|
|
|
|
describe "defaults/0" do
|
|
test "returns map with default values" do
|
|
defaults = Constants.defaults()
|
|
assert is_map(defaults)
|
|
assert defaults.color == "black"
|
|
assert defaults.font == "Helvetica"
|
|
assert defaults.size == "72"
|
|
assert defaults.outline == "white"
|
|
end
|
|
|
|
test "includes all required keys" do
|
|
defaults = Constants.defaults()
|
|
assert Map.has_key?(defaults, :color)
|
|
assert Map.has_key?(defaults, :font)
|
|
assert Map.has_key?(defaults, :size)
|
|
assert Map.has_key?(defaults, :outline)
|
|
assert Map.has_key?(defaults, :label)
|
|
assert Map.has_key?(defaults, :align)
|
|
assert Map.has_key?(defaults, :width)
|
|
assert Map.has_key?(defaults, :height)
|
|
end
|
|
end
|
|
|
|
describe "form_defaults/0" do
|
|
test "returns map with form-specific defaults" do
|
|
form_defaults = Constants.form_defaults()
|
|
assert is_map(form_defaults)
|
|
assert form_defaults.sizing == "font"
|
|
assert form_defaults.preview_background == "r"
|
|
end
|
|
end
|
|
|
|
describe "permitted_alignments/0" do
|
|
test "returns list of valid alignments" do
|
|
alignments = Constants.permitted_alignments()
|
|
assert "left" in alignments
|
|
assert "center" in alignments
|
|
assert "right" in alignments
|
|
end
|
|
end
|
|
|
|
describe "permitted_gravity/0" do
|
|
test "returns list of ImageMagick gravity values" do
|
|
gravity = Constants.permitted_gravity()
|
|
assert "west" in gravity
|
|
assert "center" in gravity
|
|
assert "east" in gravity
|
|
end
|
|
end
|
|
|
|
describe "sizing_values/0" do
|
|
test "returns valid sizing modes" do
|
|
values = Constants.sizing_values()
|
|
assert "font" in values
|
|
assert "wxh" in values
|
|
end
|
|
end
|
|
|
|
describe "max_label_length/0" do
|
|
test "returns positive integer" do
|
|
max_length = Constants.max_label_length()
|
|
assert is_integer(max_length)
|
|
assert max_length > 0
|
|
end
|
|
end
|
|
|
|
describe "max_width/0 and max_height/0" do
|
|
test "returns positive integers" do
|
|
assert is_integer(Constants.max_width())
|
|
assert is_integer(Constants.max_height())
|
|
assert Constants.max_width() > 0
|
|
assert Constants.max_height() > 0
|
|
end
|
|
end
|
|
|
|
describe "rows_min/0 and rows_max/0" do
|
|
test "returns valid range" do
|
|
assert Constants.rows_min() > 0
|
|
assert Constants.rows_max() > Constants.rows_min()
|
|
end
|
|
end
|
|
|
|
describe "danger/0" do
|
|
test "returns hex color code" do
|
|
danger = Constants.danger()
|
|
assert String.starts_with?(danger, "#")
|
|
end
|
|
end
|
|
|
|
describe "permitted_keys/0" do
|
|
test "returns list of all permitted parameter keys" do
|
|
keys = Constants.permitted_keys()
|
|
assert is_list(keys)
|
|
assert "color" in keys
|
|
assert "font" in keys
|
|
assert "size" in keys
|
|
assert "label" in keys
|
|
end
|
|
|
|
test "all keys are strings" do
|
|
keys = Constants.permitted_keys()
|
|
assert Enum.all?(keys, &is_binary/1)
|
|
end
|
|
end
|
|
end
|