mirror of https://github.com/docusealco/docuseal
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							97 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							97 lines
						
					
					
						
							2.3 KiB
						
					
					
				| # frozen_string_literal: true
 | |
| 
 | |
| require 'rails_helper'
 | |
| 
 | |
| RSpec.describe 'Team Settings' do
 | |
|   let(:account) { create(:account) }
 | |
|   let(:current_user) { create(:user, account:) }
 | |
| 
 | |
|   before do
 | |
|     sign_in(current_user)
 | |
|   end
 | |
| 
 | |
|   context 'when multiple users' do
 | |
|     let!(:users) { create_list(:user, 2, account:) }
 | |
| 
 | |
|     before do
 | |
|       visit settings_users_path
 | |
|     end
 | |
| 
 | |
|     it 'shows all users' do
 | |
|       within '.table' do
 | |
|         users.each do |user|
 | |
|           expect(page).to have_content(user.full_name)
 | |
|           expect(page).to have_content(user.email)
 | |
|         end
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     it 'creates a new user' do
 | |
|       click_link 'New User'
 | |
| 
 | |
|       within '#modal' do
 | |
|         fill_in 'First name', with: 'Joseph'
 | |
|         fill_in 'Last name', with: 'Smith'
 | |
|         fill_in 'Email', with: 'joseph.smith@example.com'
 | |
|         fill_in 'Password', with: 'password'
 | |
| 
 | |
|         expect do
 | |
|           click_button 'Submit'
 | |
|         end.to change(User, :count).by(1)
 | |
| 
 | |
|         user = User.last
 | |
| 
 | |
|         expect(user.first_name).to eq('Joseph')
 | |
|         expect(user.last_name).to eq('Smith')
 | |
|         expect(user.email).to eq('joseph.smith@example.com')
 | |
|         expect(user.account).to eq(account)
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     it 'updates a user' do
 | |
|       first(:link, 'Edit').click
 | |
| 
 | |
|       fill_in 'First name', with: 'Adam'
 | |
|       fill_in 'Last name', with: 'Meier'
 | |
|       fill_in 'Email', with: 'adam.meier@example.com'
 | |
|       fill_in 'Password', with: 'new_password'
 | |
| 
 | |
|       expect do
 | |
|         click_button 'Submit'
 | |
|       end.not_to change(User, :count)
 | |
| 
 | |
|       user = User.find_by(email: 'adam.meier@example.com')
 | |
| 
 | |
|       expect(user.first_name).to eq('Adam')
 | |
|       expect(user.last_name).to eq('Meier')
 | |
|       expect(user.email).to eq('adam.meier@example.com')
 | |
|     end
 | |
| 
 | |
|     it 'removes a user' do
 | |
|       expect do
 | |
|         accept_confirm('Are you sure?') do
 | |
|           first(:button, 'Delete').click
 | |
|         end
 | |
|       end.to change { User.active.count }.by(-1)
 | |
| 
 | |
|       expect(page).to have_content('User has been removed')
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   context 'when single user' do
 | |
|     before do
 | |
|       visit settings_users_path
 | |
|     end
 | |
| 
 | |
|     it 'does not allow to remove the current user' do
 | |
|       expect do
 | |
|         accept_confirm('Are you sure?') do
 | |
|           first(:button, 'Delete').click
 | |
|         end
 | |
|       end.not_to(change { User.admins.count })
 | |
| 
 | |
|       expect(page).to have_content('Unable to remove user')
 | |
|     end
 | |
|   end
 | |
| end
 |