From 73ae6f5b03ec536d0b6a0bbe15aaaed279de3952 Mon Sep 17 00:00:00 2001 From: Thomas Scherz Date: Wed, 5 Jun 2024 12:56:43 -0400 Subject: [PATCH] Improves test coverage for Road Map. --- .../software_records/edit_road_map.html.erb | 2 +- .../software_records/list_road_map.html.erb | 2 +- .../software_records_controller_spec.rb | 67 +++++++++++++++++++ .../software_records/show.html.erb_spec.rb | 4 +- 4 files changed, 71 insertions(+), 4 deletions(-) diff --git a/app/views/software_records/edit_road_map.html.erb b/app/views/software_records/edit_road_map.html.erb index d71de49..28374d3 100644 --- a/app/views/software_records/edit_road_map.html.erb +++ b/app/views/software_records/edit_road_map.html.erb @@ -25,7 +25,7 @@
<%= form.label :road_map, class: 'form-label' %> - <%= form.text_area :road_map, class: 'form-control' %> + <%= form.text_area :road_map, class: 'form-control', rows: 10 %>
diff --git a/app/views/software_records/list_road_map.html.erb b/app/views/software_records/list_road_map.html.erb index 60f1510..3ab3f77 100644 --- a/app/views/software_records/list_road_map.html.erb +++ b/app/views/software_records/list_road_map.html.erb @@ -42,7 +42,7 @@ <% @software_records.each do |software_record| %> - <%= software_record.title %> + <%= software_record.title %> <%= simple_format(software_record.road_map) %> <% if current_user.role.to_s == "viewer" %> <%= link_to 'View', software_record , { :class => "btn btn-success action-btn" }%> diff --git a/spec/controllers/software_records_controller_spec.rb b/spec/controllers/software_records_controller_spec.rb index 6272a02..10adcc3 100644 --- a/spec/controllers/software_records_controller_spec.rb +++ b/spec/controllers/software_records_controller_spec.rb @@ -125,12 +125,63 @@ def sign_in_user(admin) end end + context 'when filter_by is software_types and software_type_filter is provided' do + it 'assigns filtered software records to @software_records' do + software_record = SoftwareRecord.create! valid_attributes + get :list_road_map, params: { filter_by: 'software_types', software_type_filter: SoftwareType.first.id } + expect(assigns(:software_records)).to include(software_record) + end + end + + context 'when filter_by is not software_types' do + it 'assigns all software records to @software_records' do + software_record = SoftwareRecord.create! valid_attributes + get :list_road_map, params: { filter_by: 'other_filter' } + expect(assigns(:software_records)).to include(software_record) + end + end + + context 'when software_type_filter is nil or empty' do + it 'assigns all software records to @software_records if filter_by is software_types' do + software_record = SoftwareRecord.create! valid_attributes + get :list_road_map, params: { filter_by: 'software_types', software_type_filter: nil } + expect(assigns(:software_records)).to include(software_record) + + get :list_road_map, params: { filter_by: 'software_types', software_type_filter: '' } + expect(assigns(:software_records)).to include(software_record) + end + end + + context 'when filtering by vendor_records' do + it 'assigns the filtered software records to @software_records' do + software_record = SoftwareRecord.create! valid_attributes + get :list_road_map, params: { filter_by: 'vendor_records', vendor_record_filter: VendorRecord.first.id } + expect(assigns(:software_records)).to match_array([software_record]) + end + end + + context 'when no filters are applied' do + it 'assigns all software records to @software_records' do + software_record1 = SoftwareRecord.create! valid_attributes + software_record2 = SoftwareRecord.create! valid_attributes + get :list_road_map + expect(assigns(:software_records)).to match_array([software_record1, software_record2]) + end + end + describe 'GET #edit_road_map' do it 'assigns the requested software record to @software_record' do software_record = SoftwareRecord.create! valid_attributes get :edit_road_map, params: { id: software_record.to_param } expect(response).to be_successful expect(response).to render_template(:edit_road_map) + expect(assigns(:software_record)).to eq(software_record) + end + + it 'renders the edit_road_map template' do + software_record = SoftwareRecord.create! valid_attributes + get :edit_road_map, params: { id: software_record.to_param } + expect(response).to render_template(:edit_road_map) end end @@ -143,6 +194,22 @@ def sign_in_user(admin) expect(software_record.road_map).to eq('New Road Map') expect(response).to redirect_to(list_road_map_path) end + + it 'redirects to the list_road_map path with a notice' do + software_record = SoftwareRecord.create! valid_attributes + patch :update_road_map, params: { id: software_record.id, software_record: { road_map: 'New Road Map' } } + expect(response).to redirect_to(list_road_map_path) + expect(flash[:notice]).to eq('Road map was successfully updated.') + end + end + + context 'with invalid attributes' do + it 'does not update the software record' do + software_record = SoftwareRecord.create! valid_attributes + patch :update_road_map, params: { id: software_record.id, software_record: invalid_attributes } + software_record.reload + expect(software_record.title).not_to eq('') + end end end diff --git a/spec/views/software_records/show.html.erb_spec.rb b/spec/views/software_records/show.html.erb_spec.rb index 8e2954e..9747b93 100644 --- a/spec/views/software_records/show.html.erb_spec.rb +++ b/spec/views/software_records/show.html.erb_spec.rb @@ -66,7 +66,7 @@ dev_support_servers: 'dev.example.com', date_cert_expires: '2020-01-01', monitor_certificates: 'Yes', - road_map: 'Road Map', + road_map: "Road one\nRoad two", notes: "Line one\nLine two", themes: true, modules: true @@ -82,7 +82,7 @@ expect(rendered).to match(/1/) expect(rendered).to match(/DUO/) expect(rendered).to match(%r{Line one\n
Line two}) - expect(rendered).to match(/Road Map/) + expect(rendered).to match(%r{Road one\n
Road two}) end it 'renders change management attributes in

' do