Browse Source

Add specs

pull/1831/head
Jack S 3 years ago
parent
commit
b5b56235b4
  1. 43
      spec/features/user_spec.rb
  2. 37
      spec/requests/users_controller_spec.rb

43
spec/features/user_spec.rb

@ -1,7 +1,7 @@
require "rails_helper" require "rails_helper"
RSpec.describe "User Features" do RSpec.describe "User Features" do
let!(:user) { FactoryBot.create(:user, last_sign_in_at: Time.zone.now) } let!(:user) { create(:user, last_sign_in_at: Time.zone.now) }
let(:reset_password_template_id) { User::RESET_PASSWORD_TEMPLATE_ID } let(:reset_password_template_id) { User::RESET_PASSWORD_TEMPLATE_ID }
let(:notify_client) { instance_double(Notifications::Client) } let(:notify_client) { instance_double(Notifications::Client) }
let(:reset_password_token) { "MCDH5y6Km-U7CFPgAMVS" } let(:reset_password_token) { "MCDH5y6Km-U7CFPgAMVS" }
@ -212,7 +212,7 @@ RSpec.describe "User Features" do
end end
context "when signed in as a data coordinator" do context "when signed in as a data coordinator" do
let!(:user) { FactoryBot.create(:user, :data_coordinator, last_sign_in_at: Time.zone.now) } let!(:user) { create(:user, :data_coordinator, last_sign_in_at: Time.zone.now) }
context "when viewing users" do context "when viewing users" do
before do before do
@ -374,8 +374,8 @@ RSpec.describe "User Features" do
end end
context "when editing someone elses account details" do context "when editing someone elses account details" do
let!(:user) { FactoryBot.create(:user, :data_coordinator, last_sign_in_at: Time.zone.now) } let!(:user) { create(:user, :data_coordinator, last_sign_in_at: Time.zone.now) }
let!(:other_user) { FactoryBot.create(:user, name: "Other name", is_dpo: false, organisation: user.organisation) } let!(:other_user) { create(:user, name: "Other name", is_dpo: false, organisation: user.organisation) }
before do before do
visit("/lettings-logs") visit("/lettings-logs")
@ -423,8 +423,8 @@ RSpec.describe "User Features" do
end end
context "when deactivating a user" do context "when deactivating a user" do
let!(:user) { FactoryBot.create(:user, :data_coordinator, last_sign_in_at: Time.zone.now) } let!(:user) { create(:user, :data_coordinator, last_sign_in_at: Time.zone.now) }
let!(:other_user) { FactoryBot.create(:user, name: "Other name", organisation: user.organisation) } let!(:other_user) { create(:user, name: "Other name", organisation: user.organisation) }
before do before do
visit("/lettings-logs") visit("/lettings-logs")
@ -451,8 +451,8 @@ RSpec.describe "User Features" do
end end
context "when reactivating a user" do context "when reactivating a user" do
let!(:user) { FactoryBot.create(:user, :data_coordinator, last_sign_in_at: Time.zone.now) } let!(:user) { create(:user, :data_coordinator, last_sign_in_at: Time.zone.now) }
let!(:other_user) { FactoryBot.create(:user, name: "Other name", active: false, organisation: user.organisation, last_sign_in_at: Time.zone.now) } let!(:other_user) { create(:user, name: "Other name", active: false, organisation: user.organisation, last_sign_in_at: Time.zone.now) }
let(:personalisation) do let(:personalisation) do
{ {
name: other_user.name, name: other_user.name,
@ -490,8 +490,8 @@ RSpec.describe "User Features" do
end end
context "when signed in as support" do context "when signed in as support" do
let!(:user) { FactoryBot.create(:user, :support) } let!(:user) { create(:user, :support) }
let!(:other_user) { FactoryBot.create(:user, name: "new user", organisation: user.organisation, email: "new_user@example.com", confirmation_token: "abc") } let!(:other_user) { create(:user, name: "new user", organisation: user.organisation, email: "new_user@example.com", confirmation_token: "abc") }
context "when reinviting a user before initial confirmation email has been sent" do context "when reinviting a user before initial confirmation email has been sent" do
let(:personalisation) do let(:personalisation) do
@ -504,15 +504,14 @@ RSpec.describe "User Features" do
end end
before do before do
other_user.update!(initial_confirmation_sent: false) other_user.update!(initial_confirmation_sent: false, confirmed_at: nil)
allow(user).to receive(:need_two_factor_authentication?).and_return(false) allow(user).to receive(:need_two_factor_authentication?).and_return(false)
sign_in(user) sign_in(user)
visit(user_path(user.id)) other_user.legacy_users.destroy_all
visit(user_path(other_user))
end end
it "sends initial confirmable template email when the resend invite link is clicked" do it "sends initial confirmable template email when the resend invite link is clicked" do
other_user.legacy_users.destroy_all
visit(user_path(other_user))
expect(notify_client).to receive(:send_email).with(email_address: "new_user@example.com", template_id: User::CONFIRMABLE_TEMPLATE_ID, personalisation:).once expect(notify_client).to receive(:send_email).with(email_address: "new_user@example.com", template_id: User::CONFIRMABLE_TEMPLATE_ID, personalisation:).once
click_button("Resend invite link") click_button("Resend invite link")
end end
@ -532,12 +531,11 @@ RSpec.describe "User Features" do
other_user.update!(initial_confirmation_sent: true, confirmed_at: nil) other_user.update!(initial_confirmation_sent: true, confirmed_at: nil)
allow(user).to receive(:need_two_factor_authentication?).and_return(false) allow(user).to receive(:need_two_factor_authentication?).and_return(false)
sign_in(user) sign_in(user)
visit(user_path(user.id)) other_user.legacy_users.destroy_all
visit(user_path(other_user))
end end
it "sends and email when the resend invite link is clicked" do it "sends and email when the resend invite link is clicked" do
other_user.legacy_users.destroy_all
visit(user_path(other_user))
expect(notify_client).to receive(:send_email).with(email_address: "new_user@example.com", template_id: User::RECONFIRMABLE_TEMPLATE_ID, personalisation:).once expect(notify_client).to receive(:send_email).with(email_address: "new_user@example.com", template_id: User::RECONFIRMABLE_TEMPLATE_ID, personalisation:).once
click_button("Resend invite link") click_button("Resend invite link")
end end
@ -554,14 +552,13 @@ RSpec.describe "User Features" do
end end
before do before do
other_user.update!(initial_confirmation_sent: true) other_user.update!(initial_confirmation_sent: true, confirmed_at: nil)
allow(user).to receive(:need_two_factor_authentication?).and_return(false) allow(user).to receive(:need_two_factor_authentication?).and_return(false)
sign_in(user) sign_in(user)
visit(user_path(user.id)) visit(user_path(other_user))
end end
it "sends beta onboarding email to be sent when user is legacy" do it "sends beta onboarding email to be sent when user is legacy" do
visit(user_path(other_user))
expect(notify_client).to receive(:send_email).with(email_address: "new_user@example.com", template_id: User::BETA_ONBOARDING_TEMPLATE_ID, personalisation:).once expect(notify_client).to receive(:send_email).with(email_address: "new_user@example.com", template_id: User::BETA_ONBOARDING_TEMPLATE_ID, personalisation:).once
click_button("Resend invite link") click_button("Resend invite link")
end end
@ -569,7 +566,7 @@ RSpec.describe "User Features" do
end end
context "when the user is a customer support person" do context "when the user is a customer support person" do
let(:support_user) { FactoryBot.create(:user, :support, last_sign_in_at: Time.zone.now) } let(:support_user) { create(:user, :support, last_sign_in_at: Time.zone.now) }
let(:devise_notify_mailer) { DeviseNotifyMailer.new } let(:devise_notify_mailer) { DeviseNotifyMailer.new }
let(:notify_client) { instance_double(Notifications::Client) } let(:notify_client) { instance_double(Notifications::Client) }
let(:mfa_template_id) { User::MFA_TEMPLATE_ID } let(:mfa_template_id) { User::MFA_TEMPLATE_ID }
@ -742,8 +739,8 @@ RSpec.describe "User Features" do
context "when viewing logs" do context "when viewing logs" do
context "when filtering by owning organisation and then switching back to all organisations", js: true do context "when filtering by owning organisation and then switching back to all organisations", js: true do
let!(:organisation) { FactoryBot.create(:organisation) } let!(:organisation) { create(:organisation) }
let(:parent_organisation) { FactoryBot.create(:organisation, name: "Filtered Org") } let(:parent_organisation) { create(:organisation, name: "Filtered Org") }
before do before do
create(:organisation_relationship, child_organisation: organisation, parent_organisation:) create(:organisation_relationship, child_organisation: organisation, parent_organisation:)

37
spec/requests/users_controller_spec.rb

@ -1361,12 +1361,45 @@ RSpec.describe UsersController, type: :request do
expect(page).to have_link("Change", text: "if a key contact") expect(page).to have_link("Change", text: "if a key contact")
end end
it "does not show option to resend confirmation email" do
expect(page).not_to have_button("Resend invite link")
end
it "allows deactivating the user" do it "allows deactivating the user" do
expect(page).to have_link("Deactivate user", href: "/users/#{other_user.id}/deactivate") expect(page).to have_link("Deactivate user", href: "/users/#{other_user.id}/deactivate")
end end
it "allows you to resend invitation emails" do context "when user is not confirmed" do
expect(page).to have_button("Resend invite link") before do
other_user.update!(confirmed_at: nil)
get "/users/#{other_user.id}", headers:, params: {}
end
it "returns 200" do
expect(response).to have_http_status(:ok)
end
it "shows the user details page" do
expect(page).to have_content("#{other_user.name}’s account")
end
it "allows changing name, email, role, dpo and key contact" do
expect(page).to have_link("Change", text: "name")
expect(page).to have_link("Change", text: "email address")
expect(page).to have_link("Change", text: "telephone number")
expect(page).not_to have_link("Change", text: "password")
expect(page).to have_link("Change", text: "role")
expect(page).to have_link("Change", text: "if data protection officer")
expect(page).to have_link("Change", text: "if a key contact")
end
it "allows deactivating the user" do
expect(page).to have_link("Deactivate user", href: "/users/#{other_user.id}/deactivate")
end
it "allows you to resend invitation emails" do
expect(page).to have_button("Resend invite link")
end
end end
context "when user is deactivated" do context "when user is deactivated" do

Loading…
Cancel
Save