diff --git a/app/models/fund_request.rb b/app/models/fund_request.rb index b76212bbdc..e281fb2722 100644 --- a/app/models/fund_request.rb +++ b/app/models/fund_request.rb @@ -1,4 +1,5 @@ class FundRequest < ApplicationRecord + validates :submitter_email, presence: true end # == Schema Information diff --git a/app/views/fund_requests/new.html.erb b/app/views/fund_requests/new.html.erb index bb076fa117..7ed36397bd 100644 --- a/app/views/fund_requests/new.html.erb +++ b/app/views/fund_requests/new.html.erb @@ -11,9 +11,16 @@
<%= form_with(model: @fund_request, local: true, url: casa_case_fund_request_path(@casa_case), method: :post) do |form| %> + + <% if @fund_request.errors.any? %> + <% @fund_request.errors.full_messages.each do |msg| %> +

<%= msg %>

+ <% end %> + <% end %> +
- <%= form.label :submitter_email, "Your email" %> - <%= form.text_field :submitter_email, class: "form-control", required: true, value: current_user.email %> + <%= form.label :submitter_email, "Your email" %> + <%= form.email_field :submitter_email, class: "form-control", required: false, value: current_user.email %>
diff --git a/spec/models/fund_request_spec.rb b/spec/models/fund_request_spec.rb new file mode 100644 index 0000000000..082f6ca7d5 --- /dev/null +++ b/spec/models/fund_request_spec.rb @@ -0,0 +1,5 @@ +require "rails_helper" + +RSpec.describe FundRequest, type: :model do + it { is_expected.to validate_presence_of(:submitter_email) } +end diff --git a/spec/system/casa_cases/fund_requests/new_spec.rb b/spec/system/casa_cases/fund_requests/new_spec.rb index 21a00c9d99..e247264b0d 100644 --- a/spec/system/casa_cases/fund_requests/new_spec.rb +++ b/spec/system/casa_cases/fund_requests/new_spec.rb @@ -1,14 +1,16 @@ require "rails_helper" -RSpec.describe "casa_cases/fund_requests/new", type: :system do - it "creates a fund request for the casa case" do - org = create(:casa_org) - volunteer = create(:volunteer, :with_casa_cases, casa_org: org) - casa_case = volunteer.casa_cases.first +RSpec.describe "fund_requests/new", type: :system do + let(:org) { create(:casa_org) } + let(:volunteer) { create(:volunteer, :with_casa_cases, casa_org: org) } + let(:casa_case) { volunteer.casa_cases.first } + before do sign_in volunteer visit new_casa_case_fund_request_path(casa_case) + end + it "creates a fund request for the casa case" do aggregate_failures do expect(page).to have_field "Your email", with: volunteer.email expect(page).to have_field "Name or case number of youth", with: casa_case.case_number @@ -43,4 +45,18 @@ expect(fr.youth_name).to eq casa_case.case_number end end + + it "shows error when submitter email is blank" do + fill_in "Your email", with: "" + fill_in "Amount of payment", with: "100" + fill_in "Deadline", with: "2022-12-31" + fill_in "Request is for", with: "Fun outing" + fill_in "Name of payee", with: "Minnie Mouse" + + expect { + click_on "Submit Fund Request" + }.not_to change(FundRequest, :count) + + expect(page).to have_content("Submitter email can't be blank") + end end