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.
61 lines
1.8 KiB
Ruby
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
|