Skip to content

Commit 8dd4180

Browse files
committed
Add users_controller_spec + confirmation tests
1 parent d163ecc commit 8dd4180

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# frozen_string_literal: true
2+
3+
require 'rails_helper'
4+
5+
RSpec.describe SuperAdmin::UsersController, type: :controller do
6+
let(:super_admin) { create(:user, :super_admin) }
7+
let(:user) { create(:user, confirmed_at: nil) }
8+
9+
before do
10+
sign_in super_admin
11+
end
12+
13+
describe 'PUT #update' do
14+
context 'when confirming an unconfirmed user' do
15+
it 'sets confirmed_at to the current time' do
16+
put :update, params: { id: user.id, user: { confirmed_at: '1' } }
17+
user.reload
18+
expect(user.confirmed_at).to be_a(Time)
19+
end
20+
end
21+
22+
context 'when unconfirming a confirmed user' do
23+
before do
24+
user.update(confirmed_at: Time.current)
25+
end
26+
27+
it 'sets confirmed_at to nil' do
28+
put :update, params: { id: user.id, user: { confirmed_at: '0' } }
29+
user.reload
30+
expect(user.confirmed_at).to be_nil
31+
end
32+
end
33+
34+
context 'when update will not affect confirmation status' do
35+
it 'does not update confirmed_at value for an already confirmed user' do
36+
# (usec: 0) removes mircoseconds to better enable comparison
37+
user.update(confirmed_at: Time.current.change(usec: 0))
38+
original_confirmed_at = user.confirmed_at
39+
patch :update, params: { id: user.id, user: { firstname: 'NewName', confirmed_at: '1' } }
40+
user.reload
41+
expect(user.confirmed_at).to eq(original_confirmed_at)
42+
end
43+
end
44+
end
45+
end

0 commit comments

Comments
 (0)