Browse Source
* Users have roles * Add role to active admin * Add role to users table * Redirect organisation show to details * Remove users tab for data providerspull/141/head
baarkerlounger
3 years ago
committed by
GitHub
19 changed files with 259 additions and 97 deletions
@ -0,0 +1,20 @@
|
||||
module TabNavHelper |
||||
include GovukLinkHelper |
||||
|
||||
def user_cell(user) |
||||
[govuk_link_to(user.name, user), user.email].join("\n") |
||||
end |
||||
|
||||
def org_cell(user) |
||||
role = "<span class='app-!-colour-muted'>#{user.role.to_s.humanize}</span>" |
||||
[user.organisation.name, role].join("\n") |
||||
end |
||||
|
||||
def tab_items(user) |
||||
items = [{ name: t("Details"), url: details_organisation_path(user.organisation) }] |
||||
if user.data_coordinator? |
||||
items << { name: t("Users"), url: users_organisation_path(user.organisation) } |
||||
end |
||||
items |
||||
end |
||||
end |
@ -1,12 +0,0 @@
|
||||
module UserTableHelper |
||||
include GovukLinkHelper |
||||
|
||||
def user_cell(user) |
||||
[govuk_link_to(user.name, user), user.email].join("\n") |
||||
end |
||||
|
||||
def org_cell(user) |
||||
role = "<span class='app-!-colour-muted'>#{user.role}</span>" |
||||
[user.organisation.name, role].join("\n") |
||||
end |
||||
end |
@ -0,0 +1,7 @@
|
||||
module Constants::User |
||||
ROLES = { |
||||
"data_accessor" => 0, |
||||
"data_provider" => 1, |
||||
"data_coordinator" => 2, |
||||
}.freeze |
||||
end |
@ -0,0 +1,15 @@
|
||||
class ChangeUserRoleToEnum < ActiveRecord::Migration[6.1] |
||||
def up |
||||
change_table :users, bulk: true do |t| |
||||
t.remove :role |
||||
t.column :role, :integer |
||||
end |
||||
end |
||||
|
||||
def down |
||||
change_table :users, bulk: true do |t| |
||||
t.remove :role |
||||
t.column :role, :string |
||||
end |
||||
end |
||||
end |
@ -0,0 +1,40 @@
|
||||
require "rails_helper" |
||||
|
||||
RSpec.describe TabNavHelper do |
||||
let(:organisation) { FactoryBot.create(:organisation) } |
||||
let(:user) { FactoryBot.build(:user, organisation: organisation) } |
||||
|
||||
describe "#user_cell" do |
||||
it "returns user link and email separated by a newline character" do |
||||
expected_html = "<a class=\"govuk-link\" href=\"/users\">Danny Rojas</a>\n#{user.email}" |
||||
expect(user_cell(user)).to match(expected_html) |
||||
end |
||||
end |
||||
|
||||
describe "#org_cell" do |
||||
it "returns the users org name and role separated by a newline character" do |
||||
expected_html = "DLUHC\n<span class='app-!-colour-muted'>Data provider</span>" |
||||
expect(org_cell(user)).to match(expected_html) |
||||
end |
||||
end |
||||
|
||||
describe "#tab_items" do |
||||
context "user is a data_coordinator" do |
||||
let(:user) { FactoryBot.build(:user, :data_coordinator, organisation: organisation) } |
||||
it "returns details and user tabs" do |
||||
result = tab_items(user).map { |i| i[:name] } |
||||
expect(result.count).to eq(2) |
||||
expect(result.first).to match("Details") |
||||
expect(result.second).to match("Users") |
||||
end |
||||
end |
||||
|
||||
context "user is a data_provider" do |
||||
it "returns details tab only" do |
||||
result = tab_items(user).map { |i| i[:name] } |
||||
expect(result.count).to eq(1) |
||||
expect(result.first).to match("Details") |
||||
end |
||||
end |
||||
end |
||||
end |
@ -1,19 +0,0 @@
|
||||
require "rails_helper" |
||||
|
||||
RSpec.describe UserTableHelper do |
||||
let(:user) { FactoryBot.build(:user) } |
||||
|
||||
describe "#user_cell" do |
||||
it "returns user link and email separated by a newline character" do |
||||
expected_html = "<a class=\"govuk-link\" href=\"/users\">Danny Rojas</a>\n#{user.email}" |
||||
expect(user_cell(user)).to match(expected_html) |
||||
end |
||||
end |
||||
|
||||
describe "#org_cell" do |
||||
it "returns the users org name and role separated by a newline character" do |
||||
expected_html = "DLUHC\n<span class='app-!-colour-muted'>Data Provider</span>" |
||||
expect(org_cell(user)).to match(expected_html) |
||||
end |
||||
end |
||||
end |
Loading…
Reference in new issue