Skip to content

Commit

Permalink
Merge pull request rubyforgood#559 from rubyforgood/multi-case-548
Browse files Browse the repository at this point in the history
Add tests for Volunteer can be assigned to multiple cases
  • Loading branch information
compwron authored Aug 18, 2020
2 parents ff49dd9 + abcd01f commit 5f7d2b0
Show file tree
Hide file tree
Showing 8 changed files with 79 additions and 14 deletions.
2 changes: 1 addition & 1 deletion app/controllers/volunteers_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def create

def edit
@volunteer_active = @volunteer.active_volunteer
@available_casa_cases = CasaCase.all.select { |cc| cc.case_assignments.any?(&:is_active) }.sort_by(&:case_number)
@available_casa_cases = CasaCase.all.order(:case_number)
end

def update
Expand Down
2 changes: 1 addition & 1 deletion app/views/casa_cases/_volunteer_assignment.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@

<div class='form-group'>
<label for='case_assignment_casa_case_id'>Select a Volunteer</label>
<select name='case_assignment[volunteer_id]' class='form-control'>
<select id='case_assignment_casa_case_id' name='case_assignment[volunteer_id]' class='form-control'>
<% Volunteer.active.order(:display_name).each do |volunteer| %>
<option value="<%= volunteer.id %>"><%= volunteer.decorate.name %></option>
<% end %>
Expand Down
2 changes: 1 addition & 1 deletion app/views/case_assignments/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

<div class='form-group'>
<label for="case_assignment_casa_case_id">Select a Case</label>
<select class='form-control'>
<select id="is-this-used-anywhere" class='form-control'>
<% CasaCase.all.each do |casa_case| %>
<option value="<%= casa_case.id %>"><%= casa_case.case_number %></option>
<% end %>
Expand Down
2 changes: 1 addition & 1 deletion app/views/volunteers/edit.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@

<div class='form-group'>
<label for='case_assignment_casa_case_id'>Select a Case</label>
<select name='case_assignment[casa_case_id]' class='form-control'>
<select id="case_assignment_casa_case_id" name='case_assignment[casa_case_id]' class='form-control'>
<% @available_casa_cases.each do |casa_case| %>
<option value="<%= casa_case.id %>"><%= casa_case.case_number %></option>
<% end %>
Expand Down
2 changes: 1 addition & 1 deletion spec/features/admin_assign_a_volunteer_to_case_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
assignment_start = page.find("td[data-test=assignment-start]").text
assignment_end = page.find("td[data-test=assignment-end]").text

expect(assignment_start).to eq(expected_start_date)
expect(assignment_start).to eq(expected_start_date) # TODO this fails locally, UTC issue?
expect(assignment_end).to be_empty
end
end
Expand Down
23 changes: 23 additions & 0 deletions spec/features/case_assigned_to_multiple_volunteers.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
require "rails_helper"

RSpec.describe "case assigned to multiple volunteers", type: :feature do
let!(:supervisor) { create(:casa_admin) }
let!(:volunteer_1) { create(:volunteer, display_name: 'AAA') }
let!(:volunteer_2) { create(:volunteer, display_name: 'BBB') }
let!(:casa_case) { create(:casa_case) }

it "supervisor assigns multiple volunteers to the same case" do
sign_in supervisor
visit edit_casa_case_path(casa_case.id)

select volunteer_1.display_name, from: "Select a Volunteer"
click_on "Assign Volunteer"
expect(page).to have_text("Volunteer assigned to case")
expect(page).to have_text(volunteer_1.display_name)

select volunteer_2.display_name, from: "Select a Volunteer"
click_on "Assign Volunteer"
expect(page).to have_text("Volunteer assigned to case")
expect(page).to have_text(volunteer_2.display_name)
end
end
23 changes: 23 additions & 0 deletions spec/features/volunteer_assigned_to_multiple_cases.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
require "rails_helper"

RSpec.describe "volunteer assigned to multiple cases", type: :feature do
let!(:supervisor) { create(:casa_admin) }
let!(:volunteer) { create(:volunteer, display_name: 'AAA') }
let!(:casa_case_1) { create(:casa_case, case_number: 'CINA1') }
let!(:casa_case_2) { create(:casa_case, case_number: 'CINA2') }

it "supervisor assigns multiple cases to the same volunteer" do
sign_in supervisor
visit edit_volunteer_path(volunteer.id)

select casa_case_1.case_number, from: "Select a Case"
click_on "Assign Case"
expect(page).to have_text("Volunteer assigned to case")
expect(page).to have_text(casa_case_1.case_number)

select casa_case_2.case_number, from: "Select a Case"
click_on "Assign Case"
expect(page).to have_text("Volunteer assigned to case")
expect(page).to have_text(casa_case_2.case_number)
end
end
37 changes: 28 additions & 9 deletions spec/models/case_assignment_spec.rb
Original file line number Diff line number Diff line change
@@ -1,18 +1,37 @@
require "rails_helper"

RSpec.describe CaseAssignment do
let(:casa_case_1) { create(:casa_case) }
let(:volunteer_1) { create(:volunteer) }
let(:inactive) { create(:volunteer, :inactive) }
let(:supervisor) { create(:supervisor) }
let(:casa_case_2) { create(:casa_case) }
let(:volunteer_2) { create(:volunteer) }

it "should only allow active volunteers to be assigned" do
casa_case = create(:casa_case)
volunteer = create(:volunteer)
inactive = create(:volunteer, :inactive)
supervisor = create(:supervisor)
expect(casa_case_1.case_assignments.new(volunteer: volunteer_1)).to be_valid
casa_case_1.reload

expect(casa_case_1.case_assignments.new(volunteer: inactive)).to be_invalid
casa_case_1.reload

expect(casa_case_1.case_assignments.new(volunteer: supervisor)).to be_invalid
end

it "allows two volunteers to be assigned to the same case" do
casa_case_1.volunteers << volunteer_1
casa_case_1.volunteers << volunteer_2
casa_case_1.save!

expect(casa_case.case_assignments.new(volunteer: volunteer)).to be_valid
casa_case.reload
expect(volunteer_1.casa_cases).to eq([casa_case_1])
end

expect(casa_case.case_assignments.new(volunteer: inactive)).to be_invalid
casa_case.reload
it "allows volunteer to be assigned to multiple cases" do
volunteer_1.casa_cases << casa_case_1
volunteer_1.casa_cases << casa_case_2
volunteer_1.save!

expect(casa_case.case_assignments.new(volunteer: supervisor)).to be_invalid
expect(CasaCase.find(casa_case_1.id).volunteers).to eq([volunteer_1])
expect(CasaCase.find(casa_case_2.id).volunteers).to eq([volunteer_1])
end
end

0 comments on commit 5f7d2b0

Please sign in to comment.