diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 4dd865eb82..71daf02ce6 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -41,13 +41,14 @@ def create validate_role_resource_params klass = Role::TITLE_TO_RESOURCE[params[:resource_type].to_sym] resource = klass&.find(params[:resource_id]) + existing_user = User.find_by(email: user_params[:email]) UserInviteService.invite( name: user_params[:name], email: user_params[:email], roles: [params[:resource_type].to_sym], resource: resource ) - flash[:notice] = "Created a new user!" + flash[:notice] = existing_user ? "Created a new role!" : "Created a new user!" redirect_to admin_users_path rescue => e flash.now[:error] = "Failed to create user: #{e}" diff --git a/spec/requests/admin/users_requests_spec.rb b/spec/requests/admin/users_requests_spec.rb index dbd9018f54..ff95d950ee 100644 --- a/spec/requests/admin/users_requests_spec.rb +++ b/spec/requests/admin/users_requests_spec.rb @@ -152,6 +152,34 @@ expect(new_user.has_role?(Role::ORG_ADMIN, organization)).to be_falsey end + context "flash notice behavior" do + context "when creating a new user" do + it "shows 'Created a new user!' message" do + post admin_users_path, params: { + user: { name: "New User", email: "new@example.com" }, + resource_type: Role::ORG_USER, + resource_id: organization.id + } + expect(response).to redirect_to(admin_users_path) + expect(flash[:notice]).to eq("Created a new user!") + end + end + + context "when adding a role to an existing user" do + let!(:existing_user) { create(:user, email: "existing@example.com", organization: organization) } + + it "shows 'Created a new role!' message" do + post admin_users_path, params: { + user: { name: existing_user.name, email: existing_user.email }, + resource_type: Role::PARTNER, + resource_id: partner.id + } + expect(response).to redirect_to(admin_users_path) + expect(flash[:notice]).to eq("Created a new role!") + end + end + end + it "creates an org admin" do post admin_users_path, params: { user: { name: "New Org Admin", email: organization.email },