Browse Source

[CLDC-2202] Allow coordinators to set created_by

pull/1533/head
Jack S 3 years ago
parent
commit
92e3bb938e
  1. 5
      app/models/form/common/pages/created_by.rb
  2. 9
      app/models/form/common/questions/created_by_id.rb
  3. 5
      app/models/form/lettings/pages/created_by.rb
  4. 5
      app/models/form/lettings/questions/created_by_id.rb
  5. 4
      spec/features/lettings_log_spec.rb
  6. 12
      spec/models/form/common/pages/created_by_spec.rb
  7. 26
      spec/models/form/common/questions/created_by_id_spec.rb
  8. 8
      spec/models/form/lettings/pages/created_by_spec.rb
  9. 12
      spec/models/form/lettings/questions/created_by_id_spec.rb

5
app/models/form/common/pages/created_by.rb

@ -11,6 +11,9 @@ class Form::Common::Pages::CreatedBy < ::Form::Page
end end
def routed_to?(_log, current_user) 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
end end

9
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" } answer_opts = { "" => "Select an option" }
return answer_opts unless ActiveRecord::Base.connected? return answer_opts unless ActiveRecord::Base.connected?
User.select(:id, :name).each_with_object(answer_opts) do |user, hsh| User.select(:id, :name, :email).each_with_object(answer_opts) do |user, hsh|
hsh[user.id] = user.name hsh[user.id] = "#{user.name} (#{user.email})"
hsh hsh
end end
end end
@ -31,7 +31,10 @@ class Form::Common::Questions::CreatedById < ::Form::Question
end end
def hidden_in_check_answers?(_log, current_user) 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 end
def derived? def derived?

5
app/models/form/lettings/pages/created_by.rb

@ -11,6 +11,9 @@ class Form::Lettings::Pages::CreatedBy < ::Form::Page
end end
def routed_to?(_log, current_user) 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
end end

5
app/models/form/lettings/questions/created_by_id.rb

@ -34,7 +34,10 @@ class Form::Lettings::Questions::CreatedById < ::Form::Question
end end
def hidden_in_check_answers?(_log, current_user) 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 end
def derived? def derived?

4
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 "when completing the setup log section" do
context "and there is at most 1 potential stock owner" 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") visit("/lettings-logs")
click_button("Create a new lettings log") click_button("Create a new lettings log")
click_link("Set up this 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 log_id = page.current_path.scan(/\d/).join
expect(page).to have_current_path("/lettings-logs/#{log_id}/needs-type") expect(page).to have_current_path("/lettings-logs/#{log_id}/needs-type")
visit("lettings-logs/#{log_id}/setup/check-answers") visit("lettings-logs/#{log_id}/setup/check-answers")

12
spec/models/form/common/pages/created_by_spec.rb

@ -34,7 +34,15 @@ RSpec.describe Form::Common::Pages::CreatedBy, type: :model do
end end
context "when the current user is a support user" do 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 it "is shown" do
expect(page.routed_to?(lettings_log, support_user)).to be true 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 end
context "when the current user is not a support user" do 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 it "is not shown" do
expect(page.routed_to?(lettings_log, user)).to be false expect(page.routed_to?(lettings_log, user)).to be false

26
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(:page) { instance_double(Form::Page) }
let(:subsection) { instance_double(Form::Subsection) } let(:subsection) { instance_double(Form::Subsection) }
let(:form) { instance_double(Form) } let(:form) { instance_double(Form) }
let(:user_1) { FactoryBot.create(:user, name: "first user") } let(:user_1) { create(:user, name: "first user") }
let(:user_2) { FactoryBot.create(:user, name: "second user") } let(:user_2) { create(:user, name: "second user") }
let!(:expected_answer_options) do let!(:expected_answer_options) do
{ {
"" => "Select an option", "" => "Select an option",
user_1.id => user_1.name, user_1.id => "#{user_1.name} (#{user_1.email})",
user_2.id => user_2.name, user_2.id => "#{user_2.name} (#{user_2.email})",
} }
end end
@ -51,15 +51,23 @@ RSpec.describe Form::Common::Questions::CreatedById, type: :model do
end end
context "when the current user is support" do 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 it "is shown in check answers" do
expect(question.hidden_in_check_answers?(nil, support_user)).to be false expect(question.hidden_in_check_answers?(nil, support_user)).to be false
end end
end end
context "when the current user is not support" do context "when the current user is data_coordinator" do
let(:user) { FactoryBot.build(:user) } 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 it "is not shown in check answers" do
expect(question.hidden_in_check_answers?(nil, user)).to be true 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 end
context "when the owning organisation is already set" do 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 let(:expected_answer_options) do
{ {
"" => "Select an option", "" => "Select an option",
user_2.id => user_2.name, user_2.id => "#{user_2.name} (#{user_2.email})",
} }
end end

8
spec/models/form/lettings/pages/created_by_spec.rb

@ -22,9 +22,15 @@ RSpec.describe Form::Lettings::Pages::CreatedBy, type: :model do
end end
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 context "when not support" do
it "is not shown" 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 end
end end

12
spec/models/form/lettings/questions/created_by_id_spec.rb

@ -52,15 +52,23 @@ RSpec.describe Form::Lettings::Questions::CreatedById, type: :model do
end end
context "when the current user is support" do 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 it "is shown in check answers" do
expect(question.hidden_in_check_answers?(nil, support_user)).to be false expect(question.hidden_in_check_answers?(nil, support_user)).to be false
end end
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 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 it "is not shown in check answers" do
expect(question.hidden_in_check_answers?(nil, user)).to be true expect(question.hidden_in_check_answers?(nil, user)).to be true

Loading…
Cancel
Save