require File.dirname(__FILE__) + '/../integration_helper' describe 'ContactForm', pending: true do include Rack::Test::Methods def app run_server end it 'renders the form' do get '/contact' last_response.body.should =~ /\/entry_submissions\/messages.json/ end describe '#submit' do let(:params) { { 'entry' => { 'name' => 'John', 'email' => 'j@doe.net', 'message' => 'Bla bla' }, 'success_callback' => '/events', 'error_callback' => '/contact' } } let(:response) { post_contact_form(params, false) } let(:status) { response.status } describe 'with json request' do let(:response) { post_contact_form(params, true) } let(:entry) { JSON.parse(response.body)['message'] } context 'when not valid' do let(:params) { {} } it 'returns an error status' do response.status.should == 422 end describe 'errors' do subject { entry['errors'] } it { should have_key_with_value('name', "can't not be blank") } it { should have_key_with_value('email', "can't not be blank") } it { should have_key_with_value('message', "can't not be blank") } end end context 'when valid' do it 'returns a success status' do response.status.should == 200 end end end describe 'with html request' do context 'when not valid' do let(:params) { { 'error_callback' => '/contact' } } it 'returns a success status' do response.status.should == 200 end it 'displays errors' do response.body.to_s.should =~ /can't not be blank/ end end context 'when valid' do let(:response) { post_contact_form(params, false, true) } it 'returns a success status' do response.status.should == 200 end it 'displays a success message' do response.body.should =~ /Thank you John/ end end end end def post_contact_form(params, json = false, follow_redirect = false) url = '/entry_submissions/messages' url += '.json' if json params = params.symbolize_keys if json post url, params if follow_redirect follow_redirect! end last_response end end