require 'rails_helper' describe FormHelper do describe 'form_errors' do it 'returns nil when model has no errors' do model = double(errors: []) expect(helper.form_errors(model)).to be_nil end it 'renders an alert div' do model = double(errors: errors_stub('Error 1')) expect(helper.form_errors(model)). to include('
') end it 'contains a summary message' do single_error = double(errors: errors_stub('A')) multi_errors = double(errors: errors_stub('A', 'B', 'C')) expect(helper.form_errors(single_error)). to include('

The form contains the following error:') expect(helper.form_errors(multi_errors)). to include('

The form contains the following errors:') end it 'renders each message' do model = double(errors: errors_stub('Error 1', 'Error 2', 'Error 3')) errors = helper.form_errors(model) aggregate_failures do expect(errors).to include('
  • Error 1
  • ') expect(errors).to include('
  • Error 2
  • ') expect(errors).to include('
  • Error 3
  • ') end end def errors_stub(*messages) ActiveModel::Errors.new(double).tap do |errors| messages.each { |msg| errors.add(:base, msg) } end end end end