Files
sanasto-wiki/test/helpers/entries_helper_test.rb

211 lines
6.3 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
require "test_helper"
class EntriesHelperTest < ActionView::TestCase
setup do
@entry = entries(:one)
end
# alphabet_letters tests
test "alphabet_letters returns A-Z for blank language code" do
result = alphabet_letters(nil)
assert_equal ("A".."Z").to_a, result
assert_equal 26, result.length
end
test "alphabet_letters returns A-Z for empty string" do
result = alphabet_letters("")
assert_equal ("A".."Z").to_a, result
end
test "alphabet_letters returns A-Z for unknown language" do
result = alphabet_letters("unknown")
assert_equal ("A".."Z").to_a, result
end
test "alphabet_letters returns A-Z for English" do
result = alphabet_letters("en")
assert_equal ("A".."Z").to_a, result
assert_equal 26, result.length
end
test "alphabet_letters returns A-Z for German" do
result = alphabet_letters("de")
assert_equal ("A".."Z").to_a, result
end
test "alphabet_letters returns Cyrillic alphabet for Russian" do
result = alphabet_letters("ru")
assert_equal 33, result.length
assert_includes result, "А"
assert_includes result, "Я"
assert_includes result, "Ё"
assert_not_includes result, "A"
assert_not_includes result, "Z"
end
test "alphabet_letters returns A-Z plus Æ Ø Å for Norwegian" do
result = alphabet_letters("no")
assert_equal 29, result.length
assert_includes result, "A"
assert_includes result, "Z"
assert_includes result, "Æ"
assert_includes result, "Ø"
assert_includes result, "Å"
assert_equal [ "Æ", "Ø", "Å" ], result.last(3)
end
test "alphabet_letters returns A-Z plus Å Ä Ö for Swedish" do
result = alphabet_letters("sv")
assert_equal 29, result.length
assert_includes result, "A"
assert_includes result, "Z"
assert_includes result, "Å"
assert_includes result, "Ä"
assert_includes result, "Ö"
assert_equal [ "Å", "Ä", "Ö" ], result.last(3)
end
test "alphabet_letters returns A-Z plus Å Ä Ö for Finnish" do
result = alphabet_letters("fi")
assert_equal 29, result.length
assert_includes result, "A"
assert_includes result, "Z"
assert_includes result, "Å"
assert_includes result, "Ä"
assert_includes result, "Ö"
assert_equal [ "Å", "Ä", "Ö" ], result.last(3)
end
# entry_translation_for tests
test "entry_translation_for returns Finnish translation" do
@entry.fi = "Suomalainen sana"
result = entry_translation_for(@entry, "fi")
assert_equal "Suomalainen sana", result
end
test "entry_translation_for returns English translation" do
@entry.en = "English word"
result = entry_translation_for(@entry, "en")
assert_equal "English word", result
end
test "entry_translation_for returns Swedish translation" do
@entry.sv = "Svenskt ord"
result = entry_translation_for(@entry, "sv")
assert_equal "Svenskt ord", result
end
test "entry_translation_for returns Norwegian translation" do
@entry.no = "Norsk ord"
result = entry_translation_for(@entry, "no")
assert_equal "Norsk ord", result
end
test "entry_translation_for returns Russian translation" do
@entry.ru = "Русское слово"
result = entry_translation_for(@entry, "ru")
assert_equal "Русское слово", result
end
test "entry_translation_for returns German translation" do
@entry.de = "Deutsches Wort"
result = entry_translation_for(@entry, "de")
assert_equal "Deutsches Wort", result
end
test "entry_translation_for returns nil for invalid language code" do
result = entry_translation_for(@entry, "invalid")
assert_nil result
end
test "entry_translation_for returns nil for non-existent attribute" do
result = entry_translation_for(@entry, "zz")
assert_nil result
end
test "entry_translation_for returns nil for blank translation" do
@entry.fi = nil
result = entry_translation_for(@entry, "fi")
assert_nil result
end
test "entry_translation_for handles symbol language code" do
@entry.fi = "Test"
result = entry_translation_for(@entry, :fi)
assert_equal "Test", result
end
# format_entry_category tests
test "format_entry_category formats word category" do
@entry.category = "word"
result = format_entry_category(@entry)
assert_equal "Word", result
end
test "format_entry_category formats phrase category" do
@entry.category = "phrase"
result = format_entry_category(@entry)
assert_equal "Phrase", result
end
test "format_entry_category formats proper_name category" do
@entry.category = "proper_name"
result = format_entry_category(@entry)
assert_equal "Proper name", result
end
test "format_entry_category formats title category" do
@entry.category = "title"
result = format_entry_category(@entry)
assert_equal "Title", result
end
test "format_entry_category formats reference category" do
@entry.category = "reference"
result = format_entry_category(@entry)
assert_equal "Reference", result
end
test "format_entry_category formats other category" do
@entry.category = "other"
result = format_entry_category(@entry)
assert_equal "Other", result
end
# format_entry_status tests
test "format_entry_status returns requested badge" do
@entry.status = :requested
result = format_entry_status(@entry)
assert_match /Requested/, result
assert_match /bg-yellow-100/, result
assert_match /text-yellow-800/, result
end
test "format_entry_status returns approved badge" do
@entry.status = :approved
result = format_entry_status(@entry)
assert_match /Approved/, result
assert_match /bg-blue-100/, result
assert_match /text-blue-800/, result
end
test "format_entry_status returns active badge" do
@entry.status = :active
result = format_entry_status(@entry)
assert_match /Active/, result
assert_match /bg-green-100/, result
assert_match /text-green-800/, result
end
test "format_entry_status badge contains proper HTML structure" do
@entry.status = :active
result = format_entry_status(@entry)
assert_match /<span/, result
assert_match /class=/, result
assert_match /px-2 py-1/, result
assert_match /text-xs/, result
assert_match /font-semibold/, result
assert_match /rounded-full/, result
end
end