Add Milestone tag select filter on executions public page
This commit is contained in:
@@ -66,6 +66,7 @@ FactoryBot.define do
|
||||
|
||||
trait :published do
|
||||
published_at { Time.current }
|
||||
end
|
||||
|
||||
trait :with_milestone_tags do
|
||||
after(:create) { |proposal| proposal.milestone_tags << create(:tag, :milestone) }
|
||||
|
||||
@@ -1335,6 +1335,7 @@ describe "Admin budget investments" do
|
||||
budget_investment = create(:budget_investment)
|
||||
|
||||
visit admin_budget_budget_investment_path(budget_investment.budget, budget_investment)
|
||||
|
||||
expect(page).not_to have_content("Milestone Tags:")
|
||||
|
||||
click_link "Edit classification"
|
||||
|
||||
@@ -235,6 +235,52 @@ describe "Executions" do
|
||||
select "Bidding (0)", from: "status"
|
||||
expect(page).not_to have_content(investment1.title)
|
||||
end
|
||||
|
||||
scenario "by milestone tag, only display tags for winner investments", :js do
|
||||
create(:milestone, milestoneable: investment1, status: status1)
|
||||
create(:milestone, milestoneable: investment2, status: status2)
|
||||
create(:milestone, milestoneable: investment3, status: status2)
|
||||
investment1.milestone_tag_list.add("tag1", "tag2")
|
||||
investment1.save
|
||||
investment2.milestone_tag_list.add("tag2")
|
||||
investment2.save
|
||||
investment3.milestone_tag_list.add("tag2")
|
||||
investment3.save
|
||||
|
||||
visit budget_path(budget)
|
||||
|
||||
click_link "See results"
|
||||
click_link "Milestones"
|
||||
|
||||
expect(page).to have_content(investment1.title)
|
||||
expect(page).to have_content(investment2.title)
|
||||
|
||||
select "tag2 (2)", from: "milestone_tag"
|
||||
|
||||
expect(page).to have_content(investment1.title)
|
||||
expect(page).to have_content(investment2.title)
|
||||
|
||||
select "Studying the project (1)", from: "status"
|
||||
|
||||
expect(page).to have_content(investment1.title)
|
||||
expect(page).not_to have_content(investment2.title)
|
||||
|
||||
select "Bidding (1)", from: "status"
|
||||
|
||||
expect(page).not_to have_content(investment1.title)
|
||||
expect(page).to have_content(investment2.title)
|
||||
|
||||
select "tag1 (1)", from: "milestone_tag"
|
||||
|
||||
expect(page).not_to have_content(investment1.title)
|
||||
expect(page).not_to have_content(investment2.title)
|
||||
|
||||
select "All (2)", from: "milestone_tag"
|
||||
|
||||
expect(page).not_to have_content(investment1.title)
|
||||
expect(page).to have_content(investment2.title)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context "Heading Order" do
|
||||
|
||||
@@ -1274,17 +1274,22 @@ describe Budget::Investment do
|
||||
describe "milestone_tags" do
|
||||
context "without milestone_tags" do
|
||||
let(:investment) {create(:budget_investment)}
|
||||
|
||||
it "do not have milestone_tags" do
|
||||
expect(investment.milestone_tag_list).to eq([])
|
||||
expect(investment.milestone_tags).to eq([])
|
||||
end
|
||||
|
||||
it "add a new milestone_tag" do
|
||||
investment.milestone_tag_list = "tag1,tag2"
|
||||
|
||||
expect(investment.milestone_tag_list).to eq(["tag1", "tag2"])
|
||||
end
|
||||
end
|
||||
|
||||
context "with milestone_tags" do
|
||||
let(:investment) {create(:budget_investment, :with_milestone_tags)}
|
||||
|
||||
it "has milestone_tags" do
|
||||
expect(investment.milestone_tag_list.count).to eq(1)
|
||||
end
|
||||
|
||||
@@ -306,4 +306,46 @@ describe Budget do
|
||||
expect(budget.formatted_amount(1000.00)).to eq ("€1,000")
|
||||
end
|
||||
end
|
||||
|
||||
describe "#milestone_tags" do
|
||||
let(:investment1) { build(:budget_investment, :winner) }
|
||||
let(:investment2) { build(:budget_investment, :winner) }
|
||||
let(:investment3) { build(:budget_investment) }
|
||||
|
||||
it "returns an empty array if not investments milestone_tags" do
|
||||
budget.investments << investment1
|
||||
|
||||
expect(budget.milestone_tags).to eq([])
|
||||
end
|
||||
|
||||
it "returns array of investments milestone_tags" do
|
||||
investment1.milestone_tag_list = "tag1"
|
||||
investment1.save
|
||||
budget.investments << investment1
|
||||
|
||||
expect(budget.milestone_tags).to eq(["tag1"])
|
||||
end
|
||||
|
||||
it "returns uniq list of investments milestone_tags" do
|
||||
investment1.milestone_tag_list = "tag1"
|
||||
investment1.save
|
||||
investment2.milestone_tag_list = "tag1"
|
||||
investment2.save
|
||||
budget.investments << investment1
|
||||
budget.investments << investment2
|
||||
|
||||
expect(budget.milestone_tags).to eq(["tag1"])
|
||||
end
|
||||
|
||||
it "returns tags only for winner investments" do
|
||||
investment1.milestone_tag_list = "tag1"
|
||||
investment1.save
|
||||
investment3.milestone_tag_list = "tag2"
|
||||
investment3.save
|
||||
budget.investments << investment1
|
||||
budget.investments << investment3
|
||||
|
||||
expect(budget.milestone_tags).to eq(["tag1"])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -197,21 +197,28 @@ describe Legislation::Process do
|
||||
describe "milestone_tags" do
|
||||
context "without milestone_tags" do
|
||||
let(:process) {create(:legislation_process)}
|
||||
|
||||
it "do not have milestone_tags" do
|
||||
expect(process.milestone_tag_list).to eq([])
|
||||
expect(process.milestone_tags).to eq([])
|
||||
end
|
||||
|
||||
it "add a new milestone_tag" do
|
||||
process.milestone_tag_list = "tag1,tag2"
|
||||
|
||||
expect(process.milestone_tag_list).to eq(["tag1", "tag2"])
|
||||
end
|
||||
end
|
||||
|
||||
context "with milestone_tags" do
|
||||
|
||||
let(:process) {create(:legislation_process, :with_milestone_tags)}
|
||||
|
||||
it "has milestone_tags" do
|
||||
expect(process.milestone_tag_list.count).to eq(1)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user