Files
openfoodnetwork/spec/features/consumer/registration_spec.rb
Maikel Linke c1647ccd2c Set public enterprise.email_address at registration
Sets the public email address to the given email address as well as the
internal enterprise.email (notification email address).

The field is not mandatory any more since enterprise.email is populated
from the owner's email address if no value was given.
2016-03-04 17:50:04 +11:00

132 lines
4.5 KiB
Ruby

require 'spec_helper'
feature "Registration", js: true do
include WebHelper
describe "Registering a Profile" do
let(:user) { create(:user, password: "password", password_confirmation: "password") }
it "Allows a logged in user to register a profile" do
visit registration_path
expect(URI.parse(current_url).path).to eq registration_auth_path
page.has_selector? "dd", text: "Login"
switch_to_login_tab
# Enter Login details
fill_in "Email", with: user.email
fill_in "Password", with: user.password
click_login_and_ensure_content "Hi there!"
expect(URI.parse(current_url).path).to eq registration_path
# Done reading introduction
click_button_and_ensure_content "Let's get started!", "Woot! First we need to know a little bit about your enterprise:"
# Filling in details
fill_in 'enterprise_name', with: "My Awesome Enterprise"
# Filling in address
fill_in 'enterprise_address', with: '123 Abc Street'
fill_in 'enterprise_city', with: 'Northcote'
fill_in 'enterprise_zipcode', with: '3070'
select 'Australia', from: 'enterprise_country'
select 'VIC', from: 'enterprise_state'
click_button 'Continue'
# Filling in Contact Details
expect(page).to have_content 'Who is responsible for managing My Awesome Enterprise?'
fill_in 'enterprise_contact', with: 'Saskia Munroe'
page.should have_field 'enterprise_email_address', with: user.email
fill_in 'enterprise_phone', with: '12 3456 7890'
click_button 'Continue'
# Choosing a type
expect(page).to have_content 'Last step to add My Awesome Enterprise!'
click_link 'producer-panel'
click_button 'Create Profile'
# Enterprise should be created
expect(page).to have_content 'Nice one!'
e = Enterprise.find_by_name('My Awesome Enterprise')
expect(e.address.address1).to eq "123 Abc Street"
expect(e.sells).to eq "unspecified"
expect(e.is_primary_producer).to eq true
expect(e.contact).to eq "Saskia Munroe"
# Filling in about
fill_in 'enterprise_description', with: 'Short description'
fill_in 'enterprise_long_desc', with: 'Long description'
fill_in 'enterprise_abn', with: '12345'
fill_in 'enterprise_acn', with: '54321'
choose 'Yes' # enterprise_charges_sales_tax
click_button 'Continue'
# Enterprise should be updated
expect(page).to have_content "Let's upload some pretty pictures so your profile looks great!"
e.reload
expect(e.description).to eq "Short description"
expect(e.long_description).to eq "Long description"
expect(e.abn).to eq '12345'
expect(e.acn).to eq '54321'
expect(e.charges_sales_tax).to be_true
# Images
# Move from logo page
click_button 'Continue'
# Move from promo page
click_button 'Continue'
# Filling in social
expect(page).to have_content 'How can people find My Awesome Enterprise online?'
fill_in 'enterprise_website', with: 'www.shop.com'
fill_in 'enterprise_facebook', with: 'FaCeBoOk'
fill_in 'enterprise_linkedin', with: 'LiNkEdIn'
fill_in 'enterprise_twitter', with: '@TwItTeR'
fill_in 'enterprise_instagram', with: '@InStAgRaM'
click_button 'Continue'
# Done
expect(page).to have_content "Finished!"
e.reload
expect(e.website).to eq "www.shop.com"
expect(e.facebook).to eq "FaCeBoOk"
expect(e.linkedin).to eq "LiNkEdIn"
expect(e.twitter).to eq "@TwItTeR"
expect(e.instagram).to eq "@InStAgRaM"
end
end
def switch_to_login_tab
# Link appears to be unresponsive for a while, so keep clicking it until it works
using_wait_time 0.5 do
10.times do
find("a", text: "Login").click()
break if page.has_selector? "dd.active", text: "Login"
end
end
end
def click_login_and_ensure_content(content)
# Buttons appear to be unresponsive for a while, so keep clicking them until content appears
using_wait_time 1 do
3.times do
click_button "Login"
break if page.has_selector? "div#loading", text: "Hold on a moment, we're logging you in"
end
end
expect(page).to have_content content
end
def click_button_and_ensure_content(button_text, content)
# Buttons appear to be unresponsive for a while, so keep clicking them until content appears
using_wait_time 0.5 do
10.times do
click_button button_text
break if page.has_content? content
end
end
end
end