require "rails_helper" describe "Admin milestone statuses", :admin do context "Index" do scenario "Displaying only not hidden statuses" do status1 = create(:milestone_status) status2 = create(:milestone_status) status1.destroy! visit admin_milestone_statuses_path expect(page).not_to have_content status1.name expect(page).not_to have_content status1.description expect(page).to have_content status2.name expect(page).to have_content status2.description end scenario "Displaying no statuses text" do visit admin_milestone_statuses_path expect(page).to have_content("There are no milestone statuses created") end end context "New" do scenario "Create status" do visit admin_milestone_statuses_path click_link "Create new milestone status" fill_in "milestone_status_name", with: "New status name" fill_in "milestone_status_description", with: "This status description" click_button "Create Milestone Status" expect(page).to have_content "New status name" expect(page).to have_content "This status description" end scenario "Show validation errors in status form" do visit admin_milestone_statuses_path click_link "Create new milestone status" fill_in "milestone_status_description", with: "This status description" click_button "Create Milestone Status" within "#new_milestone_status" do expect(page).to have_content "can't be blank", count: 1 end end end context "Edit" do scenario "Change name and description" do status = create(:milestone_status) visit admin_milestone_statuses_path within("#milestone_status_#{status.id}") do click_link "Edit" end fill_in "milestone_status_name", with: "Other status name" fill_in "milestone_status_description", with: "Other status description" click_button "Update Milestone Status" expect(page).to have_content "Other status name" expect(page).to have_content "Other status description" end end context "Delete" do scenario "Hides status" do status = create(:milestone_status) visit admin_milestone_statuses_path within("#milestone_status_#{status.id}") do accept_confirm("Are you sure? This action will delete \"#{status.name}\" and can't be undone.") do click_button "Delete" end end expect(page).not_to have_content status.name expect(page).not_to have_content status.description end end end