diff options
Diffstat (limited to 'spec/services/users/set_status_service_spec.rb')
-rw-r--r-- | spec/services/users/set_status_service_spec.rb | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/spec/services/users/set_status_service_spec.rb b/spec/services/users/set_status_service_spec.rb index 69cd647eaeb..2c776a0eeb4 100644 --- a/spec/services/users/set_status_service_spec.rb +++ b/spec/services/users/set_status_service_spec.rb @@ -31,19 +31,28 @@ RSpec.describe Users::SetStatusService do expect(service.execute).to be(true) end + context 'when setting availability to not_set' do + before do + params[:availability] = 'not_set' + + create(:user_status, user: current_user, availability: 'busy') + end + + it 'updates the availability' do + expect { service.execute }.to change { current_user.status.availability }.from('busy').to('not_set') + end + end + context 'when the given availability value is not valid' do - let(:params) { { availability: 'not a valid value' } } + before do + params[:availability] = 'not a valid value' + end it 'does not update the status' do user_status = create(:user_status, user: current_user) expect { service.execute }.not_to change { user_status.reload } end - - it 'returns false' do - create(:user_status, user: current_user) - expect(service.execute).to be(false) - end end context 'for another user' do @@ -69,11 +78,21 @@ RSpec.describe Users::SetStatusService do context 'without params' do let(:params) { {} } - it 'deletes the status' do - status = create(:user_status, user: current_user) + shared_examples 'removes user status record' do + it 'deletes the status' do + status = create(:user_status, user: current_user) + + expect { service.execute } + .to change { current_user.reload.status }.from(status).to(nil) + end + end + + it_behaves_like 'removes user status record' + + context 'when not_set is given for availability' do + let(:params) { { availability: 'not_set' } } - expect { service.execute } - .to change { current_user.reload.status }.from(status).to(nil) + it_behaves_like 'removes user status record' end end end |