diff options
| author | Gareth Rees <gareth@mysociety.org> | 2015-06-29 13:09:32 +0100 |
|---|---|---|
| committer | Gareth Rees <gareth@mysociety.org> | 2015-06-29 13:09:32 +0100 |
| commit | 98ae1c241d360feb21e76876813578cd58332c53 (patch) | |
| tree | 1067eb31fd43ca1be0cb962eefdaebd94ecfbd28 | |
| parent | 6b038291717c8afd8d1125bee644a92f81feb13c (diff) | |
Clear old WidgetVotes when converted to TrackThing
When a User signs in to confirm their WidgetVote, a TrackThing is
created. This leads to the vote being double-counted as the WidgetVote
is not cleared.
Fixes https://github.com/mysociety/alaveteli/issues/2601
| -rw-r--r-- | app/controllers/track_controller.rb | 9 | ||||
| -rw-r--r-- | spec/controllers/track_controller_spec.rb | 33 |
2 files changed, 42 insertions, 0 deletions
diff --git a/app/controllers/track_controller.rb b/app/controllers/track_controller.rb index cbefb6291..021c26613 100644 --- a/app/controllers/track_controller.rb +++ b/app/controllers/track_controller.rb @@ -17,6 +17,15 @@ class TrackController < ApplicationController return atom_feed_internal if params[:feed] == 'feed' if self.track_set + if AlaveteliConfiguration.enable_widgets && cookies[:widget_vote] + @info_request. + widget_votes. + where(:cookie => cookies[:widget_vote]). + destroy_all + + cookies[:widget_vote] = nil + end + redirect_to request_url(@info_request) end end diff --git a/spec/controllers/track_controller_spec.rb b/spec/controllers/track_controller_spec.rb index b453fde8c..2585e6e74 100644 --- a/spec/controllers/track_controller_spec.rb +++ b/spec/controllers/track_controller_spec.rb @@ -1,6 +1,39 @@ # -*- encoding : utf-8 -*- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') +describe TrackController do + + describe 'GET track_request' do + + it 'clears the widget_vote cookie for the user' do + AlaveteliConfiguration.stub!(:enable_widgets).and_return(true) + @info_request = FactoryGirl.create(:info_request) + + session[:user_id] = FactoryGirl.create(:user).id + request.cookies['widget_vote'] = '0300fd3e1177127cebff' + + get :track_request, :url_title => @info_request.url_title, :feed => 'track' + + expect(cookies[:widget_vote]).to be_nil + end + + it 'clears widget votes for the request' do + AlaveteliConfiguration.stub!(:enable_widgets).and_return(true) + @info_request = FactoryGirl.create(:info_request) + @info_request.widget_votes.create(:cookie => '0300fd3e1177127cebff') + + session[:user_id] = FactoryGirl.create(:user).id + request.cookies['widget_vote'] = '0300fd3e1177127cebff' + + get :track_request, :url_title => @info_request.url_title, :feed => 'track' + + expect(@info_request.widget_votes).to be_empty + end + + end + +end + describe TrackController, "when making a new track on a request" do before(:each) do @ir = mock_model(InfoRequest, :url_title => 'myrequest', |
