Andrei Erdoss
2008-Nov-26 11:04 UTC
[rspec-users] ActiveRecord::RecordNotFound error Cucumber/Webrat
Hello,
I am bit new to Cucumber and Webrat and I have one issue that I can''t
seem
to fix on my own. I would appreciate your help.
I have a controller called places and a model called Place. I use the
acts_as_tree plugin in order for a place to have more places within it. Ex.
Georgia would have Cobb County, Cobb County would have Smyra City.
This is how my controller looks for adding a new place:
# loading the parent place
before_filter :load_parent_place, :only => [:new, :create]
def load_parent_place
@parent_place = Place.find(params[:parent_id])
end
# GET /places/new
def new
@place = @parent_place.children.create
respond_to do |format|
format.html # new.html.erb
end
end
# POST /places
def create
@place = @parent_place.children.create(params[:place])
respond_to do |format|
if @place.save
flash[:notice] = ''Place was successfully created.''
format.html { redirect_to(@place) }
else
format.html { render :action => "new" }
end
end
end
I have created the cucumber feature also, but it errors out:
Scenario: Register new place
Given I am on the new place page with parent place "Georgia"
When I fill in "Name" with "Atlanta"
And I press "Create"
Then I should see "Atlanta"
For the first line starting with "Given", I tried to put this step,
but it
errors out with Couldn''t find Place with ID=1
(ActiveRecord::RecordNotFound)
Given /I am on the new place page with parent place "(.*)"/ do |name|
visits "/places/new?parent_id=1"
Place.create! :name => name, :parent_id => 1
end
What am I doing wrong or how should I proceed with writing these steps for
this action?
Thank you,
--
Andrei Erdoss
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://rubyforge.org/pipermail/rspec-users/attachments/20081126/e2e74052/attachment.html>
Andrei Erdoss
2008-Nov-26 14:14 UTC
[rspec-users] ActiveRecord::RecordNotFound error Cucumber/Webrat
Hello,
I am bit new to Cucumber and Webrat and I have one issue that I can''t
seem
to fix on my own. I would appreciate your help.
I have a controller called places and a model called Place. I use the
acts_as_tree plugin in order for a place to have more places within it. Ex.
Georgia would have Cobb County, Cobb County would have Smyra City.
This is how my controller looks for adding a new place:
# loading the parent place
before_filter :load_parent_place, :only => [:new, :create]
def load_parent_place
@parent_place = Place.find(params[:parent_id])
end
# GET /places/new
def new
@place = @parent_place.children.create
respond_to do |format|
format.html # new.html.erb
end
end
# POST /places
def create
@place = @parent_place.children.create(params[:place])
respond_to do |format|
if @place.save
flash[:notice] = ''Place was successfully created.''
format.html { redirect_to(@place) }
else
format.html { render :action => "new" }
end
end
end
I have created the cucumber feature also, but it errors out:
Scenario: Register new place
Given I am on the new place page with parent place "Georgia"
When I fill in "Name" with "Atlanta"
And I press "Create"
Then I should see "Atlanta"
For the first line starting with "Given", I tried to put this step,
but it
errors out with Couldn''t find Place with ID=1
(ActiveRecord::RecordNotFound)
Given /I am on the new place page with parent place "(.*)"/ do |name|
visits "/places/new?parent_id=1"
Place.create! :name => name, :parent_id => 1
end
What am I doing wrong or how should I proceed with writing these steps for
this action?
Thank you,
--
Andrei Erdoss
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://rubyforge.org/pipermail/rspec-users/attachments/20081126/26ea5db5/attachment.html>
David Chelimsky
2008-Nov-26 14:20 UTC
[rspec-users] ActiveRecord::RecordNotFound error Cucumber/Webrat
On Wed, Nov 26, 2008 at 5:04 AM, Andrei Erdoss <erdoss at gmail.com> wrote:> Hello, > > I am bit new to Cucumber and Webrat and I have one issue that I can''t seem > to fix on my own. I would appreciate your help. > > I have a controller called places and a model called Place. I use the > acts_as_tree plugin in order for a place to have more places within it. Ex. > Georgia would have Cobb County, Cobb County would have Smyra City. > > This is how my controller looks for adding a new place: > > # loading the parent place > before_filter :load_parent_place, :only => [:new, :create] > def load_parent_place > @parent_place = Place.find(params[:parent_id]) > end > > # GET /places/new > def new > @place = @parent_place.children.create > > > respond_to do |format| > format.html # new.html.erb > end > end > > # POST /places > def create > @place = @parent_place.children.create(params[:place]) > > respond_to do |format| > if @place.save > flash[:notice] = ''Place was successfully created.'' > format.html { redirect_to(@place) } > else > format.html { render :action => "new" } > end > end > end > > > I have created the cucumber feature also, but it errors out: > > Scenario: Register new place > Given I am on the new place page with parent place "Georgia" > When I fill in "Name" with "Atlanta" > And I press "Create" > Then I should see "Atlanta" > > For the first line starting with "Given", I tried to put this step, but it > errors out with Couldn''t find Place with ID=1 (ActiveRecord::RecordNotFound) > > Given /I am on the new place page with parent place "(.*)"/ do |name| > visits "/places/new?parent_id=1" > Place.create! :name => name, :parent_id => 1 > end > > What am I doing wrong or how should I proceed with writing these steps for > this action?Try this: Given /I am on the new place page with parent place "(.*)"/ do |name| parent = Place.create! :name => name visits "/places/new?parent_id=#{parent.id}" end> > Thank you, > > -- > Andrei Erdoss > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
Andrei Erdoss
2008-Nov-26 17:17 UTC
[rspec-users] ActiveRecord::RecordNotFound error Cucumber/Webrat
Thank you, that worked.
I have a new issue. I tried finding a solution for this everywhere. Only
source is this article:
http://afreshcup.com/2008/10/09/authentication-in-cucumber-tests/
I am using Restful Authentication and I would like to login in Cucumber.
This is how my feature looks like:
Scenario: Register new place
Given I am logged in as a user
And I am on the new place page with parent place "Georgia"
When I fill in "Name" with "Atlanta"
And I press "Create"
And I should see "Atlanta"
This is the step:
Given /I am logged in as a user/ do
@current_user = Factory.define :user do |u|
u.name ''the user''
u.email ''erdoss at gmail.com''
u.login ''the_login''
u.password ''password''
u.password_confirmation ''password''
end
visits "/login"
fills_in("login", :with => "the_login")
fills_in("password", :with => "password")
clicks_button("Log in")
end
# places controller
before_filter :login_required, :only => [:create]
# GET /places/new
def new
@place = @parent_place.children.create
respond_to do |format|
format.html # new.html.erb
end
end
# POST /places
def create
@place = @parent_place.children.create(params[:place])
respond_to do |format|
if @place.save
flash[:notice] = ''Place was successfully created.''
format.html { redirect_to(@place) }
else
format.html { render :action => "new" }
end
end
end
The "Given I am logged in as a user" step passes, along with all the
steps,
except the last one (And I should see "Atlanta"). The problem is that
the
login page is shown and not the show page with the new place created.
What do I have to set in Cucumber so that it acts as if the user is logged
in? In know that in Rspec :login_required should return true. What''s
the
equivalent of that in Cucumber?
Thank you
On Wed, Nov 26, 2008 at 4:20 PM, David Chelimsky <dchelimsky at
gmail.com>wrote:
> On Wed, Nov 26, 2008 at 5:04 AM, Andrei Erdoss <erdoss at gmail.com>
wrote:
> > Hello,
> >
> > I am bit new to Cucumber and Webrat and I have one issue that I
can''t
> seem
> > to fix on my own. I would appreciate your help.
> >
> > I have a controller called places and a model called Place. I use the
> > acts_as_tree plugin in order for a place to have more places within
it.
> Ex.
> > Georgia would have Cobb County, Cobb County would have Smyra City.
> >
> > This is how my controller looks for adding a new place:
> >
> > # loading the parent place
> > before_filter :load_parent_place, :only => [:new, :create]
> > def load_parent_place
> > @parent_place = Place.find(params[:parent_id])
> > end
> >
> > # GET /places/new
> > def new
> > @place = @parent_place.children.create
> >
> >
> > respond_to do |format|
> > format.html # new.html.erb
> > end
> > end
> >
> > # POST /places
> > def create
> > @place = @parent_place.children.create(params[:place])
> >
> > respond_to do |format|
> > if @place.save
> > flash[:notice] = ''Place was successfully
created.''
> > format.html { redirect_to(@place) }
> > else
> > format.html { render :action => "new" }
> > end
> > end
> > end
> >
> >
> > I have created the cucumber feature also, but it errors out:
> >
> > Scenario: Register new place
> > Given I am on the new place page with parent place
"Georgia"
> > When I fill in "Name" with "Atlanta"
> > And I press "Create"
> > Then I should see "Atlanta"
> >
> > For the first line starting with "Given", I tried to put
this step, but
> it
> > errors out with Couldn''t find Place with ID=1
> (ActiveRecord::RecordNotFound)
> >
> > Given /I am on the new place page with parent place "(.*)"/
do |name|
> > visits "/places/new?parent_id=1"
> > Place.create! :name => name, :parent_id => 1
> > end
> >
> > What am I doing wrong or how should I proceed with writing these steps
> for
> > this action?
>
> Try this:
>
> Given /I am on the new place page with parent place "(.*)"/ do
|name|
> parent = Place.create! :name => name
> visits "/places/new?parent_id=#{parent.id}"
> end
>
>
> >
> > Thank you,
> >
> > --
> > Andrei Erdoss
> >
> > _______________________________________________
> > rspec-users mailing list
> > rspec-users at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/rspec-users
> >
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
--
Andrei Erdoss
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://rubyforge.org/pipermail/rspec-users/attachments/20081126/d250fc80/attachment-0001.html>