This way we make sure editors which support navigating between one class and its test file can find the alternative files.
52 lines
1.8 KiB
Ruby
52 lines
1.8 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Dashboard::AchievementsController do
|
|
let(:proposal) { create(:proposal, created_at: 7.days.ago.beginning_of_month) }
|
|
let(:executed_actions) { create_list(:dashboard_action, 8, :active, :proposed_action) }
|
|
let!(:non_executed_actions) { create_list(:dashboard_action, 8, :active, :proposed_action) }
|
|
|
|
before do
|
|
sign_in(proposal.author)
|
|
|
|
executed_actions.each_with_index do |action, index|
|
|
create(:dashboard_executed_action, proposal: proposal, action: action,
|
|
executed_at: proposal.created_at + index.days)
|
|
end
|
|
end
|
|
|
|
it "returns a list of most recent executed achievements grouped by day" do
|
|
get proposal_dashboard_achievements_path(proposal, format: :json)
|
|
|
|
json = JSON.parse(response.body, symbolize_names: true)
|
|
|
|
expect(response).to have_http_status(200)
|
|
expect(json.length).to eq(8)
|
|
|
|
executed_actions.each do |action|
|
|
expect(json.values.select { |a| a[:title] == action.title }).not_to be_empty
|
|
end
|
|
|
|
non_executed_actions.each do |action|
|
|
expect(json.values.select { |a| a[:title] == action.title }).to be_empty
|
|
end
|
|
end
|
|
|
|
it "returns a list of most recent executed achievements grouped by week" do
|
|
get proposal_dashboard_achievements_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 eq(2)
|
|
end
|
|
|
|
it "returns a list of most recent executed achievements grouped by month" do
|
|
get proposal_dashboard_achievements_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 eq(1)
|
|
end
|
|
end
|