Skip to content

Commit ef20a90

Browse files
bivanalharcysjonathan
authored andcommitted
refactor(spec): modify spec to be in line with rails 6/7
- refactor RESTFul API method inside spec - require all tables to be initialised properly before running spec - request.session code to be updated due to point-to-reference
1 parent 076ee87 commit ef20a90

6 files changed

+59
-23
lines changed

spec/controllers/posts_controller_spec.rb

+21-10
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,26 @@
11
require 'rails_helper'
2+
require 'models'
23

34
RSpec.describe PostsController, type: :controller do
45
controller do
56
end
67

7-
before(:each) { define_first_post }
8+
before(:each) do
9+
@zeus = User.create!(name: 'Zeus')
10+
@hera = User.create!(name: 'Hera')
11+
User.stamper = @zeus
12+
13+
@delynn = Person.create!(name: 'Delynn')
14+
@nicole = Person.create!(name: 'Nicole')
15+
16+
Person.stamper = @delynn
17+
define_first_post
18+
end
819

920
context 'when updating a Post' do
1021
it 'sets the correct updater' do
11-
request.session = { person_id: @delynn.id }
12-
post :update, id: @first_post.id, post: { title: 'Different' }
22+
request.session[:person_id] = @delynn.id
23+
post :update, params: { id: @first_post.id, post: { title: 'Different' } }
1324

1425
expect(response.status).to eq(200)
1526
expect(controller.instance_variable_get(:@post).title).to eq('Different')
@@ -19,23 +30,23 @@
1930

2031
context 'when handling multiple requests' do
2132
def simulate_second_request
22-
old_request_session = request.session
23-
request.session = { person_id: @nicole.id }
33+
old_request_session_user_id = request.session[:person_id]
34+
request.session[:person_id] = @nicole.id
2435

25-
post :update, id: @first_post.id, post: { title: 'Different Second'}
36+
post :update, params: { id: @first_post.id, post: { title: 'Different Second'} }
2637
expect(controller.instance_variable_get(:@post).updater).to eq(@nicole)
2738
ensure
28-
request.session = old_request_session
39+
request.session[:person_id] = old_request_session_user_id
2940
end
3041

3142
it 'sets the correct updater' do
32-
request.session = { person_id: @delynn.id }
33-
get :edit, id: @first_post.id
43+
request.session[:person_id] = @delynn.id
44+
get :edit, params: { id: @first_post.id }
3445
expect(response.status).to eq(200)
3546

3647
simulate_second_request
3748

38-
post :update, id: @first_post.id, post: { title: 'Different' }
49+
post :update, params: { id: @first_post.id, post: { title: 'Different' } }
3950
expect(response.status).to eq(200)
4051
expect(controller.instance_variable_get(:@post).title).to eq('Different')
4152
expect(controller.instance_variable_get(:@post).updater).to eq(@delynn)

spec/controllers/users_controller_spec.rb

+20-7
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,26 @@
11
require 'rails_helper'
2+
require 'models'
23

34
RSpec.describe UsersController, type: :controller do
45
controller do
56
end
67

8+
before(:each) do
9+
@zeus = User.create!(name: 'Zeus')
10+
@hera = User.create!(name: 'Hera')
11+
User.stamper = @zeus
12+
13+
@delynn = Person.create!(name: 'Delynn')
14+
@nicole = Person.create!(name: 'Nicole')
15+
16+
Person.stamper = @delynn
17+
define_first_post
18+
end
19+
720
context 'when updating a User' do
821
it 'sets the correct updater' do
9-
request.session = { user_id: @hera.id }
10-
patch :update, id: @hera.id, user: { name: 'Different'}
22+
request.session[:user_id] = @hera.id
23+
patch :update, params: { id: @hera.id, user: { name: 'Different'} }
1124

1225
expect(response.status).to eq(200)
1326
expect(controller.instance_variable_get(:@user).name).to eq('Different')
@@ -18,17 +31,17 @@
1831
context 'when handling multiple requests' do
1932
def simulate_second_request
2033
old_request_session = request.session
21-
request.session = { user_id: @zeus.id }
34+
request.session[:user_id] = @zeus.id
2235

23-
post :update, id: @hera.id, user: { name: 'Different Second' }
36+
post :update, params: { id: @hera.id, user: { name: 'Different Second' } }
2437
expect(controller.instance_variable_get(:@user).updater).to eq(@zeus)
2538
ensure
2639
request.session = old_request_session
2740
end
2841

2942
it 'sets the correct updater' do
30-
request.session = { user_id: @hera.id }
31-
get :edit, id: @hera.id
43+
request.session[:user_id] = @hera.id
44+
get :edit, params: { id: @hera.id }
3245
expect(response.status).to eq(200)
3346

3447
simulate_second_request
@@ -39,7 +52,7 @@ def simulate_second_request
3952
before { @stamper = User.stamper }
4053
it 'restores the correct stamper' do
4154
begin
42-
request.session = { user_id: @zeus.id }
55+
request.session[:user_id] = @zeus.id
4356
post :create
4457
rescue
4558
end

spec/lib/configuration_spec.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'rails_helper'
2+
require 'models'
23

34
RSpec.describe 'Configuration' do
45
describe '.configure' do

spec/lib/migration_spec.rb

+8-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'rails_helper'
2+
require 'models'
23

34
RSpec.describe 'Migration helpers', type: :model do
45
context 'when default attribute names are used' do
@@ -31,10 +32,12 @@ class self::DefaultRandom < ActiveRecord::Base
3132
end
3233

3334
context 'when overridden attribute names are used' do
34-
ActiveRecord::Userstamp.configure do |config|
35-
config.creator_attribute = :created_by
36-
config.updater_attribute = :updated_by
37-
config.deleter_attribute = :deleted_by
35+
before(:all) do
36+
ActiveRecord::Userstamp.configure do |config|
37+
config.creator_attribute = :created_by
38+
config.updater_attribute = :updated_by
39+
config.deleter_attribute = :deleted_by
40+
end
3841
end
3942

4043
class self::OverriddenRandom < ActiveRecord::Base
@@ -47,7 +50,7 @@ class self::OverriddenRandom < ActiveRecord::Base
4750
t.userstamps
4851
end
4952

50-
after do
53+
after(:all) do
5154
ActiveRecord::Userstamp.configure do |config|
5255
config.creator_attribute = :creator_id
5356
config.updater_attribute = :updater_id

spec/lib/stamper_spec.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'rails_helper'
2+
require 'models'
23

34
RSpec.describe 'Stamper' do
45
describe '.model_stamper' do

spec/lib/stamping_spec.rb

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
require 'rails_helper'
2+
require 'models'
23

34
RSpec.describe 'Stamping', type: :model do
45
before(:each) do
5-
define_first_post
6+
@zeus = User.create!(name: 'Zeus')
7+
@hera = User.create!(name: 'Hera')
68
User.stamper = @zeus
9+
10+
@delynn = Person.create!(name: 'Delynn')
11+
@nicole = Person.create!(name: 'Nicole')
12+
713
Person.stamper = @delynn
14+
define_first_post
815
end
916

1017
context 'when creating a Person' do

0 commit comments

Comments
 (0)