Files
grecia/spec/controllers/admin/api/stats_controller_spec.rb
Javi Martín 9f64129be5 Remove isolated useless assignments
These variables can be considered a block, and so removing them doesn't
make the test much harder to undestand.

Sometimes these variables formed the setup, sometimes they formed an
isolated part of the setup, and sometimes they were the part of the test
that made the test different from other tests.
2019-09-30 15:47:13 +02:00

82 lines
2.4 KiB
Ruby

require "rails_helper"
describe Admin::Api::StatsController do
describe "GET index" do
let(:user) { create(:administrator).user }
context "events or visits not present" do
it "responds with bad_request" do
sign_in user
get :show
expect(response).not_to be_ok
expect(response.status).to eq 400
end
end
context "events present" do
before 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 :ahoy_event, name: "foo", time: time_1
create :ahoy_event, name: "foo", time: time_1
create :ahoy_event, name: "foo", time: time_2
create :ahoy_event, name: "bar", time: time_1
create :ahoy_event, name: "bar", time: time_3
create :ahoy_event, name: "bar", time: time_3
end
it "returns single events formated for working with c3.js" do
sign_in user
get :show, params: { event: "foo" }
expect(response).to be_ok
data = JSON.parse(response.body)
expect(data).to eq "x" => ["2015-01-01", "2015-01-02"], "Foo" => [2, 1]
end
end
context "visits present" do
it "returns visits formated for working with c3.js" 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
sign_in user
get :show, params: { visits: true }
expect(response).to be_ok
data = JSON.parse(response.body)
expect(data).to eq "x" => ["2015-01-01", "2015-01-02"], "Visits" => [2, 1]
end
end
context "budget investments present" do
it "returns budget investments formated for working with c3.js" do
time_1 = Time.zone.local(2017, 04, 01)
time_2 = Time.zone.local(2017, 04, 02)
create(:budget_investment, created_at: time_1)
create(:budget_investment, created_at: time_2)
create(:budget_investment, created_at: time_2)
sign_in user
get :show, params: { budget_investments: true }
expect(response).to be_ok
data = JSON.parse(response.body)
expect(data).to eq "x" => ["2017-04-01", "2017-04-02"], "Budget Investments" => [1, 2]
end
end
end
end