require "rails_helper" describe "Admin officials", :admin do let!(:citizen) { create(:user, username: "Citizen Kane") } let!(:official) { create(:user, official_position: "Mayor", official_level: 5) } scenario "Index" do visit admin_officials_path expect(page).to have_content official.name expect(page).not_to have_content citizen.name expect(page).to have_content official.official_position expect(page).to have_content official.official_level end scenario "Edit an official" do visit admin_officials_path click_link "Edit" expect(page).to have_current_path(edit_admin_official_path(official)) expect(page).not_to have_content citizen.name expect(page).to have_content official.name expect(page).to have_content official.email fill_in "user_official_position", with: "School Teacher" select "3", from: "user_official_level", exact: false click_button "Update User" expect(page).to have_content "Details of official saved" visit admin_officials_path expect(page).to have_content official.name expect(page).to have_content "School Teacher" expect(page).to have_content "3" end scenario "Create an official" do visit admin_officials_path fill_in "search", with: citizen.email click_button "Search" expect(page).to have_current_path(search_admin_officials_path, ignore_query: true) expect(page).not_to have_content official.name click_link citizen.name fill_in "user_official_position", with: "Hospital manager" select "4", from: "user_official_level", exact: false click_button "Update User" expect(page).to have_content "Details of official saved" visit admin_officials_path expect(page).to have_content official.name expect(page).to have_content citizen.name expect(page).to have_content "Hospital manager" expect(page).to have_content "4" end scenario "Destroy" do visit edit_admin_official_path(official) click_button 'Remove "Official" status' expect(page).to have_content "Details saved: the user is no longer an official" expect(page).to have_current_path(admin_officials_path, ignore_query: true) expect(page).not_to have_content citizen.name expect(page).not_to have_content official.name end end