Note we cannot directly get all related contents through SQL because related contents are spread through different tables.
37 lines
1.1 KiB
Ruby
37 lines
1.1 KiB
Ruby
require "rails_helper"
|
|
|
|
describe SDG::Related do
|
|
let(:proposal) { create(:proposal) }
|
|
let(:another_proposal) { create(:proposal) }
|
|
let(:related_sdg) { SDG::Goal[1] }
|
|
|
|
describe "#proposals" do
|
|
it "can assign proposals to a model" do
|
|
related_sdg.proposals = [proposal, another_proposal]
|
|
|
|
expect(SDG::Relation.count).to be 2
|
|
expect(SDG::Relation.first.related_sdg).to eq related_sdg
|
|
expect(SDG::Relation.last.related_sdg).to eq related_sdg
|
|
expect(SDG::Relation.first.relatable).to eq proposal
|
|
expect(SDG::Relation.last.relatable).to eq another_proposal
|
|
end
|
|
|
|
it "can obtain the list of proposals" do
|
|
related_sdg.proposals = [proposal, another_proposal]
|
|
|
|
expect(related_sdg.reload.proposals).to match_array [proposal, another_proposal]
|
|
end
|
|
end
|
|
|
|
describe "#relatables" do
|
|
let(:investment) { create(:budget_investment) }
|
|
|
|
it "returns all related content" do
|
|
related_sdg.proposals = [proposal, another_proposal]
|
|
related_sdg.budget_investments = [investment]
|
|
|
|
expect(related_sdg.reload.relatables).to match_array [proposal, another_proposal, investment]
|
|
end
|
|
end
|
|
end
|