Commit da7c1444 authored by Dan Rowden's avatar Dan Rowden Committed by Alfredo Sumaran

Updated milestone count helper plus tests

parent c1f508b0
......@@ -38,12 +38,12 @@ module MilestonesHelper
# Returns count of milestones for different states
# Uses explicit hash keys as the 'opened' state URL params differs from the db value
# and we need to add the total
def milestone_counts(project:)
counts = @project.milestones.reorder(nil).group(:state).count()
def milestone_counts(milestones)
counts = milestones.reorder(nil).group(:state).count
{
opened: counts['active'],
closed: counts['closed'],
all: counts['active'] + counts['closed']
all: counts.values.sum
}
end
......
- counts = milestone_counts(project: @project)
- counts = milestone_counts(@project.milestones)
%ul.nav-links
%li{class: ("active" if params[:state].blank? || params[:state] == 'opened')}
......
......@@ -3,10 +3,15 @@ FactoryGirl.define do
title
project
trait :active do
state "active"
end
trait :closed do
state :closed
state "closed"
end
factory :active_milestone, traits: [:active]
factory :closed_milestone, traits: [:closed]
end
end
require 'spec_helper'
describe MilestonesHelper do
describe '#milestone_counts' do
let(:project) { FactoryGirl.create(:project) }
let(:milestone_1) { FactoryGirl.create(:active_milestone, project: project) }
let(:milestone_2) { FactoryGirl.create(:active_milestone, project: project) }
let(:milestone_3) { FactoryGirl.create(:closed_milestone, project: project) }
let(:counts) { helper.milestone_counts(project.milestones) }
it 'returns a hash containing three items' do
expect(counts.length).to eq 3
end
it 'returns a hash containing "opened" key' do
expect(counts.has_key?(:opened)).to eq true
end
it 'returns a hash containing "closed" key' do
expect(counts.has_key?(:closed)).to eq true
end
it 'returns a hash containing "all" key' do
expect(counts.has_key?(:all)).to eq true
end
# This throws a "NoMethodError: undefined method `+' for nil:NilClass" error for line 27; can't figure out why it can't find the keys in the hash
# it 'shows "all" object is the sum of "opened" and "closed" objects' do
# total = counts[:opened] + counts[:closed]
# expect(counts[:all]).to eq total
# end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment