79 lines
2.3 KiB
Ruby
79 lines
2.3 KiB
Ruby
require 'rails_helper'
|
|
|
|
feature 'Admin officials' do
|
|
|
|
background do
|
|
@citizen = create(:user, username: "Citizen Kane")
|
|
@official = create(:user, official_position: "Mayor", official_level: 5)
|
|
@admin = create(:administrator)
|
|
login_as(@admin.user)
|
|
end
|
|
|
|
scenario 'Index' do
|
|
visit admin_officials_path
|
|
|
|
expect(page).to have_content @official.name
|
|
expect(page).to_not 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 @official.name
|
|
|
|
expect(current_path).to eq(edit_admin_official_path(@official))
|
|
|
|
expect(page).to_not 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 'name_or_email', with: @citizen.email
|
|
click_button 'Search'
|
|
|
|
expect(current_path).to eq(search_admin_officials_path)
|
|
expect(page).to_not 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_link "Remove 'Official' status"
|
|
|
|
expect(page).to have_content 'Details saved: the user is no longer an official'
|
|
expect(current_path).to eq(admin_officials_path)
|
|
expect(page).to_not have_content @citizen.name
|
|
expect(page).to_not have_content @official.name
|
|
end
|
|
end
|