mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-26 20:56:48 +00:00
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.
132 lines
4.5 KiB
Ruby
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
|