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>