From e3eb7d6cdc5bdf35aab6ff120018ebe3d8af3df7 Mon Sep 17 00:00:00 2001 From: baarkerlounger Date: Fri, 26 Nov 2021 17:51:50 +0000 Subject: [PATCH] Add user admin panel --- app/admin/users.rb | 33 +++++++++++ .../admin/admin_users_controller_spec.rb | 2 +- .../admin/users_controller_spec.rb | 55 +++++++++++++++++++ 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 app/admin/users.rb create mode 100644 spec/controllers/admin/users_controller_spec.rb diff --git a/app/admin/users.rb b/app/admin/users.rb new file mode 100644 index 000000000..1390dd340 --- /dev/null +++ b/app/admin/users.rb @@ -0,0 +1,33 @@ +ActiveAdmin.register User do + permit_params :name, :email, :password, :password_confirmation, :organisation_id + + index do + selectable_column + id_column + column :name + column :email + column :organisation + column :current_sign_in_at + column :sign_in_count + column :created_at + actions + end + + filter :email + filter :name + filter :organisation + filter :current_sign_in_at + filter :sign_in_count + filter :created_at + + form do |f| + f.inputs do + f.input :name + f.input :email + f.input :password + f.input :password_confirmation + f.input :organisation + end + f.actions + end +end diff --git a/spec/controllers/admin/admin_users_controller_spec.rb b/spec/controllers/admin/admin_users_controller_spec.rb index 73f339ac4..7d2ff0594 100644 --- a/spec/controllers/admin/admin_users_controller_spec.rb +++ b/spec/controllers/admin/admin_users_controller_spec.rb @@ -33,7 +33,7 @@ describe Admin::AdminUsersController, type: :controller do get :edit, session: valid_session, params: { id: AdminUser.first.id } end - it "creates a new admin users" do + it "shows an edit form" do expect(page).to have_field("admin_user_email") expect(page).to have_field("admin_user_password") expect(page).to have_field("admin_user_password_confirmation") diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb new file mode 100644 index 000000000..480c92812 --- /dev/null +++ b/spec/controllers/admin/users_controller_spec.rb @@ -0,0 +1,55 @@ +require "rails_helper" +require_relative "../../support/devise" + +describe Admin::UsersController, type: :controller do + render_views + let!(:user) { FactoryBot.create(:user) } + let(:organisation) { FactoryBot.create(:organisation) } + let(:page) { Capybara::Node::Simple.new(response.body) } + let(:resource_title) { "Users" } + let(:valid_session) { {} } + login_admin_user + + describe "Get users" do + before do + get :index, session: valid_session + end + + it "returns a table of users" do + expect(page).to have_content(resource_title) + expect(page).to have_table("index_table_users") + expect(page).to have_link(user.id.to_s) + end + end + + describe "Create users" do + let(:params) do + { + user: { + email: "test5@example.com", + name: "Jane", + password: "pAssword1", + organisation_id: organisation.id, + }, + } + end + + it "creates a new users" do + expect { post :create, session: valid_session, params: params }.to change(User, :count).by(1) + end + end + + describe "Update users" do + before do + get :edit, session: valid_session, params: { id: user.id } + end + + it "shows an edit form" do + expect(page).to have_field("user_email") + expect(page).to have_field("user_name") + expect(page).to have_field("user_organisation_id") + expect(page).to have_field("user_password") + expect(page).to have_field("user_password_confirmation") + end + end +end