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.
72 lines
2.2 KiB
72 lines
2.2 KiB
require "rails_helper" |
|
|
|
RSpec.describe User, type: :model do |
|
describe "#new" do |
|
let(:user) { FactoryBot.create(:user) } |
|
let(:other_organisation) { FactoryBot.create(:organisation) } |
|
let!(:owned_case_log) do |
|
FactoryBot.create( |
|
:case_log, |
|
:completed, |
|
owning_organisation: user.organisation, |
|
managing_organisation: other_organisation, |
|
) |
|
end |
|
let!(:managed_case_log) do |
|
FactoryBot.create( |
|
:case_log, |
|
owning_organisation: other_organisation, |
|
managing_organisation: user.organisation, |
|
) |
|
end |
|
|
|
it "belongs to an organisation" do |
|
expect(user.organisation).to be_a(Organisation) |
|
end |
|
|
|
it "has owned case logs through their organisation" do |
|
expect(user.owned_case_logs.first).to eq(owned_case_log) |
|
end |
|
|
|
it "has managed case logs through their organisation" do |
|
expect(user.managed_case_logs.first).to eq(managed_case_log) |
|
end |
|
|
|
it "has case logs through their organisation" do |
|
expect(user.case_logs.to_a).to eq([owned_case_log, managed_case_log]) |
|
end |
|
|
|
it "has case log status helper methods" do |
|
expect(user.completed_case_logs.to_a).to eq([owned_case_log]) |
|
expect(user.not_completed_case_logs.to_a).to eq([managed_case_log]) |
|
end |
|
|
|
it "has a role" do |
|
expect(user.role).to eq("data_provider") |
|
expect(user.data_provider?).to be true |
|
expect(user.data_coordinator?).to be false |
|
end |
|
|
|
it "is not a data protection officer by default" do |
|
expect(user.is_data_protection_officer?).to be false |
|
end |
|
|
|
it "can be set to data protection officer" do |
|
expect { user.is_data_protection_officer! } |
|
.to change { user.reload.is_data_protection_officer? }.from(false).to(true) |
|
end |
|
end |
|
|
|
describe "paper trail" do |
|
let(:user) { FactoryBot.create(:user) } |
|
|
|
it "creates a record of changes to a log" do |
|
expect { user.update!(name: "new test name") }.to change(user.versions, :count).by(1) |
|
end |
|
|
|
it "allows case logs to be restored to a previous version" do |
|
user.update!(name: "new test name") |
|
expect(user.paper_trail.previous_version.name).to eq("Danny Rojas") |
|
end |
|
end |
|
end
|
|
|