require 'rails_helper' feature "Valuator groups" do let(:admin) { create(:administrator).user } background do login_as(admin) end 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)) 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 group = 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 group = create(:valuator_group) visit admin_valuator_groups_path click_link "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 scenario "Add a valuator to a group" do valuator = create(:valuator) group = 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 = create(:valuator) group1 = create(:valuator_group, name: "Health") group2 = create(:valuator_group, name: "Economy") valuator.update(valuator_group: group1) 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 = create(:valuator) group1 = create(:valuator_group, name: "Health") valuator.update(valuator_group: group1) 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).to_not have_content "Health" end end end