107 lines
3.7 KiB
Ruby
107 lines
3.7 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Ahoy::Chart do
|
|
describe ".active_events_data_points" do
|
|
it "groups several events together" do
|
|
create(:budget_investment, created_at: "2010-01-01")
|
|
create(:budget_investment, created_at: "2010-01-02")
|
|
create(:legislation_annotation, created_at: "2010-01-01")
|
|
create(:legislation_annotation, created_at: "2010-01-03")
|
|
|
|
expect(Ahoy::Chart.active_events_data_points).to eq({
|
|
x: ["2010-01-01", "2010-01-02", "2010-01-03"],
|
|
"Budget investments created" => [1, 1, 0],
|
|
"Legislation annotations created" => [1, 0, 1]
|
|
})
|
|
end
|
|
|
|
it "sorts events alphabetically" do
|
|
create(:budget_investment, created_at: "2010-01-01")
|
|
create(:legislation_annotation, created_at: "2010-01-01")
|
|
|
|
I18n.with_locale(:es) do
|
|
expect(Ahoy::Chart.active_events_data_points.keys).to eq([
|
|
:x,
|
|
"Anotaciones creadas",
|
|
"Proyectos de gasto creados"
|
|
])
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#data_points" do
|
|
it "raises an exception for unknown events" do
|
|
chart = Ahoy::Chart.new(:mystery)
|
|
|
|
expect { chart.data_points }.to raise_exception "Unknown event mystery"
|
|
end
|
|
|
|
it "returns data associated with the event" do
|
|
time_1 = Time.zone.local(2015, 01, 01)
|
|
time_2 = Time.zone.local(2015, 01, 02)
|
|
time_3 = Time.zone.local(2015, 01, 03)
|
|
|
|
create(:proposal, created_at: time_1)
|
|
create(:proposal, created_at: time_1)
|
|
create(:proposal, created_at: time_2)
|
|
create(:debate, created_at: time_1)
|
|
create(:debate, created_at: time_3)
|
|
|
|
chart = Ahoy::Chart.new(:proposal_created)
|
|
|
|
expect(chart.data_points).to eq x: ["2015-01-01", "2015-01-02"],
|
|
"Citizen proposals created" => [2, 1]
|
|
end
|
|
|
|
it "accepts strings as the event name" do
|
|
create(:proposal, created_at: Time.zone.local(2015, 01, 01))
|
|
create(:debate, created_at: Time.zone.local(2015, 01, 02))
|
|
|
|
chart = Ahoy::Chart.new("proposal_created")
|
|
|
|
expect(chart.data_points).to eq x: ["2015-01-01"], "Citizen proposals created" => [1]
|
|
end
|
|
|
|
it "returns visits data for the visits event" do
|
|
time_1 = Time.zone.local(2015, 01, 01)
|
|
time_2 = Time.zone.local(2015, 01, 02)
|
|
|
|
create(:visit, started_at: time_1)
|
|
create(:visit, started_at: time_1)
|
|
create(:visit, started_at: time_2)
|
|
|
|
chart = Ahoy::Chart.new(:visits)
|
|
|
|
expect(chart.data_points).to eq x: ["2015-01-01", "2015-01-02"], "Visits" => [2, 1]
|
|
end
|
|
|
|
it "returns user supports for the budget_investment_supported event" do
|
|
time_1 = Time.zone.local(2017, 04, 01)
|
|
time_2 = Time.zone.local(2017, 04, 02)
|
|
|
|
create(:vote, votable: create(:budget_investment), created_at: time_1)
|
|
create(:vote, votable: create(:budget_investment), created_at: time_2)
|
|
create(:vote, votable: create(:budget_investment), created_at: time_2)
|
|
create(:vote, votable: create(:proposal), created_at: time_2)
|
|
|
|
chart = Ahoy::Chart.new(:budget_investment_supported)
|
|
|
|
expect(chart.data_points).to eq x: ["2017-04-01", "2017-04-02"],
|
|
"Budget investments supported" => [1, 2]
|
|
end
|
|
|
|
it "returns level three verified dates for the level_3_user event" do
|
|
time_1 = Time.zone.local(2001, 01, 01)
|
|
time_2 = Time.zone.local(2001, 01, 02)
|
|
|
|
create(:user, :level_two, level_two_verified_at: time_1)
|
|
create(:user, :level_three, verified_at: time_2)
|
|
create(:user, :level_three, verified_at: time_2, level_two_verified_at: time_1)
|
|
|
|
chart = Ahoy::Chart.new(:level_3_user)
|
|
|
|
expect(chart.data_points).to eq x: ["2001-01-02"], "Level 3 users verified" => [2]
|
|
end
|
|
end
|
|
end
|