Keep a blank line before and after private Keep a blank line before and after protected Remove extra empty line at class body end Remove extra blank line Add final newline Use 2 (not 3) spaces for indentation Use 2 (not 4) spaces for indentation Remove space before comma Add space after comma Remove trailing whitespaces Remove unnecessary spacing Use snake_case for variable names Do not use then for multi-line if Remove unused block argument - i Use the new Ruby 1.9 hash syntax Remove unused assignment to variable Indent when as deep as case Align attributes Align end with def
259 lines
8.3 KiB
Ruby
259 lines
8.3 KiB
Ruby
module CommonActions
|
|
|
|
def sign_up(email='manuela@consul.dev', password='judgementday')
|
|
visit '/'
|
|
|
|
click_link 'Register'
|
|
|
|
fill_in 'user_username', with: "Manuela Carmena #{rand(99999)}"
|
|
fill_in 'user_email', with: email
|
|
fill_in 'user_password', with: password
|
|
fill_in 'user_password_confirmation', with: password
|
|
check 'user_terms_of_service'
|
|
|
|
click_button 'Register'
|
|
end
|
|
|
|
def login_through_form_as(user)
|
|
visit root_path
|
|
click_link 'Sign in'
|
|
|
|
fill_in 'user_email', with: user.email
|
|
fill_in 'user_password', with: user.password
|
|
|
|
click_button 'Enter'
|
|
end
|
|
|
|
def login_as_authenticated_manager
|
|
login, user_key, date = "JJB042", "31415926", Time.now.strftime("%Y%m%d%H%M%S")
|
|
allow_any_instance_of(ManagerAuthenticator).to receive(:auth).and_return({login: login, user_key: user_key, date: date}.with_indifferent_access)
|
|
visit management_sign_in_path(login: login, clave_usuario: user_key, fecha_conexion: date)
|
|
end
|
|
|
|
def login_as_manager
|
|
manager = create(:manager)
|
|
login_as(manager.user)
|
|
visit management_sign_in_path
|
|
end
|
|
|
|
def login_managed_user(user)
|
|
allow_any_instance_of(Management::BaseController).to receive(:managed_user).and_return(user)
|
|
end
|
|
|
|
def confirm_email
|
|
body = ActionMailer::Base.deliveries.last.try(:body)
|
|
expect(body).to be_present
|
|
|
|
sent_token = /.*confirmation_token=(.*)".*/.match(body.to_s)[1]
|
|
visit user_confirmation_path(confirmation_token: sent_token)
|
|
|
|
expect(page).to have_content "Your account has been confirmed"
|
|
end
|
|
|
|
def reset_password
|
|
create(:user, email: 'manuela@consul.dev')
|
|
|
|
visit '/'
|
|
click_link 'Sign in'
|
|
click_link 'Forgotten your password?'
|
|
|
|
fill_in 'user_email', with: 'manuela@consul.dev'
|
|
click_button 'Send instructions'
|
|
end
|
|
|
|
def comment_on(commentable, user = nil)
|
|
user ||= create(:user)
|
|
|
|
login_as(user)
|
|
commentable_path = commentable.is_a?(Proposal) ? proposal_path(commentable) : debate_path(commentable)
|
|
visit commentable_path
|
|
|
|
fill_in "comment-body-#{commentable.class.name.underscore}_#{commentable.id}", with: 'Have you thought about...?'
|
|
click_button 'Publish comment'
|
|
|
|
expect(page).to have_content 'Have you thought about...?'
|
|
end
|
|
|
|
def reply_to(original_user, manuela = nil)
|
|
manuela ||= create(:user)
|
|
|
|
debate = create(:debate)
|
|
comment = create(:comment, commentable: debate, user: original_user)
|
|
|
|
login_as(manuela)
|
|
visit debate_path(debate)
|
|
|
|
click_link "Reply"
|
|
within "#js-comment-form-comment_#{comment.id}" do
|
|
fill_in "comment-body-comment_#{comment.id}", with: 'It will be done next week.'
|
|
click_button 'Publish reply'
|
|
end
|
|
expect(page).to have_content 'It will be done next week.'
|
|
end
|
|
|
|
def avatar(name)
|
|
"img.initialjs-avatar[data-name='#{name}']"
|
|
end
|
|
|
|
# Used to fill ckeditor fields
|
|
# @param [String] locator label text for the textarea or textarea id
|
|
def fill_in_ckeditor(locator, params = {})
|
|
# Find out ckeditor id at runtime using its label
|
|
locator = find('label', text: locator)[:for] if page.has_css?('label', text: locator)
|
|
# Fill the editor content
|
|
page.execute_script <<-SCRIPT
|
|
var ckeditor = CKEDITOR.instances.#{locator}
|
|
ckeditor.setData('#{params[:with]}')
|
|
ckeditor.focus()
|
|
ckeditor.updateElement()
|
|
SCRIPT
|
|
end
|
|
|
|
def error_message(resource_model=nil)
|
|
resource_model ||= "(.*)"
|
|
/\d errors? prevented this #{resource_model} from being saved:/
|
|
end
|
|
|
|
def expect_to_be_signed_in
|
|
expect(find('.top-bar')).to have_content 'My account'
|
|
end
|
|
|
|
def expect_to_not_be_signed_in
|
|
expect(find('.top-bar')).to_not have_content 'My account'
|
|
end
|
|
|
|
def select_date(values, selector)
|
|
selector = selector[:from]
|
|
day, month, year = values.split("-")
|
|
select day, from: "#{selector}_3i"
|
|
select month, from: "#{selector}_2i"
|
|
select year, from: "#{selector}_1i"
|
|
end
|
|
|
|
def verify_residence
|
|
select 'DNI', from: 'residence_document_type'
|
|
fill_in 'residence_document_number', with: "12345678Z"
|
|
select_date '31-December-1980', from: 'residence_date_of_birth'
|
|
fill_in 'residence_postal_code', with: '28013'
|
|
check 'residence_terms_of_service'
|
|
|
|
click_button 'Verify residence'
|
|
expect(page).to have_content 'Residence verified'
|
|
end
|
|
|
|
def confirm_phone
|
|
fill_in 'sms_phone', with: "611111111"
|
|
click_button 'Send'
|
|
|
|
expect(page).to have_content 'Enter the confirmation code sent to you by text message'
|
|
|
|
user = User.last.reload
|
|
fill_in 'sms_confirmation_code', with: user.sms_confirmation_code
|
|
click_button 'Send'
|
|
|
|
expect(page).to have_content 'Code correct'
|
|
end
|
|
|
|
def expect_message_you_need_to_sign_in
|
|
expect(page).to have_content 'You must Sign in or Sign up to continue'
|
|
expect(page).to have_selector('.in-favor a', visible: false)
|
|
end
|
|
|
|
def expect_message_you_need_to_sign_in_to_vote_comments
|
|
expect(page).to have_content 'You must Sign in or Sign up to vote'
|
|
expect(page).to have_selector('.participation-allowed', visible: false)
|
|
expect(page).to have_selector('.participation-not-allowed', visible: true)
|
|
end
|
|
|
|
def expect_message_to_many_anonymous_votes
|
|
expect(page).to have_content 'Too many anonymous votes to admit vote'
|
|
expect(page).to have_selector('.in-favor a', visible: false)
|
|
end
|
|
|
|
def expect_message_only_verified_can_vote_proposals
|
|
expect(page).to have_content 'Only verified users can vote on proposals'
|
|
expect(page).to have_selector('.in-favor a', visible: false)
|
|
end
|
|
|
|
def expect_message_voting_not_allowed
|
|
expect(page).to have_content 'Voting phase is closed'
|
|
expect(page).to_not have_selector('.in-favor a')
|
|
end
|
|
|
|
def create_featured_proposals
|
|
[create(:proposal, :with_confidence_score, cached_votes_up: 100),
|
|
create(:proposal, :with_confidence_score, cached_votes_up: 90),
|
|
create(:proposal, :with_confidence_score, cached_votes_up: 80)]
|
|
end
|
|
|
|
def create_featured_debates
|
|
[create(:debate, :with_confidence_score, cached_votes_up: 100),
|
|
create(:debate, :with_confidence_score, cached_votes_up: 90),
|
|
create(:debate, :with_confidence_score, cached_votes_up: 80)]
|
|
end
|
|
|
|
def create_successfull_proposals
|
|
[create(:proposal, title: "Winter is coming", question: "Do you speak it?", cached_votes_up: Proposal.votes_needed_for_success + 100),
|
|
create(:proposal, title: "Fire and blood", question: "You talking to me?", cached_votes_up: Proposal.votes_needed_for_success + 1)]
|
|
end
|
|
|
|
def create_archived_proposals
|
|
[create(:proposal, title: "This is an expired proposal", created_at: Setting["months_to_archive_proposals"].to_i.months.ago),
|
|
create(:proposal, title: "This is an oldest expired proposal", created_at: (Setting["months_to_archive_proposals"].to_i + 2).months.ago)]
|
|
end
|
|
|
|
def tag_names(tag_cloud)
|
|
tag_cloud.tags.map(&:name)
|
|
end
|
|
|
|
def create_proposal_notification(proposal)
|
|
login_as(proposal.author)
|
|
visit root_path
|
|
|
|
click_link "My activity"
|
|
|
|
within("#proposal_#{proposal.id}") do
|
|
click_link "Send notification"
|
|
end
|
|
|
|
fill_in 'proposal_notification_title', with: "Thank you for supporting my proposal #{proposal.title}"
|
|
fill_in 'proposal_notification_body', with: "Please share it with others so we can make it happen! #{proposal.summary}"
|
|
click_button "Send message"
|
|
|
|
expect(page).to have_content "Your message has been sent correctly."
|
|
Notification.last
|
|
end
|
|
|
|
def create_direct_message(sender, receiver)
|
|
login_as(sender)
|
|
visit user_path(receiver)
|
|
|
|
click_link "Send private message"
|
|
|
|
expect(page).to have_content "Send private message to #{receiver.name}"
|
|
|
|
fill_in 'direct_message_title', with: "Hey #{receiver.name}!"
|
|
fill_in 'direct_message_body', with: "How are you doing? This is #{sender.name}"
|
|
|
|
click_button "Send message"
|
|
|
|
expect(page).to have_content "You message has been sent successfully."
|
|
DirectMessage.last
|
|
end
|
|
|
|
def expect_badge_for(resource_name, resource)
|
|
within("##{resource_name}_#{resource.id}") do
|
|
expect(page).to have_css ".label.round"
|
|
expect(page).to have_content "Employee"
|
|
end
|
|
end
|
|
|
|
def expect_no_badge_for(resource_name, resource)
|
|
within("##{resource_name}_#{resource.id}") do
|
|
expect(page).to_not have_css ".label.round"
|
|
expect(page).to_not have_content "Employee"
|
|
end
|
|
end
|
|
|
|
end
|