Set a session var in Rspec Request spec
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I am trying to set a session variable in a request spec.
I have tried the following things to do this:
RSpec.describe 'Application Controller' do
context 'updating an application' do
before :each do
@app = create(:application, step: 'investigation')
end
it 'should update app status' do
Status.create(app_id: @app.id, name: Status.names[:start])
request.session[:app_id] = @app.id
patch "/applications/start",
params: s_params
expect(response).to redirect_to(offers_path)
end
end
end
I have tried substituting request
with @request
both result in the same output.
NoMethodError:
undefined method `session' for nil:NilClass
then I have tried just setting as:
session[:app_id] = @app.id
which will yield:
NoMethodError:
undefined method `session' for nil:NilClass
and also setting it like this:
patch "/applications/start",
params: s_params,
session: {"app_id" => @app.id}
which will yield:
ArgumentError:
unknown keyword: session
My versions:
╰>>> ruby -v
ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-darwin18]
╰>>> rails -v
Rails 5.2.1
╰>>> rspec -v
RSpec 3.8
- rspec-core 3.8.0
- rspec-expectations 3.8.1
- rspec-mocks 3.8.0
- rspec-rails 3.8.0
- rspec-support 3.8.0
Looking at the documentation it suggests we could leverage the sessions but does not give a clear example of how we would do this.
ruby-on-rails session rspec
add a comment |
I am trying to set a session variable in a request spec.
I have tried the following things to do this:
RSpec.describe 'Application Controller' do
context 'updating an application' do
before :each do
@app = create(:application, step: 'investigation')
end
it 'should update app status' do
Status.create(app_id: @app.id, name: Status.names[:start])
request.session[:app_id] = @app.id
patch "/applications/start",
params: s_params
expect(response).to redirect_to(offers_path)
end
end
end
I have tried substituting request
with @request
both result in the same output.
NoMethodError:
undefined method `session' for nil:NilClass
then I have tried just setting as:
session[:app_id] = @app.id
which will yield:
NoMethodError:
undefined method `session' for nil:NilClass
and also setting it like this:
patch "/applications/start",
params: s_params,
session: {"app_id" => @app.id}
which will yield:
ArgumentError:
unknown keyword: session
My versions:
╰>>> ruby -v
ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-darwin18]
╰>>> rails -v
Rails 5.2.1
╰>>> rspec -v
RSpec 3.8
- rspec-core 3.8.0
- rspec-expectations 3.8.1
- rspec-mocks 3.8.0
- rspec-rails 3.8.0
- rspec-support 3.8.0
Looking at the documentation it suggests we could leverage the sessions but does not give a clear example of how we would do this.
ruby-on-rails session rspec
Have you checked stackoverflow.com/questions/22451969/rspec-set-session-object ?
– ldeld
Nov 23 '18 at 14:39
Yeah, I tried every suggestion they had in that post. I am not inheriting fromActionController::TestCase
orActionDispatch::IntegrationTest
in my test. It also looks like you only have access to the request after making a call to the object, but I need the session to be set before it makes the call.
– TheLegend
Nov 23 '18 at 14:43
Right, sorry. Didn't find anything on the docs to use session directly, but maybe this can help: it seems you can usecookies['key']
: github.com/rspec/rspec-rails/blob/master/features/…
– ldeld
Nov 23 '18 at 15:10
add a comment |
I am trying to set a session variable in a request spec.
I have tried the following things to do this:
RSpec.describe 'Application Controller' do
context 'updating an application' do
before :each do
@app = create(:application, step: 'investigation')
end
it 'should update app status' do
Status.create(app_id: @app.id, name: Status.names[:start])
request.session[:app_id] = @app.id
patch "/applications/start",
params: s_params
expect(response).to redirect_to(offers_path)
end
end
end
I have tried substituting request
with @request
both result in the same output.
NoMethodError:
undefined method `session' for nil:NilClass
then I have tried just setting as:
session[:app_id] = @app.id
which will yield:
NoMethodError:
undefined method `session' for nil:NilClass
and also setting it like this:
patch "/applications/start",
params: s_params,
session: {"app_id" => @app.id}
which will yield:
ArgumentError:
unknown keyword: session
My versions:
╰>>> ruby -v
ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-darwin18]
╰>>> rails -v
Rails 5.2.1
╰>>> rspec -v
RSpec 3.8
- rspec-core 3.8.0
- rspec-expectations 3.8.1
- rspec-mocks 3.8.0
- rspec-rails 3.8.0
- rspec-support 3.8.0
Looking at the documentation it suggests we could leverage the sessions but does not give a clear example of how we would do this.
ruby-on-rails session rspec
I am trying to set a session variable in a request spec.
I have tried the following things to do this:
RSpec.describe 'Application Controller' do
context 'updating an application' do
before :each do
@app = create(:application, step: 'investigation')
end
it 'should update app status' do
Status.create(app_id: @app.id, name: Status.names[:start])
request.session[:app_id] = @app.id
patch "/applications/start",
params: s_params
expect(response).to redirect_to(offers_path)
end
end
end
I have tried substituting request
with @request
both result in the same output.
NoMethodError:
undefined method `session' for nil:NilClass
then I have tried just setting as:
session[:app_id] = @app.id
which will yield:
NoMethodError:
undefined method `session' for nil:NilClass
and also setting it like this:
patch "/applications/start",
params: s_params,
session: {"app_id" => @app.id}
which will yield:
ArgumentError:
unknown keyword: session
My versions:
╰>>> ruby -v
ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-darwin18]
╰>>> rails -v
Rails 5.2.1
╰>>> rspec -v
RSpec 3.8
- rspec-core 3.8.0
- rspec-expectations 3.8.1
- rspec-mocks 3.8.0
- rspec-rails 3.8.0
- rspec-support 3.8.0
Looking at the documentation it suggests we could leverage the sessions but does not give a clear example of how we would do this.
ruby-on-rails session rspec
ruby-on-rails session rspec
asked Nov 23 '18 at 13:43
TheLegendTheLegend
4,62494575
4,62494575
Have you checked stackoverflow.com/questions/22451969/rspec-set-session-object ?
– ldeld
Nov 23 '18 at 14:39
Yeah, I tried every suggestion they had in that post. I am not inheriting fromActionController::TestCase
orActionDispatch::IntegrationTest
in my test. It also looks like you only have access to the request after making a call to the object, but I need the session to be set before it makes the call.
– TheLegend
Nov 23 '18 at 14:43
Right, sorry. Didn't find anything on the docs to use session directly, but maybe this can help: it seems you can usecookies['key']
: github.com/rspec/rspec-rails/blob/master/features/…
– ldeld
Nov 23 '18 at 15:10
add a comment |
Have you checked stackoverflow.com/questions/22451969/rspec-set-session-object ?
– ldeld
Nov 23 '18 at 14:39
Yeah, I tried every suggestion they had in that post. I am not inheriting fromActionController::TestCase
orActionDispatch::IntegrationTest
in my test. It also looks like you only have access to the request after making a call to the object, but I need the session to be set before it makes the call.
– TheLegend
Nov 23 '18 at 14:43
Right, sorry. Didn't find anything on the docs to use session directly, but maybe this can help: it seems you can usecookies['key']
: github.com/rspec/rspec-rails/blob/master/features/…
– ldeld
Nov 23 '18 at 15:10
Have you checked stackoverflow.com/questions/22451969/rspec-set-session-object ?
– ldeld
Nov 23 '18 at 14:39
Have you checked stackoverflow.com/questions/22451969/rspec-set-session-object ?
– ldeld
Nov 23 '18 at 14:39
Yeah, I tried every suggestion they had in that post. I am not inheriting from
ActionController::TestCase
or ActionDispatch::IntegrationTest
in my test. It also looks like you only have access to the request after making a call to the object, but I need the session to be set before it makes the call.– TheLegend
Nov 23 '18 at 14:43
Yeah, I tried every suggestion they had in that post. I am not inheriting from
ActionController::TestCase
or ActionDispatch::IntegrationTest
in my test. It also looks like you only have access to the request after making a call to the object, but I need the session to be set before it makes the call.– TheLegend
Nov 23 '18 at 14:43
Right, sorry. Didn't find anything on the docs to use session directly, but maybe this can help: it seems you can use
cookies['key']
: github.com/rspec/rspec-rails/blob/master/features/…– ldeld
Nov 23 '18 at 15:10
Right, sorry. Didn't find anything on the docs to use session directly, but maybe this can help: it seems you can use
cookies['key']
: github.com/rspec/rspec-rails/blob/master/features/…– ldeld
Nov 23 '18 at 15:10
add a comment |
1 Answer
1
active
oldest
votes
You could do the following:
- RSpec.describe 'Application Controller' do
+ RSpec.describe 'Application Controller', type: :request do
And then just:
session[:app_id] = @app.id
This doesn't work. Inside abefore
block it returns an an unknown method error. Just inside acontext
block you get "undefined local variable or method".
– TooMuchPete
Mar 23 at 20:48
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53447837%2fset-a-session-var-in-rspec-request-spec%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You could do the following:
- RSpec.describe 'Application Controller' do
+ RSpec.describe 'Application Controller', type: :request do
And then just:
session[:app_id] = @app.id
This doesn't work. Inside abefore
block it returns an an unknown method error. Just inside acontext
block you get "undefined local variable or method".
– TooMuchPete
Mar 23 at 20:48
add a comment |
You could do the following:
- RSpec.describe 'Application Controller' do
+ RSpec.describe 'Application Controller', type: :request do
And then just:
session[:app_id] = @app.id
This doesn't work. Inside abefore
block it returns an an unknown method error. Just inside acontext
block you get "undefined local variable or method".
– TooMuchPete
Mar 23 at 20:48
add a comment |
You could do the following:
- RSpec.describe 'Application Controller' do
+ RSpec.describe 'Application Controller', type: :request do
And then just:
session[:app_id] = @app.id
You could do the following:
- RSpec.describe 'Application Controller' do
+ RSpec.describe 'Application Controller', type: :request do
And then just:
session[:app_id] = @app.id
answered Feb 25 at 12:19
Paweł GościckiPaweł Gościcki
5,48954668
5,48954668
This doesn't work. Inside abefore
block it returns an an unknown method error. Just inside acontext
block you get "undefined local variable or method".
– TooMuchPete
Mar 23 at 20:48
add a comment |
This doesn't work. Inside abefore
block it returns an an unknown method error. Just inside acontext
block you get "undefined local variable or method".
– TooMuchPete
Mar 23 at 20:48
This doesn't work. Inside a
before
block it returns an an unknown method error. Just inside a context
block you get "undefined local variable or method".– TooMuchPete
Mar 23 at 20:48
This doesn't work. Inside a
before
block it returns an an unknown method error. Just inside a context
block you get "undefined local variable or method".– TooMuchPete
Mar 23 at 20:48
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53447837%2fset-a-session-var-in-rspec-request-spec%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Have you checked stackoverflow.com/questions/22451969/rspec-set-session-object ?
– ldeld
Nov 23 '18 at 14:39
Yeah, I tried every suggestion they had in that post. I am not inheriting from
ActionController::TestCase
orActionDispatch::IntegrationTest
in my test. It also looks like you only have access to the request after making a call to the object, but I need the session to be set before it makes the call.– TheLegend
Nov 23 '18 at 14:43
Right, sorry. Didn't find anything on the docs to use session directly, but maybe this can help: it seems you can use
cookies['key']
: github.com/rspec/rspec-rails/blob/master/features/…– ldeld
Nov 23 '18 at 15:10