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.
82 lines
2.4 KiB
Ruby
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
|