Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class CertificationCasesController < StaffController
before_action :set_certification, only: %i[ show tasks documents notes ]

def index
@cases = certification_service.fetch_open_cases
@cases = certification_service.fetch_open_actionable_cases
end

def closed
Expand Down
4 changes: 2 additions & 2 deletions reporting-app/app/services/certification_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ def find_cases_by_member_id(member_id)
certification_cases
end

def fetch_open_cases
hydrate_cases_with_certifications!(CertificationCase.open)
def fetch_open_actionable_cases
hydrate_cases_with_certifications!(CertificationCase.open.actionable)
end

def fetch_closed_cases
Expand Down
7 changes: 7 additions & 0 deletions reporting-app/spec/factories/certification_case_factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,12 @@
case_obj.close
end
end

trait :actionable do
business_process_current_step { "review_activity_report" }
after(:create) do |case_obj|
create(:review_activity_report_task, case: case_obj)
end
end
end
end
38 changes: 31 additions & 7 deletions reporting-app/spec/services/certification_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,53 @@

RSpec.describe CertificationService do
let(:service) { described_class.new }
let(:open_case) { create(:certification_case) }
let(:closed_case) { create(:certification_case, :with_closed_status) }

before do
open_case
closed_case
end

describe '#fetch_open_cases' do
it 'returns only open cases with their certifications hydrated' do
result = service.fetch_open_cases
describe '#fetch_open_actionable_cases' do
let(:actionable_case) { create(:certification_case, :actionable) }
let(:non_actionable_case) { create(:certification_case) }

expect(result).to contain_exactly(open_case)
before do
actionable_case
non_actionable_case
end

it 'returns only open actionable cases' do
result = service.fetch_open_actionable_cases

expect(result).to contain_exactly(actionable_case)
end

it 'does not return closed cases' do
result = service.fetch_open_cases
result = service.fetch_open_actionable_cases

expect(result).not_to include(closed_case)
end

it 'does not return non-actionable cases' do
result = service.fetch_open_actionable_cases

expect(result).not_to include(non_actionable_case)
end

it 'hydrates cases with their certifications' do
result = service.fetch_open_actionable_cases.first

expect(result.certification).to be_present
end
end

describe '#fetch_closed_cases' do
let(:open_case) { create(:certification_case) }

before do
open_case
end

it 'returns only closed cases with their certifications hydrated' do
result = service.fetch_closed_cases

Expand Down