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
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

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" }
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?

5
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

5
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?

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 "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")

12
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

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(: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

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
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

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
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

Loading…
Cancel
Save