Fix booth recounts poll stats discrepancies
Due to technical issues, sometimes users voted in booths and their vote couldn't be added to the database. So we're including them in the users with no demographic data.
This commit is contained in:
@@ -89,6 +89,10 @@ class Poll::Stats
|
||||
end
|
||||
end
|
||||
|
||||
def total_no_demographic_data
|
||||
super + total_unregistered_booth
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def participant_ids
|
||||
@@ -103,6 +107,14 @@ class Poll::Stats
|
||||
@recounts ||= poll.recounts
|
||||
end
|
||||
|
||||
def total_registered_booth
|
||||
voters.where(origin: "booth").count
|
||||
end
|
||||
|
||||
def total_unregistered_booth
|
||||
[total_participants_booth - total_registered_booth, 0].max
|
||||
end
|
||||
|
||||
stats_cache(*stats_methods)
|
||||
|
||||
def stats_cache(key, &block)
|
||||
|
||||
@@ -186,6 +186,34 @@ describe Poll::Stats do
|
||||
end
|
||||
end
|
||||
|
||||
describe "#total_no_demographic_data" do
|
||||
before do
|
||||
create(:poll_voter, :from_web, poll: poll, user: create(:user, :level_two, gender: nil))
|
||||
end
|
||||
|
||||
context "more registered participants than participants in recounts" do
|
||||
before do
|
||||
create(:poll_recount, :from_booth, poll: poll, total_amount: 1)
|
||||
2.times { create(:poll_voter, :from_booth, poll: poll) }
|
||||
end
|
||||
|
||||
it "returns registered users with no demographic data" do
|
||||
expect(stats.total_no_demographic_data).to eq 1
|
||||
end
|
||||
end
|
||||
|
||||
context "more participants in recounts than registered participants" do
|
||||
before do
|
||||
create(:poll_recount, :from_booth, poll: poll, total_amount: 3)
|
||||
2.times { create(:poll_voter, :from_booth, poll: poll) }
|
||||
end
|
||||
|
||||
it "returns registered users with no demographic data plus users not registered" do
|
||||
expect(stats.total_no_demographic_data).to eq 2
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#channels" do
|
||||
context "no participants" do
|
||||
it "returns no channels" do
|
||||
|
||||
Reference in New Issue
Block a user