Skip to content

Commit

Permalink
added unassigned opportunities to the opportunity overview page
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris Carter authored and sebjacobs committed Nov 5, 2012
1 parent e7e1cd2 commit d6d22fe
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 1 deletion.
1 change: 1 addition & 0 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ def redraw

def opportunities_overview
@users_with_opportunities = User.have_assigned_opportunities
@unassigned_opportunities = Opportunity.unassigned.pipeline.by_closes_on
end

private
Expand Down
6 changes: 6 additions & 0 deletions app/views/users/opportunities_overview.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,9 @@
%ul
- if @users_with_opportunities.all.any?
= render :partial => "user_report", :collection => @users_with_opportunities
#unassigned
.title
%span#title
= t(:unassigned_opportunities)
%ul.list#opportunities
= render :partial => "opportunities/opportunity", :collection => @unassigned_opportunities
4 changes: 4 additions & 0 deletions config/locales/en-GB_fat_free_crm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,10 @@ en-GB:
view_assigned_tasks: view assigned tasks
view_pending_tasks: view pending tasks

# Views -> Team.
#----------------------------------------------------------------------------
unassigned_opportunities: Unassigned Opportunities

# Views -> Home.
#----------------------------------------------------------------------------
action_commented: commented on
Expand Down
4 changes: 4 additions & 0 deletions config/locales/en-US_fat_free_crm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,10 @@ en-US:
view_assigned_tasks: view assigned tasks
view_pending_tasks: view pending tasks

# Views -> Team.
#----------------------------------------------------------------------------
unassigned_opportunities: Unassigned Opportunities

# Views -> Home.
#----------------------------------------------------------------------------
action_completed: completed
Expand Down
13 changes: 13 additions & 0 deletions spec/acceptance/opportunities_overview_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,17 @@

page.should_not have_selector('#user_16')
end

scenario "Viewing unassigned opportunities" do
FactoryGirl.create(:opportunity, :name => "Acting", :stage => 'prospecting', :assignee => nil)
FactoryGirl.create(:opportunity, :name => "Presenting", :stage => 'won', :assignee => nil)

visit opportunity_overview_page

within "#unassigned" do
page.should have_selector('.title', :text => 'Unassigned Opportunities')
page.should have_content('Acting')
page.should_not have_content('Presenting')
end
end
end
25 changes: 24 additions & 1 deletion spec/controllers/users_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@
xhr :get, :opportunities_overview
assigns[:users_with_opportunities].should == [@current_user]
end

it "@users should be ordered by name" do
FactoryGirl.create(:opportunity, :stage => "prospecting", :assignee => @user)

Expand All @@ -365,21 +366,43 @@
assigns[:users_with_opportunities].should == [@user, user2, user1]
end

it "should assign @unassigned_opportunities with only open unassigned opportunities" do
@o1 = FactoryGirl.create(:opportunity, :stage => "prospecting", :assignee => nil)
@o2 = FactoryGirl.create(:opportunity, :stage => "won", :assignee => nil)
@o3 = FactoryGirl.create(:opportunity, :stage => "prospecting", :assignee => nil)

xhr :get, :opportunities_overview

assigns[:unassigned_opportunities].should include(@o1, @o3)
assigns[:unassigned_opportunities].should_not include(@o2)
end

it "@unassigned_opportunities should be ordered by closes_on" do
@o1 = FactoryGirl.create(:opportunity, :stage => "prospecting", :closes_on => Time.now + 5.weeks, :assignee => nil)
@o2 = FactoryGirl.create(:opportunity, :stage => "prospecting", :closes_on => Time.now + 4.hours, :assignee => nil)
@o3 = FactoryGirl.create(:opportunity, :stage => "prospecting", :closes_on => Time.now + 2.days, :assignee => nil)

xhr :get, :opportunities_overview

assigns[:unassigned_opportunities].should == [@o2, @o3, @o1]
end

it "should not include users who have no assigned opportunities" do
xhr :get, :opportunities_overview
assigns[:users_with_opportunities].should == []
end

it "should not include users who have no open assigned opportunities" do
FactoryGirl.create(:opportunity, :stage => "won", :assignee => @user)

xhr :get, :opportunities_overview
assigns[:users_with_opportunities].should == []
end

it "should render opportunities overview" do
xhr :get, :opportunities_overview
response.should render_template("users/opportunities_overview")
end
end

end

0 comments on commit d6d22fe

Please sign in to comment.