otwarchive-symphonyarchive/features/step_definitions/external_work_steps.rb

102 lines
4.2 KiB
Ruby
Raw Permalink Normal View History

2026-03-11 22:22:11 +00:00
DEFAULT_EXTERNAL_URL = "http://example.org/200"
DEFAULT_EXTERNAL_CREATOR = "Zooey Glass"
DEFAULT_EXTERNAL_TITLE = "A Work Not Posted To The AO3"
DEFAULT_EXTERNAL_SUMMARY = "This is my story, I am its author."
DEFAULT_EXTERNAL_FANDOM = "External Fandom"
DEFAULT_EXTERNAL_RELATIONSHIP = "Charater A & Character B"
DEFAULT_EXTERNAL_CATEGORY = "F/M"
DEFAULT_EXTERNAL_CHARACTERS = "Character A, Character B"
DEFAULT_BOOKMARK_NOTES = "I liked this story."
DEFAULT_BOOKMARK_TAGS = "Awesome"
Given /^an external work$/ do
step %{I set up an external work}
click_button("Create")
end
Given /^I set up an external work$/ do
step %{mock websites with no content}
visit new_external_work_path
fill_in("URL", with: DEFAULT_EXTERNAL_URL)
fill_in("external_work_author", with: DEFAULT_EXTERNAL_CREATOR)
fill_in("external_work_title", with: DEFAULT_EXTERNAL_TITLE)
step %{I fill in basic external work tags}
fill_in("bookmark_notes", with: DEFAULT_BOOKMARK_NOTES)
fill_in("Your tags", with: DEFAULT_BOOKMARK_TAGS)
end
Given /^I bookmark the external work "([^\"]*)"(?: with fandom "([^"]*)")?(?: with character "([^"]*)")?$/ do |title, fandom, character|
step %{I set up an external work}
fill_in("external_work_title", with: title)
fill_in("Fandoms", with: fandom) if fandom.present?
fill_in("Characters", with: character) if character.present?
click_button("Create")
end
Given "{string} has bookmarked an external work" do |user|
step %{mock websites with no content}
step %{basic tags}
step %{I am logged in as "#{user}"}
visit new_external_work_path
# Typically, when we write step definitions, we prefer to use a
# field's id attribute over its label. But in this case,
# we have to use the labels for some fields because the ids
# change when JavaScript is enabled.
fill_in("URL", with: DEFAULT_EXTERNAL_URL)
fill_in("external_work_author", with: DEFAULT_EXTERNAL_CREATOR)
fill_in("external_work_title", with: DEFAULT_EXTERNAL_TITLE)
fill_in("external_work_summary", with: DEFAULT_EXTERNAL_SUMMARY)
fill_in("Fandoms", with: DEFAULT_EXTERNAL_FANDOM)
select(ArchiveConfig.RATING_TEEN_TAG_NAME, from: "external_work_rating_string")
check(DEFAULT_EXTERNAL_CATEGORY)
fill_in("Relationships", with: DEFAULT_EXTERNAL_RELATIONSHIP)
fill_in("Characters", with: DEFAULT_EXTERNAL_CHARACTERS)
click_button("Create")
end
Given "the external work {string} has {int} {word} tag(s)" do |title, count, type|
work = ExternalWork.find_by(title: title)
work.send("#{type.pluralize}=", FactoryBot.create_list(type.to_sym, count))
end
When /^I view the external work "([^\"]*)"$/ do |external_work|
external_work = ExternalWork.find_by_title(external_work)
visit external_work_url(external_work)
end
When /^the (character|fandom|relationship) "(.*?)" is removed from the external work "(.*?)"$/ do |tag_type, tag, title|
external_work = ExternalWork.find_by(title: title)
tags = external_work.tags.where(type: tag_type).pluck(:name) - [tag]
tag_string = tags.join(", ")
step %{I am logged in as a "policy_and_abuse" admin}
visit edit_external_work_path(external_work)
fill_in("work_#{tag_type}", with: tag_string)
click_button("Update External work")
step %{all indexing jobs have been run}
end
Then /^the work info for my new bookmark should match the original$/ do
works = ExternalWork.where(url: "http://example.org/200").order("created_at ASC")
original_work = works[0]
new_work = works[1]
expect(new_work.author).to eq(original_work.author)
expect(new_work.title).to eq(original_work.title)
step %{the summary and tag info for my new bookmark should match the original}
end
Then /^the title and creator info for my new bookmark should vary from the original$/ do
works = ExternalWork.where(url: "http://example.org/200").order("created_at ASC")
original_work = works[0]
new_work = works[1]
expect(new_work.author).not_to eq(original_work.author)
expect(new_work.title).not_to eq(original_work.title)
end
Then /^the summary and tag info for my new bookmark should match the original$/ do
works = ExternalWork.where(url: "http://example.org/200").order("created_at ASC")
original_work = works[0]
new_work = works[1]
expect(new_work.summary).to eq(original_work.summary)
expect(new_work.tags).to eq(original_work.tags)
end