Files
grecia/spec/requests/dashboard/successful_supports_spec.rb
Javi Martín a21240b230 Use Date.current and Time.current
Using Date.today and Time.now might lead to inconsistencies if the time
zone the application uses is not the same as the system time zone.
2019-08-28 20:32:40 +02:00

61 lines
1.8 KiB
Ruby

require "rails_helper"
describe "Retrieves number of supports for the successful proposal" do
let(:created_at) { Date.current.beginning_of_day - 9.days }
let(:proposal) { create(:proposal, created_at: created_at, published_at: created_at) }
before do
@successful_proposal_id = Setting["proposals.successful_proposal_id"]
Setting["proposals.successful_proposal_id"] = proposal.id
8.times do |i|
user = create(:user, :verified)
Vote.create!(
votable: proposal,
voter: user,
vote_weight: 1,
created_at: proposal.created_at + i.days,
updated_at: proposal.created_at + i.days
)
end
sign_in(proposal.author)
end
after do
Setting["proposals.successful_proposal_id"] = @successful_proposal_id
end
it "returns the number of supports grouped by day" do
get proposal_dashboard_successful_supports_path(proposal, format: :json)
json = JSON.parse(response.body, symbolize_names: true)
expect(response).to have_http_status(200)
expect(json.length).to eq(10)
expect(json.values.last).to eq(8)
end
it "returns the number of supports grouped by week" do
get proposal_dashboard_successful_supports_path(proposal, group_by: "week", format: :json)
json = JSON.parse(response.body, symbolize_names: true)
expect(response).to have_http_status(200)
expect(json.length).to be >= 2
expect(json.length).to be <= 3
expect(json.values.last).to eq(8)
end
it "returns the number of supports grouped by month" do
get proposal_dashboard_successful_supports_path(proposal, group_by: "month", format: :json)
json = JSON.parse(response.body, symbolize_names: true)
expect(response).to have_http_status(200)
expect(json.length).to be >= 1
expect(json.length).to be <= 2
expect(json.values.last).to eq(8)
end
end