115 lines
2.3 KiB
Ruby
115 lines
2.3 KiB
Ruby
require "application_system_test_case"
|
|
|
|
class PublicBrowsingTest < ApplicationSystemTestCase
|
|
test "visitor can browse entries without logging in" do
|
|
visit root_path
|
|
|
|
assert_selector "h1", text: "Sanasto Wiki"
|
|
assert_selector ".entry-row", minimum: 1
|
|
end
|
|
|
|
test "visitor can search entries" do
|
|
entry = entries(:one)
|
|
visit root_path
|
|
|
|
fill_in "q", with: entry.fi
|
|
click_button "Search"
|
|
|
|
assert_text entry.fi
|
|
end
|
|
|
|
test "visitor can filter by language" do
|
|
visit root_path
|
|
|
|
click_button "Finnish"
|
|
|
|
assert_current_path entries_path(language: "fi")
|
|
end
|
|
|
|
test "visitor can filter by category" do
|
|
visit root_path
|
|
|
|
select "Word", from: "category"
|
|
|
|
assert_current_path entries_path(category: "word")
|
|
end
|
|
|
|
test "visitor can view entry details" do
|
|
entry = entries(:one)
|
|
visit root_path
|
|
|
|
click_link entry.fi
|
|
|
|
assert_text entry.fi
|
|
assert_text entry.en if entry.en.present?
|
|
end
|
|
|
|
test "visitor can browse alphabetically" do
|
|
visit root_path
|
|
|
|
click_button "Finnish"
|
|
click_link "A"
|
|
|
|
assert_current_path entries_path(language: "fi", starts_with: "a")
|
|
end
|
|
|
|
test "visitor can download XLSX" do
|
|
visit root_path
|
|
|
|
click_link "Download XLSX"
|
|
|
|
assert_equal "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
page.response_headers["Content-Type"]
|
|
end
|
|
|
|
test "visitor sees sign in link in header" do
|
|
visit root_path
|
|
|
|
within "header" do
|
|
assert_link "Sign In"
|
|
end
|
|
end
|
|
|
|
test "visitor can request new entry" do
|
|
visit root_path
|
|
|
|
click_link "Request Entry"
|
|
|
|
assert_current_path new_request_path
|
|
assert_field "Name"
|
|
assert_field "Email"
|
|
end
|
|
|
|
test "search results show no results message when nothing matches" do
|
|
visit root_path
|
|
|
|
fill_in "q", with: "nonexistentword12345xyz"
|
|
click_button "Search"
|
|
|
|
assert_text "No entries matched your filters"
|
|
end
|
|
|
|
test "visitor can paginate through results" do
|
|
# Create enough entries to require pagination
|
|
26.times do |i|
|
|
Entry.create!(
|
|
fi: "Test Entry #{i}",
|
|
category: :word,
|
|
status: :active
|
|
)
|
|
end
|
|
|
|
visit root_path
|
|
|
|
assert_selector ".entry-row", count: 25
|
|
assert_link "Next"
|
|
end
|
|
|
|
test "visitor sees entry statistics" do
|
|
visit root_path
|
|
|
|
assert_text "Total Entries"
|
|
assert_text "Verified"
|
|
end
|
|
end
|