Add Milestone tag select filter on executions public page

This commit is contained in:
lalo
2019-04-03 09:51:13 +02:00
parent 63e0cd02d0
commit be8a0dbe8a
28 changed files with 180 additions and 38 deletions

View File

@@ -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) }

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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