diaspora/features/step_definitions/trumpeter_steps.rb

158 lines
No EOL
4.1 KiB
Ruby

def type_to_mention(typed, user_name)
#add each of the charcters to jquery.mentionsInput's buffer
typed.each_char do |char|
key_code = char.ord
page.execute_script <<-JAVASCRIPT
var e = new $.Event("keypress")
e.which = #{key_code}
$("textarea.text").trigger(e)
JAVASCRIPT
end
#trigger event that brings up mentions input
page.execute_script('$("textarea.text").trigger("input")')
page.find(".mentions-autocomplete-list li:contains('#{user_name}')").click()
end
def aspects_dropdown
find(".dropdown-toggle")
end
def select_from_dropdown(option_text, dropdown)
dropdown.click
within ".dropdown-menu" do
link = find("a:contains('#{option_text}')")
link.should be_visible
link.click
end
#assert dropdown text is link
end
def go_to_framer
click_button "Next"
end
def finalize_frame
click_button "done"
end
def assert_post_renders_with(mood)
find(".#{mood.downcase}").should be_present
end
def get_image_filename(filename)
@image_sources[filename].tap {|src| src.should be_present}
end
def set_image_filename(file_name)
@image_sources ||= {}
@image_sources[file_name] = all(".photos img").last["src"].tap {|src| src.should be_present}
end
def find_image_by_filename(filename)
find("img[src='#{get_image_filename(filename)}']")
end
def upload_photo(file_name)
orig_photo_count = all(".photos img").size
within ".new_photo" do
attach_file "photo[user_file]", Rails.root.join("spec", "fixtures", file_name)
wait_until { all(".photos img").size == orig_photo_count + 1 }
end
set_image_filename(file_name)
end
When /^I trumpet$/ do
visit new_post_path
end
When /^I write "([^"]*)"(?:| with body "([^"]*)")$/ do |headline, body|
fill_in 'text', :with => [headline, body].join("\n")
end
Then /I type "([^"]*)" to mention "([^"]*)"$/ do |typed, user_name|
type_to_mention(typed, user_name)
end
When /^I select "([^"]*)" in my aspects dropdown$/ do |title|
within ".aspect-selector" do
select_from_dropdown(title, aspects_dropdown)
end
end
Then /^"([^"]*)" should be a (limited|public) post in my stream$/ do |post_text, scope|
find_post_by_text(post_text).find(".post_scope").text.should =~ /#{scope}/i
end
When /^I upload a fixture picture with filename "([^"]*)"$/ do |file_name|
upload_photo(file_name)
end
Then /^"([^"]*)" should have the "([^"]*)" picture$/ do |post_text, file_name|
within find_post_by_text(post_text) do
find_image_by_filename(file_name).should be_present
end
end
When /^I go through the default composer$/ do
go_to_framer
finalize_frame
end
When /^I start the framing process$/ do
go_to_framer
end
When /^I finalize my frame$/ do
finalize_frame
end
Then /^"([^"]*)" should have (\d+) pictures$/ do |post_text, number_of_pictures|
find_post_by_text(post_text).all(".photo_attachments img").size.should == number_of_pictures.to_i
end
Then /^I should see "([^"]*)" in the framer preview$/ do |post_text|
within(find(".post")) { page.should have_content(post_text) }
end
When /^I select the mood "([^"]*)"$/ do |mood|
click_link mood
end
Then /^the post's (?:default |)mood should (?:still |)be "([^"]*)"$/ do |mood|
assert_post_renders_with(mood)
end
When /^"([^"]*)" should be in the post's picture viewer$/ do |file_name|
within(".photo_viewer") do
find_image_by_filename(file_name).should be_present
end
end
Then /^it should be a wallpaper frame with the background "([^"]*)"$/ do |file_name|
assert_post_renders_with("Wallpaper")
find("div.photo-fill")["data-img-src"].should == get_image_filename(file_name)
end
When /^the frame's headline should be "([^"]*)"$/ do |header_text|
find("header").text.should == header_text
end
When /^the frame's body should be "([^"]*)"$/ do |body_text|
find("section.body").text.should == body_text
end
Then /^the post should mention "([^"]*)"$/ do |user_name|
within('#post-content') { find("a:contains('#{user_name}')").should be_present }
end
When /^I click the "([^"]*)" post$/ do |post_text|
find(".content:contains('#{post_text}') .permalink").click
end
Then /^"([^"]*)" should be the first canvas frame$/ do |post_text|
find(".canvas-frame").should have_content(post_text)
end