Add missing tests for user.rb (#7306)
This commit is contained in:
		
							parent
							
								
									dc786c0cf4
								
							
						
					
					
						commit
						6c40e567aa
					
				
					 2 changed files with 214 additions and 0 deletions
				
			
		
							
								
								
									
										
											BIN
										
									
								
								dump.rdb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dump.rdb
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -324,4 +324,218 @@ RSpec.describe User, type: :model do | |||
|       expect(admin.role?('moderator')).to be true | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe '#disable!' do | ||||
|     subject(:user) { Fabricate(:user, disabled: false, current_sign_in_at: current_sign_in_at, last_sign_in_at: nil) } | ||||
|     let(:current_sign_in_at) { Time.zone.now } | ||||
| 
 | ||||
|     before do | ||||
|       user.disable! | ||||
|     end | ||||
| 
 | ||||
|     it 'disables user' do | ||||
|       expect(user).to have_attributes(disabled: true, current_sign_in_at: nil, last_sign_in_at: current_sign_in_at) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe '#disable!' do | ||||
|     subject(:user) { Fabricate(:user, disabled: false, current_sign_in_at: current_sign_in_at, last_sign_in_at: nil) } | ||||
|     let(:current_sign_in_at) { Time.zone.now } | ||||
| 
 | ||||
|     before do | ||||
|       user.disable! | ||||
|     end | ||||
| 
 | ||||
|     it 'disables user' do | ||||
|       expect(user).to have_attributes(disabled: true, current_sign_in_at: nil, last_sign_in_at: current_sign_in_at) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe '#enable!' do | ||||
|     subject(:user) { Fabricate(:user, disabled: true) } | ||||
| 
 | ||||
|     before do | ||||
|       user.enable! | ||||
|     end | ||||
| 
 | ||||
|     it 'enables user' do | ||||
|       expect(user).to have_attributes(disabled: false) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe '#confirm!' do | ||||
|     subject(:user) { Fabricate(:user, confirmed_at: confirmed_at) } | ||||
| 
 | ||||
|     before do | ||||
|       ActionMailer::Base.deliveries.clear | ||||
|       user.confirm! | ||||
|     end | ||||
| 
 | ||||
|     after { ActionMailer::Base.deliveries.clear } | ||||
| 
 | ||||
|     context 'when user is new' do | ||||
|       let(:confirmed_at) { nil } | ||||
| 
 | ||||
|       it 'confirms user' do | ||||
|         expect(user.confirmed_at).to be_present | ||||
|       end | ||||
| 
 | ||||
|       it 'delivers mails' do | ||||
|         expect(ActionMailer::Base.deliveries.count).to eq 2 | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is not new' do | ||||
|       let(:confirmed_at) { Time.zone.now } | ||||
| 
 | ||||
|       it 'confirms user' do | ||||
|         expect(user.confirmed_at).to be_present | ||||
|       end | ||||
| 
 | ||||
|       it 'does not deliver mail' do | ||||
|         expect(ActionMailer::Base.deliveries.count).to eq 0 | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe '#promote!' do | ||||
|     subject(:user) { Fabricate(:user, admin: is_admin, moderator: is_moderator) } | ||||
| 
 | ||||
|     before do | ||||
|       user.promote! | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is an admin' do | ||||
|       let(:is_admin) { true } | ||||
| 
 | ||||
|       context 'when user is a moderator' do | ||||
|         let(:is_moderator) { true } | ||||
| 
 | ||||
|         it 'changes moderator filed false' do | ||||
|           expect(user).to be_admin | ||||
|           expect(user).not_to be_moderator | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'when user is not a moderator' do | ||||
|         let(:is_moderator) { false } | ||||
| 
 | ||||
|         it 'does not change status' do | ||||
|           expect(user).to be_admin | ||||
|           expect(user).not_to be_moderator | ||||
|         end | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is not admin' do | ||||
|       let(:is_admin) { false } | ||||
| 
 | ||||
|       context 'when user is a moderator' do | ||||
|         let(:is_moderator) { true } | ||||
| 
 | ||||
|         it 'changes user into an admin' do | ||||
|           expect(user).to be_admin | ||||
|           expect(user).not_to be_moderator | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'when user is not a moderator' do | ||||
|         let(:is_moderator) { false } | ||||
| 
 | ||||
|         it 'changes user into a moderator' do | ||||
|           expect(user).not_to be_admin | ||||
|           expect(user).to be_moderator | ||||
|         end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe '#demote!' do | ||||
|     subject(:user) { Fabricate(:user, admin: admin, moderator: moderator) } | ||||
| 
 | ||||
|     before do | ||||
|       user.demote! | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is an admin' do | ||||
|       let(:admin) { true } | ||||
| 
 | ||||
|       context 'when user is a moderator' do | ||||
|         let(:moderator) { true } | ||||
| 
 | ||||
|         it 'changes user into a moderator' do | ||||
|           expect(user).not_to be_admin | ||||
|           expect(user).to be_moderator | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'when user is not a moderator' do | ||||
|         let(:moderator) { false } | ||||
| 
 | ||||
|         it 'changes user into a moderator' do | ||||
|           expect(user).not_to be_admin | ||||
|           expect(user).to be_moderator | ||||
|         end | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is not an admin' do | ||||
|       let(:admin) { false } | ||||
| 
 | ||||
|       context 'when user is a moderator' do | ||||
|         let(:moderator) { true } | ||||
| 
 | ||||
|         it 'changes user into a plain user' do | ||||
|           expect(user).not_to be_admin | ||||
|           expect(user).not_to be_moderator | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       context 'when user is not a moderator' do | ||||
|         let(:moderator) { false } | ||||
| 
 | ||||
|         it 'does not change any fields' do | ||||
|           expect(user).not_to be_admin | ||||
|           expect(user).not_to be_moderator | ||||
|         end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe '#active_for_authentication?' do | ||||
|     subject { user.active_for_authentication? } | ||||
|     let(:user) { Fabricate(:user, disabled: disabled, confirmed_at: confirmed_at) } | ||||
| 
 | ||||
|     context 'when user is disabled' do | ||||
|       let(:disabled) { true } | ||||
| 
 | ||||
|       context 'when user is confirmed' do | ||||
|         let(:confirmed_at) { Time.zone.now } | ||||
| 
 | ||||
|         it { is_expected.to be false } | ||||
|       end | ||||
| 
 | ||||
|       context 'when user is not confirmed' do | ||||
|         let(:confirmed_at) { nil } | ||||
| 
 | ||||
|         it { is_expected.to be false } | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is not disabled' do | ||||
|       let(:disabled) { false } | ||||
| 
 | ||||
|       context 'when user is confirmed' do | ||||
|         let(:confirmed_at) { Time.zone.now } | ||||
| 
 | ||||
|         it { is_expected.to be true } | ||||
|       end | ||||
| 
 | ||||
|       context 'when user is not confirmed' do | ||||
|         let(:confirmed_at) { nil } | ||||
| 
 | ||||
|         it { is_expected.to be false } | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue