spec/system/admin/valuator_groups_spec.rb
require "rails_helper"
describe "Valuator groups", :admin do
scenario "Index" do
group1 = create(:valuator_group)
group2 = create(:valuator_group)
3.times { create(:valuator, valuator_group: group1) }
visit admin_valuator_groups_path
within("#valuator_group_#{group1.id}") do
expect(page).to have_content group1.name
expect(page).to have_content 3
end
within("#valuator_group_#{group2.id}") do
expect(page).to have_content group2.name
expect(page).to have_content 0
end
end
scenario "Show" do
group = create(:valuator_group)
valuator1 = create(:valuator, valuator_group: group)
valuator2 = create(:valuator, valuator_group: group)
valuator3 = create(:valuator, valuator_group: nil)
visit admin_valuator_group_path(group)
expect(page).to have_content group.name
within("#valuators") do
expect(page).to have_link(valuator1.email, href: admin_valuator_path(valuator1))
expect(page).to have_link(valuator2.email, href: admin_valuator_path(valuator2))
expect(page).not_to have_link(valuator3.email)
end
end
scenario "Create" do
visit admin_valuators_path
click_link "Valuator Groups"
click_link "Create valuators group"
fill_in "valuator_group_name", with: "Health"
click_button "Create valuators group"
expect(page).to have_content "Valuator group created successfully"
expect(page).to have_content "There is 1 valuator group"
expect(page).to have_content "Health"
end
scenario "Update" do
create(:valuator_group, name: "Health")
visit admin_valuator_groups_path
click_link "Edit"
fill_in "valuator_group_name", with: "Health and Sports"
click_button "Save valuators group"
expect(page).to have_content "Valuator group updated successfully"
expect(page).to have_content "Health and Sports"
end
scenario "Delete" do
create(:valuator_group, name: "Economy")
visit admin_valuator_groups_path
confirmation = "Are you sure? This action will delete \"Economy\" and can't be undone."
accept_confirm(confirmation) { click_button "Delete" }
expect(page).to have_content "Valuator group deleted successfully"
expect(page).to have_content "There are no valuator groups"
end
context "Assign valuators to groups" do
let(:valuator) { create(:valuator) }
scenario "Add a valuator to a group" do
create(:valuator_group, name: "Health")
visit edit_admin_valuator_path(valuator)
select "Health", from: "valuator_valuator_group_id"
click_button "Update Valuator"
expect(page).to have_content "Valuator updated successfully"
expect(page).to have_content "Health"
end
scenario "Update a valuator's group" do
valuator.update!(valuator_group: create(:valuator_group, name: "Economy"))
create(:valuator_group, name: "Health")
visit edit_admin_valuator_path(valuator)
select "Economy", from: "valuator_valuator_group_id"
click_button "Update Valuator"
expect(page).to have_content "Valuator updated successfully"
expect(page).to have_content "Economy"
end
scenario "Remove a valuator from a group" do
valuator.update!(valuator_group: create(:valuator_group, name: "Health"))
visit edit_admin_valuator_path(valuator)
select "", from: "valuator_valuator_group_id"
click_button "Update Valuator"
expect(page).to have_content "Valuator updated successfully"
expect(page).not_to have_content "Health"
end
end
end