You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.8 KiB
107 lines
3.8 KiB
require "rails_helper" |
|
|
|
RSpec.describe UserHelper do |
|
let(:current_user) { FactoryBot.create(:user, :data_coordinator) } |
|
let(:user) { FactoryBot.create(:user, :data_coordinator) } |
|
|
|
describe "aliased_user_edit" do |
|
context "when the current logged in user is the same as the user being viewed" do |
|
let(:user) { current_user } |
|
|
|
it "returns the edit account path" do |
|
expect(aliased_user_edit(user, current_user)).to eq(edit_account_path) |
|
end |
|
end |
|
|
|
context "when the current logged in user is not the same as the user being viewed" do |
|
it "returns the edit user path" do |
|
expect(aliased_user_edit(user, current_user)).to eq(edit_user_path(user)) |
|
end |
|
end |
|
end |
|
|
|
describe "perspective" do |
|
context "when the current logged in user is the same as the user being viewed" do |
|
let(:user) { current_user } |
|
|
|
it "returns 'Are you'" do |
|
expect(perspective(user, current_user)).to eq("Are you") |
|
end |
|
end |
|
|
|
context "when the current logged in user is not the same as the user being viewed" do |
|
it "returns 'Is this person'" do |
|
expect(perspective(user, current_user)).to eq("Is this person") |
|
end |
|
end |
|
end |
|
|
|
describe "change button permissions" do |
|
context "when the user is a data provider viewing organisation details" do |
|
let(:current_user) { FactoryBot.create(:user, :data_provider) } |
|
|
|
it "does not allow changing details" do |
|
expect(can_edit_org?(current_user)).to be false |
|
end |
|
end |
|
|
|
context "when the user is a data coordinator viewing organisation details" do |
|
let(:current_user) { FactoryBot.create(:user, :data_coordinator) } |
|
|
|
it "does not allow changing details" do |
|
expect(can_edit_org?(current_user)).to be true |
|
end |
|
end |
|
|
|
context "when the user is a support user viewing organisation details" do |
|
let(:current_user) { FactoryBot.create(:user, :support) } |
|
|
|
it "does not allow changing details" do |
|
expect(can_edit_org?(current_user)).to be true |
|
end |
|
end |
|
end |
|
|
|
describe "organisation_change_warning" do |
|
context "when user doesn't own any logs" do |
|
it "returns a message with the number of logs" do |
|
expected_text = "You’re moving #{user.name} from #{user.organisation.name} to #{current_user.organisation.name}. There are 0 logs assigned to them." |
|
expect(organisation_change_warning(user, current_user.organisation)).to eq(expected_text) |
|
end |
|
end |
|
|
|
context "when user owns 1 lettings log" do |
|
before do |
|
create(:lettings_log, assigned_to: user) |
|
end |
|
|
|
it "returns a message with the number of logs" do |
|
expected_text = "You’re moving #{user.name} from #{user.organisation.name} to #{current_user.organisation.name}. There is 1 log assigned to them." |
|
expect(organisation_change_warning(user, current_user.organisation)).to eq(expected_text) |
|
end |
|
end |
|
|
|
context "when user owns 1 sales log" do |
|
before do |
|
create(:sales_log, assigned_to: user) |
|
end |
|
|
|
it "returns a message with the number of logs" do |
|
expected_text = "You’re moving #{user.name} from #{user.organisation.name} to #{current_user.organisation.name}. There is 1 log assigned to them." |
|
expect(organisation_change_warning(user, current_user.organisation)).to eq(expected_text) |
|
end |
|
end |
|
|
|
context "when user owns multiple log" do |
|
before do |
|
create(:lettings_log, assigned_to: user) |
|
create(:sales_log, assigned_to: user) |
|
end |
|
|
|
it "returns a message with the number of logs" do |
|
expected_text = "You’re moving #{user.name} from #{user.organisation.name} to #{current_user.organisation.name}. There are 2 logs assigned to them." |
|
expect(organisation_change_warning(user, current_user.organisation)).to eq(expected_text) |
|
end |
|
end |
|
end |
|
end
|
|
|