Add missing relation between administrator and budget_administrators, otherwise we'd get the following exception when deleting and administrator with assigned budgets: PG::ForeignKeyViolation: ERROR: update or delete on table "administrators" violates foreign key constraint "fk_rails_ee7dc33688" on table "budget_administrators" DETAIL: Key (id)=(3) is still referenced from table "budget_administrators".
51 lines
1.6 KiB
Ruby
51 lines
1.6 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Administrator do
|
|
describe "#description_or_name" do
|
|
let!(:user) { create(:user, username: "Billy Wilder") }
|
|
|
|
it "returns description if present" do
|
|
administrator = create(:administrator, user: user, description: "John Doe")
|
|
|
|
expect(administrator.description_or_name).to eq("John Doe")
|
|
end
|
|
|
|
it "returns name if description is nil" do
|
|
administrator = create(:administrator, user: user)
|
|
|
|
expect(administrator.description_or_name).to eq("Billy Wilder")
|
|
end
|
|
|
|
it "returns name if description is blank" do
|
|
administrator = create(:administrator, description: "")
|
|
|
|
expect(administrator.description_or_name).to eq(administrator.name)
|
|
end
|
|
end
|
|
|
|
describe "#description_or_name_and_email" do
|
|
let!(:user) { create(:user, username: "Billy Wilder", email: "test@test.com") }
|
|
|
|
it "returns description and email if decription present" do
|
|
administrator = create(:administrator, description: "John Doe", user: user)
|
|
|
|
expect(administrator.description_or_name_and_email).to eq("John Doe (test@test.com)")
|
|
end
|
|
|
|
it "returns name and email if description is not present" do
|
|
administrator = create(:administrator, user: user)
|
|
|
|
expect(administrator.description_or_name_and_email).to eq("Billy Wilder (test@test.com)")
|
|
end
|
|
end
|
|
|
|
describe "#destroy" do
|
|
it "removes dependent budget administrator records" do
|
|
administrator = create(:administrator)
|
|
create_list(:budget, 2, administrators: [administrator])
|
|
|
|
expect { administrator.destroy }.to change { BudgetAdministrator.count }.by(-2)
|
|
end
|
|
end
|
|
end
|