From 3282606be222dd78bab0fd56a2d588a2a407e2b7 Mon Sep 17 00:00:00 2001 From: lalo Date: Fri, 29 Mar 2019 11:44:01 +0100 Subject: [PATCH] Add act_as_taggable_on milestoneable concern --- app/models/concerns/milestoneable.rb | 2 ++ spec/factories/budgets.rb | 4 ++++ spec/factories/classifications.rb | 4 ++++ spec/factories/legislations.rb | 4 ++++ spec/factories/proposals.rb | 3 +++ spec/models/budget/investment_spec.rb | 21 +++++++++++++++++++ spec/models/legislation/process_spec.rb | 20 ++++++++++++++++++ spec/models/proposal_spec.rb | 28 +++++++++++++++++++++++++ 8 files changed, 86 insertions(+) diff --git a/app/models/concerns/milestoneable.rb b/app/models/concerns/milestoneable.rb index 66de28d6c..0ed1b47f5 100644 --- a/app/models/concerns/milestoneable.rb +++ b/app/models/concerns/milestoneable.rb @@ -8,6 +8,8 @@ module Milestoneable has_many :progress_bars, as: :progressable + acts_as_taggable_on :milestone_tags + def primary_progress_bar progress_bars.primary.first end diff --git a/spec/factories/budgets.rb b/spec/factories/budgets.rb index fc60927cc..11645104f 100644 --- a/spec/factories/budgets.rb +++ b/spec/factories/budgets.rb @@ -166,6 +166,10 @@ FactoryBot.define do trait :with_confirmed_hide do confirmed_hide_at { Time.current } end + + trait :with_milestone_tags do + after(:create) { |investment| investment.milestone_tags << create(:tag, :milestone) } + end end factory :budget_phase, class: "Budget::Phase" do diff --git a/spec/factories/classifications.rb b/spec/factories/classifications.rb index e905ea3d4..e8721a50c 100644 --- a/spec/factories/classifications.rb +++ b/spec/factories/classifications.rb @@ -5,6 +5,10 @@ FactoryBot.define do trait :category do kind "category" end + + trait :milestone do + kind "milestone" + end end factory :tagging, class: "ActsAsTaggableOn::Tagging" do diff --git a/spec/factories/legislations.rb b/spec/factories/legislations.rb index ff149c905..d6ed4b20a 100644 --- a/spec/factories/legislations.rb +++ b/spec/factories/legislations.rb @@ -112,6 +112,10 @@ FactoryBot.define do result_publication_enabled false published true end + + trait :with_milestone_tags do + after(:create) { |legislation| legislation.milestone_tags << create(:tag, :milestone) } + end end factory :legislation_draft_version, class: "Legislation::DraftVersion" do diff --git a/spec/factories/proposals.rb b/spec/factories/proposals.rb index 7cbd44acb..8fcb7bf76 100644 --- a/spec/factories/proposals.rb +++ b/spec/factories/proposals.rb @@ -66,6 +66,9 @@ FactoryBot.define do trait :published do published_at { Time.current } + + trait :with_milestone_tags do + after(:create) { |proposal| proposal.milestone_tags << create(:tag, :milestone) } end end diff --git a/spec/models/budget/investment_spec.rb b/spec/models/budget/investment_spec.rb index 587c34ba2..797845b9b 100644 --- a/spec/models/budget/investment_spec.rb +++ b/spec/models/budget/investment_spec.rb @@ -1267,6 +1267,27 @@ describe Budget::Investment do investment.valuators << valuator investment.administrator = administrator expect(investment.admin_and_valuator_users_associated).to eq([valuator, administrator]) + + end + end + + 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 end end end diff --git a/spec/models/legislation/process_spec.rb b/spec/models/legislation/process_spec.rb index c870a4049..389ccff6a 100644 --- a/spec/models/legislation/process_spec.rb +++ b/spec/models/legislation/process_spec.rb @@ -194,4 +194,24 @@ describe Legislation::Process do end end + 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 diff --git a/spec/models/proposal_spec.rb b/spec/models/proposal_spec.rb index b55cbba9f..7d5d8067c 100644 --- a/spec/models/proposal_spec.rb +++ b/spec/models/proposal_spec.rb @@ -1084,4 +1084,32 @@ describe Proposal do end + describe "milestone_tags" do + + context "without milestone_tags" do + + let(:proposal) {create(:proposal)} + + it "do not have milestone_tags" do + expect(proposal.milestone_tag_list).to eq([]) + expect(proposal.milestone_tags).to eq([]) + end + + it "add a new milestone_tag" do + proposal.milestone_tag_list = "tag1,tag2" + + expect(proposal.milestone_tag_list).to eq(["tag1", "tag2"]) + end + end + + context "with milestone_tags" do + + let(:proposal) {create(:proposal, :with_milestone_tags)} + + it "has milestone_tags" do + expect(proposal.milestone_tag_list.count).to eq(1) + end + end + end + end