diff --git a/app/models/form/common/pages/created_by.rb b/app/models/form/common/pages/created_by.rb index 94c7dc587..ac4fefa6d 100644 --- a/app/models/form/common/pages/created_by.rb +++ b/app/models/form/common/pages/created_by.rb @@ -11,6 +11,9 @@ class Form::Common::Pages::CreatedBy < ::Form::Page end def routed_to?(_log, current_user) - !!current_user&.support? + return true if current_user&.support? + return true if current_user&.data_coordinator? + + false end end diff --git a/app/models/form/common/questions/created_by_id.rb b/app/models/form/common/questions/created_by_id.rb index ee2767a4f..1e29ccdcf 100644 --- a/app/models/form/common/questions/created_by_id.rb +++ b/app/models/form/common/questions/created_by_id.rb @@ -11,8 +11,8 @@ class Form::Common::Questions::CreatedById < ::Form::Question answer_opts = { "" => "Select an option" } return answer_opts unless ActiveRecord::Base.connected? - User.select(:id, :name).each_with_object(answer_opts) do |user, hsh| - hsh[user.id] = user.name + User.select(:id, :name, :email).each_with_object(answer_opts) do |user, hsh| + hsh[user.id] = "#{user.name} (#{user.email})" hsh end end @@ -31,7 +31,10 @@ class Form::Common::Questions::CreatedById < ::Form::Question end def hidden_in_check_answers?(_log, current_user) - !current_user.support? + return false if current_user.support? + return false if current_user.data_coordinator? + + true end def derived? diff --git a/app/models/form/lettings/pages/created_by.rb b/app/models/form/lettings/pages/created_by.rb index 8a30428e0..02eb44207 100644 --- a/app/models/form/lettings/pages/created_by.rb +++ b/app/models/form/lettings/pages/created_by.rb @@ -11,6 +11,9 @@ class Form::Lettings::Pages::CreatedBy < ::Form::Page end def routed_to?(_log, current_user) - !!current_user&.support? + return true if current_user&.support? + return true if current_user&.data_coordinator? + + false end end diff --git a/app/models/form/lettings/questions/created_by_id.rb b/app/models/form/lettings/questions/created_by_id.rb index 6402f14e0..30cbc2c5b 100644 --- a/app/models/form/lettings/questions/created_by_id.rb +++ b/app/models/form/lettings/questions/created_by_id.rb @@ -34,7 +34,10 @@ class Form::Lettings::Questions::CreatedById < ::Form::Question end def hidden_in_check_answers?(_log, current_user) - !current_user.support? + return false if current_user.support? + return false if current_user.data_coordinator? + + true end def derived? diff --git a/spec/features/lettings_log_spec.rb b/spec/features/lettings_log_spec.rb index 29f3324af..464f67d49 100644 --- a/spec/features/lettings_log_spec.rb +++ b/spec/features/lettings_log_spec.rb @@ -240,10 +240,12 @@ RSpec.describe "Lettings Log Features" do context "when completing the setup log section" do context "and there is at most 1 potential stock owner" do - it "does not include the owning organisation and created by questions" do + it "does not include the owning organisation and includes the created by questions" do visit("/lettings-logs") click_button("Create a new lettings log") click_link("Set up this lettings log") + select(user.name, from: "lettings-log-created-by-id-field") + click_button("Save and continue") log_id = page.current_path.scan(/\d/).join expect(page).to have_current_path("/lettings-logs/#{log_id}/needs-type") visit("lettings-logs/#{log_id}/setup/check-answers") diff --git a/spec/models/form/common/pages/created_by_spec.rb b/spec/models/form/common/pages/created_by_spec.rb index db9561ac2..9c5fddc5f 100644 --- a/spec/models/form/common/pages/created_by_spec.rb +++ b/spec/models/form/common/pages/created_by_spec.rb @@ -34,7 +34,15 @@ RSpec.describe Form::Common::Pages::CreatedBy, type: :model do end context "when the current user is a support user" do - let(:support_user) { FactoryBot.build(:user, :support) } + let(:support_user) { build(:user, :support) } + + it "is shown" do + expect(page.routed_to?(lettings_log, support_user)).to be true + end + end + + context "when the current user is a data coordinator" do + let(:support_user) { build(:user, :data_coordinator) } it "is shown" do expect(page.routed_to?(lettings_log, support_user)).to be true @@ -42,7 +50,7 @@ RSpec.describe Form::Common::Pages::CreatedBy, type: :model do end context "when the current user is not a support user" do - let(:user) { FactoryBot.build(:user) } + let(:user) { build(:user) } it "is not shown" do expect(page.routed_to?(lettings_log, user)).to be false diff --git a/spec/models/form/common/questions/created_by_id_spec.rb b/spec/models/form/common/questions/created_by_id_spec.rb index dde117f43..45f1a95af 100644 --- a/spec/models/form/common/questions/created_by_id_spec.rb +++ b/spec/models/form/common/questions/created_by_id_spec.rb @@ -8,13 +8,13 @@ RSpec.describe Form::Common::Questions::CreatedById, type: :model do let(:page) { instance_double(Form::Page) } let(:subsection) { instance_double(Form::Subsection) } let(:form) { instance_double(Form) } - let(:user_1) { FactoryBot.create(:user, name: "first user") } - let(:user_2) { FactoryBot.create(:user, name: "second user") } + let(:user_1) { create(:user, name: "first user") } + let(:user_2) { create(:user, name: "second user") } let!(:expected_answer_options) do { "" => "Select an option", - user_1.id => user_1.name, - user_2.id => user_2.name, + user_1.id => "#{user_1.name} (#{user_1.email})", + user_2.id => "#{user_2.name} (#{user_2.email})", } end @@ -51,15 +51,23 @@ RSpec.describe Form::Common::Questions::CreatedById, type: :model do end context "when the current user is support" do - let(:support_user) { FactoryBot.build(:user, :support) } + let(:support_user) { build(:user, :support) } it "is shown in check answers" do expect(question.hidden_in_check_answers?(nil, support_user)).to be false end end - context "when the current user is not support" do - let(:user) { FactoryBot.build(:user) } + context "when the current user is data_coordinator" do + let(:support_user) { build(:user, :data_coordinator) } + + it "is shown in check answers" do + expect(question.hidden_in_check_answers?(nil, support_user)).to be false + end + end + + context "when the current user is data_provider" do + let(:user) { build(:user, :data_provider) } it "is not shown in check answers" do expect(question.hidden_in_check_answers?(nil, user)).to be true @@ -67,11 +75,11 @@ RSpec.describe Form::Common::Questions::CreatedById, type: :model do end context "when the owning organisation is already set" do - let(:lettings_log) { FactoryBot.create(:lettings_log, owning_organisation: user_2.organisation) } + let(:lettings_log) { create(:lettings_log, owning_organisation: user_2.organisation) } let(:expected_answer_options) do { "" => "Select an option", - user_2.id => user_2.name, + user_2.id => "#{user_2.name} (#{user_2.email})", } end diff --git a/spec/models/form/lettings/pages/created_by_spec.rb b/spec/models/form/lettings/pages/created_by_spec.rb index b1ac0853e..dd98c0fa6 100644 --- a/spec/models/form/lettings/pages/created_by_spec.rb +++ b/spec/models/form/lettings/pages/created_by_spec.rb @@ -22,9 +22,15 @@ RSpec.describe Form::Lettings::Pages::CreatedBy, type: :model do end end + context "when data coordinator" do + it "is shown" do + expect(page.routed_to?(nil, create(:user, :data_coordinator))).to eq(true) + end + end + context "when not support" do it "is not shown" do - expect(page.routed_to?(nil, create(:user, :data_coordinator))).to eq(false) + expect(page.routed_to?(nil, create(:user))).to eq(false) end end end diff --git a/spec/models/form/lettings/questions/created_by_id_spec.rb b/spec/models/form/lettings/questions/created_by_id_spec.rb index c82ec13e1..9378e355f 100644 --- a/spec/models/form/lettings/questions/created_by_id_spec.rb +++ b/spec/models/form/lettings/questions/created_by_id_spec.rb @@ -52,15 +52,23 @@ RSpec.describe Form::Lettings::Questions::CreatedById, type: :model do end context "when the current user is support" do - let(:support_user) { FactoryBot.build(:user, :support) } + let(:support_user) { build(:user, :support) } it "is shown in check answers" do expect(question.hidden_in_check_answers?(nil, support_user)).to be false end end + context "when the current user is daa coordinator" do + let(:user) { build(:user, :data_coordinator) } + + it "is shown in check answers" do + expect(question.hidden_in_check_answers?(nil, user)).to be false + end + end + context "when the current user is not support" do - let(:user) { FactoryBot.build(:user) } + let(:user) { build(:user) } it "is not shown in check answers" do expect(question.hidden_in_check_answers?(nil, user)).to be true