otwarchive-symphonyarchive/features/support/paths.rb
2026-03-11 22:22:11 +00:00

311 lines
13 KiB
Ruby

module NavigationHelpers
# Maps a name to a path. Used by the
#
# When /^I go to (.+)$/ do |page_name|
#
# step definition in web_steps.rb
#
def path_to(page_name)
case page_name
when /the home\s?page/
'/'
when /the media page/
media_index_path
when /^the search bookmarks page$/i
step %{all indexing jobs have been run}
search_bookmarks_path
when /^the search tags page$/i
step %{all indexing jobs have been run}
search_tags_path
when /^the search works page$/i
step %{all indexing jobs have been run}
search_works_path
when /^the search people page$/i
step %{all indexing jobs have been run}
search_people_path
when /^the bookmarks page$/i
# This cached page only expires by time, not by any user action;
# just clear it every time.
Rails.cache.delete "bookmarks/index/latest/v2_true"
bookmarks_path
when /^the works page$/i
# This cached page only expires by time, not by any user action;
# just clear it every time.
Rails.cache.delete "works/index/latest/v1"
works_path
when /^the admin login page$/i
new_admin_session_path
when /^the redirect page$/i
redirect_path
# the following are examples using path_to_pickle
when /^#{capture_model}(?:'s)? page$/ # eg. the forum's page
path_to_pickle $1
when /^#{capture_model}(?:'s)? #{capture_model}(?:'s)? page$/ # eg. the forum's post's page
path_to_pickle $1, $2
when /^#{capture_model}(?:'s)? #{capture_model}'s (.+?) page$/ # eg. the forum's post's comments page
path_to_pickle $1, $2, extra: $3 # or the forum's post's edit page
when /^#{capture_model}(?:'s)? (.+?) page$/ # eg. the forum's posts page
path_to_pickle $1, extra: $2 # or the forum's edit page
# Add more mappings here.
when /^the tagsets page$/i
tag_sets_path
when /^the login page$/i
new_user_session_path
when /^account creation page$/i
signup_path
when /^invite requests page$/i
invite_requests_path
when /^the manage invite queue page$/i
manage_invite_requests_path
when /the blocked users page for "([^"]*)"/
user_blocked_users_path(Regexp.last_match(1))
when /the muted users page for "([^"]*)"/
user_muted_users_path(Regexp.last_match(1))
when /^(.*)'s claims page$/
user_claims_path(Regexp.last_match(1))
when /^(.*)'s signups page$/
user_signups_path(Regexp.last_match(1))
when /^(.*)'s inbox page$/
user_inbox_path(Regexp.last_match(1))
when /^(.*)'s co-creator requests page$/
user_creatorships_path(Regexp.last_match(1))
when /the gifts page$/
gifts_path
when /the gifts page for the recipient (.*)$/
gifts_path(recipient: $1)
when /^the assignments page for "(.*)"$/
user_assignments_path(Regexp.last_match(1))
when /^(.*)'s collection items page$/
user_collection_items_path(Regexp.last_match(1))
when /^(.*)'s gifts page/
user_gifts_path(user_id: $1)
when /the import page/
new_work_path(import: 'true')
when /the public skins page/
skins_path
when /the work-skins page/
skins_path(skin_type: "WorkSkin")
when /^(.*?)(?:'s)? user page$/i
user_path(id: $1)
when /^the (user|dashboard) page for user "(.*?)" with pseud "(.*?)"$/i
user_pseud_path(user_id: Regexp.last_match(2), id: Regexp.last_match(3))
when /^(.*?)(?:'s)? user url$/i
user_url(id: $1)
when /^([^ ]*?)(?:'s)? works page$/i
step %{all indexing jobs have been run}
user_works_path(user_id: $1)
when /^the works page for user "(.*?)" with pseud "(.*?)"$/i
step %{all indexing jobs have been run}
user_pseud_works_path(user_id: Regexp.last_match(1), pseud_id: Regexp.last_match(2))
when /^the "(.*)" work page/
# TODO: Avoid this in favor of 'the work "title"', and eventually remove.
work_path(Work.find_by(title: $1))
when /^the work page with title (.*)/
# TODO: Avoid this in favor of 'the work "title"', and eventually remove.
work_path(Work.find_by(title: $1))
when /^the work "(.*?)"$/
work_path(Work.find_by(title: $1))
when /^the work "(.*?)" in full mode$/
work_path(Work.find_by(title: $1), view_full_work: true)
when /^the ([\d]+)(?:st|nd|rd|th) chapter of the work "(.*?)"$/
work = Work.find_by(title: $2)
chapter = work.chapters_in_order(include_content: false)[$1.to_i - 1]
work_chapter_path(work, chapter)
when /^the bookmarks page for user "(.*)" with pseud "(.*)"$/i
step %{all indexing jobs have been run}
user_pseud_bookmarks_path(user_id: $1, pseud_id: $2)
when /^(.*?)(?:'s)? bookmarks page$/i
step %{all indexing jobs have been run}
user_bookmarks_path(user_id: $1)
when /^(.*?)(?:'s)? pseuds page$/i
user_pseuds_path(user_id: $1)
when /^(.*?)(?:'s)? manage invitations page$/i
manage_user_invitations_path(user_id: $1)
when /^(.*?)(?:'s)? invitations page$/i
user_invitations_path(user_id: $1)
when /^(.*?)(?:'s)? reading page$/i
user_readings_path(user_id: $1)
when /^(.*?)(?:'s)? series page$/i
user_series_index_path(user_id: $1)
when /^the series page for user "(.*?)" with pseud "(.*?)"$/i
step %{all indexing jobs have been run}
user_pseud_series_index_path(user_id: Regexp.last_match(1), pseud_id: Regexp.last_match(2))
when /^(.*?)(?:'s)? stats page$/i
user_stats_path(user_id: $1)
when /^(.*?)(?:'s)? preferences page$/i
user_preferences_path(user_id: $1)
when /^(.*?)(?:'s)? related works page$/i
user_related_works_path(user_id: $1)
when /^the subscriptions page for "(.*)"$/i
user_subscriptions_path(user_id: $1)
when /^(.*?)(?:'s)? profile page$/i
user_profile_path(user_id: $1)
when /^(.*)'s skins page/
user_skins_path(user_id: $1)
when /^"(.*)" skin page/
skin_path(Skin.find_by(title: $1))
when /^the new skin page/
new_skin_path
when /^the new wizard skin page/
new_skin_path(wizard: true)
when /^"(.*)" edit skin page/
edit_skin_path(Skin.find_by(title: $1))
when /^"(.*)" edit wizard skin page/
edit_skin_path(Skin.find_by(title: $1), wizard: true)
when /^the new collection page/
new_collection_path
when /^"(.*)" collection's page$/i # e.g. when I go to "Collection name" collection's page
step %{all indexing jobs have been run} # reindex to show recent works/bookmarks
collection_path(Collection.find_by(title: $1))
when /^"(.*)" collection edit page$/i
edit_collection_path(Collection.find_by(title: $1))
when /^the "(.*)" signups page$/i # e.g. when I go to the "Collection name" signup page
collection_signups_path(Collection.find_by(title: $1))
when /^the "(.*)" requests page$/i # e.g. when I go to the "Collection name" signup page
collection_requests_path(Collection.find_by(title: $1))
when /^the "(.*)" assignments page$/i # e.g. when I go to the "Collection name" assignments page
collection_assignments_path(Collection.find_by(title: $1))
when /^the "(.*)" participants page$/i # e.g. when I go to the "Collection name" participants page
collection_participants_path(Collection.find_by(title: $1))
when /^"(.*)" collection's url$/i # e.g. when I go to "Collection name" collection's url
collection_url(Collection.find_by(title: $1))
when /^"(.*)" gift exchange edit page$/i
edit_collection_gift_exchange_path(Collection.find_by(title: $1))
when /^"(.*)" gift exchange matching page$/i
collection_potential_matches_path(Collection.find_by(title: $1))
when /^the works tagged "(.*?)" in collection "(.*?)"$/i
step %{all indexing jobs have been run}
collection_tag_works_path(Collection.find_by(title: $2), Tag.find_by_name($1))
when /^the works tagged "(.*)"$/i
step %{all indexing jobs have been run}
tag_works_path(Tag.find_by_name($1))
when /^the bookmarks tagged "(.*)"$/i
step %{all indexing jobs have been run}
tag_bookmarks_path(Tag.find_by_name($1))
when /^the bookmarks in collection "(.*)"$/i
step %{all indexing jobs have been run}
collection_bookmarks_path(Collection.find_by(title: $1))
when /^the first bookmark for the work "(.*?)"$/i
work = Work.find_by(title: Regexp.last_match(1))
bookmark_path(work.bookmarks.first)
when /^the new bookmark page for work "(.*?)"$/i
new_work_bookmark_path(Work.find_by(title: Regexp.last_match(1)))
when /^the tag comments? page for "(.*)"$/i
tag_comments_path(Tag.find_by_name($1))
when /^the work comments? page for "(.*?)"$/i
work_comments_path(Work.find_by(title: $1), show_comments: true)
when /^the work kudos page for "(.*?)"$/i
work_kudos_path(Work.find_by(title: $1))
when /^the FAQ reorder page$/i
manage_archive_faqs_path
when /^the Wrangling Guidelines reorder page$/i
manage_wrangling_guidelines_path
when /^the tos page$/i
tos_path
when /^the faq page$/i
archive_faqs_path
when /^the wrangling guidelines page$/i
wrangling_guidelines_path
when /^the support page$/i
new_feedback_report_path
when /^the new tag ?set page$/i
new_tag_set_path
when /^the "(.*)" tag ?set edit page$/i
edit_tag_set_path(OwnedTagSet.find_by(title: $1))
when /^the "(.*)" tag ?set page$/i
tag_set_path(OwnedTagSet.find_by(title: $1))
when /^the Open Doors tools page$/i
opendoors_tools_path
when /^the Open Doors external authors page$/i
opendoors_external_authors_path
when /^the claim page for "(.*)"$/i
claim_path(invitation_token: Invitation.find_by(invitee_email: $1).token)
when /^the languages page$/i
languages_path
when /^the wranglers page$/i
tag_wranglers_path
when /^the wrangling page for "(.*)"$/i
tag_wrangler_path(User.find_by(login: Regexp.last_match(1)))
when /^the unassigned fandoms page $/i
unassigned_fandoms_path
when /^the "(.*)" fandoms page$/i
media_fandoms_path(Media.find_by(name: Regexp.last_match(1)))
when /^the "(.*)" tag page$/i
tag_path(Tag.find_by_name($1))
when /^the '(.*)' tag edit page$/i
edit_tag_path(Tag.find_by(name: Regexp.last_match(1)))
when /^the "(.*)" tag edit page$/i
edit_tag_path(Tag.find_by(name: Regexp.last_match(1)))
when /^the new tag page$/i
new_tag_path
when /^the wrangling tools page$/
tag_wranglings_path
when /^the new external work page$/i
new_external_work_path
when /^the external works page$/i
external_works_path
when /^the external works page with only duplicates$/i
external_works_path(show: :duplicates)
when /^the new user password page$/i
new_user_password_path
when /^the edit user password page$/i
edit_user_password_path
when /^the (.*) mass bin$/i
tag_wranglings_path(show: Regexp.last_match(1).pluralize)
when /^the tags page$/i
tags_path
when /^the orphan all works page$/i
new_orphan_path
# Admin Pages
when /^the admin-posts page$/i
admin_posts_path
when /^the "(.*)" admin post page$/i
admin_post_path(AdminPost.find_by(title: Regexp.last_match(1)))
when /^the unreviewed comments page for the admin post "(.*)"$/i
unreviewed_admin_post_comments_path(AdminPost.find_by(title: Regexp.last_match(1)))
when /^the admin-settings page$/i
admin_settings_path
when /^the admin-activities page$/i
admin_activities_path
when /^the admin-blacklist page$/i
admin_blacklisted_emails_path
when /^the manage users page$/
step "all indexing jobs have been run"
admin_users_path
when /^the bulk email search page$/i
bulk_search_admin_users_path
when /^the user administration page for "(.*)"$/i
admin_user_path(User.find_by(login: $1))
when /^the new admin password page$/i
new_admin_password_path
when /^the edit admin password page$/i
edit_admin_password_path
# Here is an example that pulls values out of the Regexp:
#
# when /^(.*)'s profile page$/i
# user_profile_path(User.find_by(login: $1))
else
begin
page_name =~ /the (.*) page/
path_components = $1.split(/\s+/)
self.send(path_components.push('path').join('_').to_sym)
rescue Object => e
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
"Now, go and add a mapping in #{__FILE__}"
end
end
end
end
World(NavigationHelpers)