* Add CRUD actions for badge management to Internal::Badges::Controller * Update sytling of badges index view in index.html.erb -Uses a table to display all badges -Links to the badge edit page from the badge title -Displays a badges slug, title, and badge_image -Adds an Award Badge button to the index view * Adds an edit view, edit.html.erb, for badges -Gives the ability to edit a badge title and/or slug -Adds an Update Badge button to the left of the view -Adds a Back to All Badges button to the right of the view -Displays the badge image in the edit form * Adjusts the path names in #award_badges in Internal::Badges::Controller * Adds CRUD actions to the Internal::Badges::Controller and needed routes * Add a description field to the edit.html.erb for badge management * Add #award to Internal::Badges::Controller with matching view and routes -Adds an #award method that sets @badge for #award_badges -Adds an award.html.erb view for awarding badges -Adds an award path for awarding badges -Removes unnecessary code from controller, routes, and views * Adds image upload functionality to the edit view for badges * Ensure that usernames are downcased when awarding badges -Chains downcase to usernames in #award_badges in Internal::Badges::Controller * Move badge-related views from old Internal folder to the correct Admin folder Change routes and paths from /internal to /admin * Refactor badge_params in Admin::Badges::Controller * Add additional tests around awarding and updating badges in /admin/badge_achievements * Add a create view to /admin/badges -Adds new and create actions to Admin::Badges::Controller -Adds a create view for creating badges at new.html.erb -Adds a Create Badge button to the index view -Moves the Award Badges button to the bottom of the index view * Add a test around creating badges and clean up existing specs in badges_spec.rb Adjust path in admin_awards_badges_spec.rb to be correct path * Adjust routes from /badges/award_badges to /badges/badge_achievements/award_badges Update paths in admin/badge-related specs * Adjust paths in badges_spec.rb to be admin_badge_achievements_award_badges_path * Adjust button styling for Award Badge * Adjust paths back to /admin/badges in badges_spec.rb * Add clarification around usernames when awarding badges * Mark test in black_box_spec.rb as pending due to Travis failure * Change wording used around usernames and @ symbols in award.html.erb
56 lines
1.6 KiB
Ruby
56 lines
1.6 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe "Admin awards badges", type: :system do
|
|
let(:admin) { create(:user, :super_admin) }
|
|
let(:user) { create(:user) }
|
|
let(:user2) { create(:user) }
|
|
let(:badges) { Badge.pluck(:title) }
|
|
|
|
def award_two_badges
|
|
find(:xpath, "//option[contains(text(), \"#{badges.last}\")]").select_option
|
|
fill_in "usernames", with: "#{user.username}, #{user2.username}"
|
|
fill_in "message_markdown", with: "He who controls the spice controls the universe."
|
|
click_on "Award Badges"
|
|
end
|
|
|
|
def award_no_badges
|
|
fill_in "usernames", with: "#{user.username}, #{user2.username}"
|
|
fill_in "message_markdown", with: "He who controls the spice controls the universe."
|
|
click_on "Award Badges"
|
|
end
|
|
|
|
before do
|
|
create_list :badge, 5
|
|
sign_in admin
|
|
visit "/admin/badge_achievements/award_badges"
|
|
end
|
|
|
|
it "loads the view" do
|
|
expect(page).to have_content("Badges")
|
|
end
|
|
|
|
it "lists the badges" do
|
|
badges.each do |badge|
|
|
expect(page).to have_content(badge)
|
|
end
|
|
end
|
|
|
|
it "awards badges" do
|
|
expect do
|
|
sidekiq_perform_enqueued_jobs { award_two_badges }
|
|
end.to change { user.badges.count }.by(1).and change { user2.badges.count }.by(1)
|
|
expect(page).to have_content("Badges are being rewarded. The task will finish shortly")
|
|
|
|
visit "/#{user.username}/"
|
|
|
|
expect(page).to have_link(href: "/badge/#{Badge.last.slug}")
|
|
end
|
|
|
|
it "does not award badges if no badge is selected", js: true do
|
|
expect do
|
|
sidekiq_perform_enqueued_jobs { award_no_badges }
|
|
end.to change { user.badges.count }.by(0)
|
|
|
|
expect(page).to have_content("Please choose a badge to award")
|
|
end
|
|
end
|