Files
nairobi/spec/features/admin/valuators_spec.rb
2018-04-03 20:55:44 +02:00

153 lines
4.6 KiB
Ruby

require 'rails_helper'
feature 'Admin valuators' do
background do
@admin = create(:administrator)
@user = create(:user, username: 'Jose Luis Balbin')
@valuator = create(:valuator)
login_as(@admin.user)
visit admin_valuators_path
end
scenario "Show", :focus do
visit admin_valuator_path(@valuator)
expect(page).to have_content @valuator.name
expect(page).to have_content @valuator.description
expect(page).to have_content @valuator.email
end
scenario 'Index' do
expect(page).to have_content(@valuator.name)
expect(page).to have_content(@valuator.email)
expect(page).not_to have_content(@user.name)
end
scenario 'Create', :js do
fill_in 'name_or_email', with: @user.email
click_button 'Search'
expect(page).to have_content(@user.name)
fill_in 'valuator_description', with: 'environmental expert'
click_button 'Add to valuators'
within('#valuators') do
expect(page).to have_content(@user.name)
expect(page).to have_content('environmental expert')
end
end
scenario "Edit", :focus do
visit edit_admin_valuator_path(@valuator)
fill_in 'name_or_email', with: "john@valuators.org"
fill_in 'valuator_description', with: 'Valuator for health'
click_link "Update valuator"
expect(page).to have_content "Valuator updated successfully"
expect(page).to have_content "john@valuators.org"
expect(page).to have_content "Valuator for health"
end
scenario 'Destroy' do
click_link 'Delete'
within('#valuators') do
expect(page).not_to have_content(@valuator.name)
end
end
context 'Search' do
background do
user = create(:user, username: 'David Foster Wallace', email: 'david@wallace.com')
user2 = create(:user, username: 'Steven Erikson', email: 'steven@erikson.com')
@valuator1 = create(:valuator, user: user)
@valuator2 = create(:valuator, user: user2)
visit admin_valuators_path
end
scenario 'returns no results if search term is empty' do
expect(page).to have_content(@valuator1.name)
expect(page).to have_content(@valuator2.name)
fill_in 'name_or_email', with: ' '
click_button 'Search'
expect(page).to have_content('Valuators: User search')
expect(page).to have_content('No results found')
expect(page).not_to have_content(@valuator1.name)
expect(page).not_to have_content(@valuator2.name)
end
scenario 'search by name' do
expect(page).to have_content(@valuator1.name)
expect(page).to have_content(@valuator2.name)
fill_in 'name_or_email', with: 'Foster'
click_button 'Search'
expect(page).to have_content('Valuators: User search')
expect(page).to have_content(@valuator1.name)
expect(page).not_to have_content(@valuator2.name)
end
scenario 'search by email' do
expect(page).to have_content(@valuator1.email)
expect(page).to have_content(@valuator2.email)
fill_in 'name_or_email', with: @valuator2.email
click_button 'Search'
expect(page).to have_content('Valuators: User search')
expect(page).to have_content(@valuator2.email)
expect(page).not_to have_content(@valuator1.email)
end
end
context "Valuator Group", :focus 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 Evaluador"
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")
member = create(:valuator_group_member, valuator: valuator, valuator_group: group1)
visit edit_admin_valuator_path(valuator)
select "Economy", from: "valuator_valuator_group_id"
click_button "Update Evaluador"
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")
member = create(:valuator_group_member, valuator: valuator, valuator_group: group1)
visit edit_admin_valuator_path(valuator)
select "", from: "valuator_valuator_group_id"
click_button "Update Evaluador"
expect(page).to have_content "Valuator updated successfully"
expect(page).to_not have_content "Health"
end
end
end