Merge pull request #2576 from consul/refactor_for_valuator_groups

Add Valuator Group name validation & related specs
This commit is contained in:
Alberto Calderón Queimadelos
2018-04-06 00:22:58 +02:00
committed by GitHub
4 changed files with 42 additions and 1 deletions

View File

@@ -2,4 +2,6 @@ class ValuatorGroup < ActiveRecord::Base
has_many :valuators
has_many :valuator_group_assignments, dependent: :destroy, class_name: 'Budget::ValuatorGroupAssignment'
has_many :investments, through: :valuator_group_assignments, class_name: 'Budget::Investment'
end
validates :name, presence: true, uniqueness: true
end

View File

@@ -62,6 +62,7 @@ FactoryBot.define do
end
factory :valuator_group, class: ValuatorGroup do
sequence(:name) { |n| "Valuator Group #{n}" }
end
factory :identity do

View File

@@ -340,6 +340,24 @@ describe Budget::Investment do
end
end
describe "#by_valuator_group" do
it "returns investments assigned to a valuator's group" do
valuator = create(:valuator)
valuator_group = create(:valuator_group, valuators: [valuator])
assigned_investment = create(:budget_investment, valuators: [valuator],
valuator_groups: [valuator_group])
another_assigned_investment = create(:budget_investment, valuator_groups: [valuator_group])
unassigned_investment = create(:budget_investment, valuators: [valuator], valuator_groups: [])
create(:budget_investment, valuators: [valuator], valuator_groups: [create(:valuator_group)])
by_valuator_group = described_class.by_valuator_group(valuator.valuator_group_id)
expect(by_valuator_group.size).to eq(2)
expect(by_valuator_group).to contain_exactly(assigned_investment, another_assigned_investment)
end
end
describe "scopes" do
describe "valuation_open" do
it "returns all investments with false valuation_finished" do

View File

@@ -0,0 +1,20 @@
require 'rails_helper'
describe ValuatorGroup do
describe 'Validations' do
it "should be valid" do
expect(build(:valuator_group)).to be_valid
end
it "should not be valid without a name" do
expect(build(:valuator_group, name: nil)).not_to be_valid
end
it "should not be valid with the same name as an existing one" do
create(:valuator_group, name: 'The Valuators')
expect(build(:valuator_group, name: 'The Valuators')).not_to be_valid
end
end
end