diff --git a/tests/acceptance/settings/site_tests.rb b/tests/acceptance/settings/site_tests.rb index b5e1d616..3e8dacf4 100644 --- a/tests/acceptance/settings/site_tests.rb +++ b/tests/acceptance/settings/site_tests.rb @@ -201,28 +201,13 @@ describe 'site/settings' do describe 'change username' do include Capybara::DSL - def visit_signup - visit '/' - click_button 'Create My Site' - end - - def fill_in_valid - @site = Fabricate.attributes_for(:site) - fill_in 'username', with: @site[:username] - fill_in 'password', with: @site[:password] - fill_in 'email', with: @site[:email] - end - before do Capybara.reset_sessions! - visit_signup + @site = Fabricate :site + page.set_rack_session id: @site.id end it 'does not allow bad usernames' do - visit '/' - click_button 'Create My Site' - fill_in_valid - click_button 'Create Home Page' visit "/settings/#{@site[:username]}#username" fill_in 'name', with: '' click_button 'Change Name' @@ -233,7 +218,7 @@ describe 'site/settings' do ## TODO fix this without screwing up legacy sites #fill_in 'name', with: '-' #click_button 'Change Name' - page.must_have_content /valid.+name.+required/i + page.must_have_content /Usernames can only contain/i Site[username: @site[:username]].wont_equal nil Site[username: ''].must_equal nil end diff --git a/tests/acceptance/signup_tests.rb b/tests/acceptance/signup_tests.rb index 133fb7c6..5b5f22fd 100644 --- a/tests/acceptance/signup_tests.rb +++ b/tests/acceptance/signup_tests.rb @@ -8,22 +8,36 @@ describe 'signup' do fill_in 'username', with: @site[:username] fill_in 'password', with: @site[:password] fill_in 'email', with: @site[:email] + fill_in 'question_answer', with: 2 + end + + def click_signup_button + click_button 'Create My Site' + end + + def site_created? + page.must_have_content 'Your Feed' end def visit_signup visit '/' - click_button 'Create My Site' end before do + Capybara.default_driver = :poltergeist Capybara.reset_sessions! visit_signup end + after do + Capybara.default_driver = :rack_test + end + it 'succeeds with valid data' do + Capybara.default_driver = :poltergeist fill_in_valid - click_button 'Create Home Page' - page.must_have_content 'Your Feed' + click_signup_button + site_created?.must_equal true assert_equal( true, File.exist?(File.join(Site::SITE_FILES_ROOT, @site[:username], 'index.html')) @@ -32,130 +46,131 @@ describe 'signup' do it 'fails to create for existing site' do fill_in_valid - click_button 'Create Home Page' + click_signup_button page.must_have_content 'Your Feed' Capybara.reset_sessions! visit_signup fill_in 'username', with: @site[:username] fill_in 'password', with: @site[:password] - click_button 'Create Home Page' + click_signup_button page.must_have_content 'already taken' end it 'fails with missing password' do fill_in_valid fill_in 'password', with: '' - click_button 'Create Home Page' + click_signup_button page.must_have_content 'Password must be at least 5 characters' end it 'fails with short password' do fill_in_valid fill_in 'password', with: 'derp' - click_button 'Create Home Page' + click_signup_button page.must_have_content 'Password must be at least 5 characters' end it 'fails with invalid hostname for username' do fill_in_valid fill_in 'username', with: '|\|0p|E' - click_button 'Create Home Page' - page.current_path.must_equal '/create' - page.must_have_content 'A valid user/site name is required' + click_signup_button + page.must_have_content 'Usernames can only contain' fill_in 'username', with: 'nope-' - click_button 'Create Home Page' + click_signup_button page.must_have_content 'A valid user/site name is required' fill_in 'username', with: '-nope' - click_button 'Create Home Page' + click_signup_button page.must_have_content 'A valid user/site name is required' end it 'fails with username greater than 32 characters' do fill_in_valid fill_in 'username', with: SecureRandom.hex+'1' - click_button 'Create Home Page' + click_signup_button page.must_have_content 'cannot exceed 32 characters' end - it 'fails with invalid tag chars' do - fill_in_valid - fill_in 'tags', with: '$POLICE OFFICER$$$$$, derp' - click_button 'Create Home Page' - page.must_have_content /Tag.+can only contain/ - end - - it 'fails for tag with too many spaces' do - fill_in_valid - fill_in 'tags', with: 'police officer, hi' - click_button 'Create Home Page' - page.must_have_content /Tag.+cannot have spaces/ - end - - it 'fails for tag with too many words' do - fill_in_valid - fill_in 'tags', with: 'police officer' - click_button 'Create Home Page' - page.must_have_content /Tag.+cannot be more than #{Tag::NAME_WORDS_MAX} word/ - end - - it "fails for tag longer than #{Tag::NAME_LENGTH_MAX} characters" do - fill_in_valid - fill_in 'tags', with: SecureRandom.hex(Tag::NAME_LENGTH_MAX) - click_button 'Create Home Page' - page.must_have_content /cannot be longer than #{Tag::NAME_LENGTH_MAX}/ - end - - it 'fails for too many tags' do - fill_in_valid - fill_in 'tags', with: 'one, two, three, four, five, six' - click_button 'Create Home Page' - page.must_have_content /Cannot have more than \d tags for your site/ - end - - it 'does not duplicate tags' do - fill_in_valid - fill_in 'tags', with: 'one, one' - click_button 'Create Home Page' - - site = Site.last - site.tags.length.must_equal 1 - site.tags.first.name.must_equal 'one' - end - it 'fails with existing email' do email = Fabricate.attributes_for(:site)[:email] fill_in_valid fill_in 'email', with: email - click_button 'Create Home Page' - page.must_have_content 'Your Feed' + click_signup_button + site_created?.must_equal true Capybara.reset_sessions! visit_signup fill_in_valid fill_in 'email', with: email - click_button 'Create Home Page' + click_signup_button page.must_have_content /email.+exists/ end +=begin it 'succeeds with no tags' do fill_in_valid - fill_in 'tags', with: '' - click_button 'Create Home Page' - page.must_have_content 'Your Feed' + fill_in 'new_tags_string', with: '' + click_signup_button + site_created?.must_equal true end it 'succeeds with a single tag' do fill_in_valid - fill_in 'tags', with: 'derpie' - click_button 'Create Home Page' - page.must_have_content 'Your Feed' + fill_in 'new_tags_string', with: 'derpie' + click_signup_button + site_created?.must_equal true Site.last.tags.first.name.must_equal 'derpie' end it 'succeeds with valid tags' do fill_in_valid - fill_in 'tags', with: 'derpie, shoujo' - click_button 'Create Home Page' - page.must_have_content 'Your Feed' + fill_in 'new_tags_string', with: 'derpie, shoujo' + click_signup_button + site_created?.must_equal true Site.last.tags.collect {|t| t.name}.must_equal ['derpie', 'shoujo'] end + + it 'fails with invalid tag chars' do + fill_in_valid + fill_in 'new_tags_string', with: '$POLICE OFFICER$$$$$, derp' + click_signup_button + page.must_have_content /Tag.+can only contain/ + end + + it 'fails for tag with too many spaces' do + fill_in_valid + fill_in 'new_tags_string', with: 'police officer, hi' + click_signup_button + page.must_have_content /Tag.+cannot have spaces/ + end + + it 'fails for tag with too many words' do + fill_in_valid + fill_in 'new_tags_string', with: 'police officer' + click_signup_button + page.must_have_content /Tag.+cannot be more than #{Tag::NAME_WORDS_MAX} word/ + end + + it "fails for tag longer than #{Tag::NAME_LENGTH_MAX} characters" do + fill_in_valid + fill_in 'new_tags_string', with: SecureRandom.hex(Tag::NAME_LENGTH_MAX) + click_signup_button + page.must_have_content /cannot be longer than #{Tag::NAME_LENGTH_MAX}/ + end + + it 'fails for too many tags' do + fill_in_valid + fill_in 'new_tags_string', with: 'one, two, three, four, five, six' + click_signup_button + page.must_have_content /Cannot have more than \d tags for your site/ + end + + it 'does not duplicate tags' do + fill_in_valid + fill_in 'new_tags_string', with: 'one, one' + click_signup_button + + site = Site.last + site.tags.length.must_equal 1 + site.tags.first.name.must_equal 'one' + end +=end end \ No newline at end of file