117 lines
3.5 KiB
Ruby
117 lines
3.5 KiB
Ruby
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
|