Hi Aslak, thanks for responding (more below).
On Mon, 2008-09-29 at 08:48 +0200, aslak hellesoy wrote: > On Mon, Sep 29, 2008 at 8:46 AM, Willem van den Ende > <[EMAIL PROTECTED]> wrote: > > On Sun, 2008-09-28 at 22:24 +0200, Willem van den Ende wrote: > > <snip> > >> When I go to invitation/new, I see the Subject field, but WebRat > >> doesn't... : > > <snip> > >> When I fill in "Subject" with "My invitation subject" > >> Could not find [Webrat::TextField, Webrat::TextareaField, > >> Webrat::PasswordField]: "Subject" (RuntimeError) > > > > Ah. Figured it out. The cucumber code generator created (in > > manage_invitations.feature): > > > > When I fill in "Subject" with "My invitation subject" > > > > instead of > > > > When I fill in "invitation_subject" with "My invitation subject" > > > > which is what I saw in 'view source'. After changing all generated > > whens, I have 17 steps passed. > > > > In the definition of "When I fill in..." you can add this debug > statement on the first line: > > puts response.body Ok. > That should help you find the reason. Please post the HTML you see for > the failing step. Done, see below. It seems WebRat goes looking for the id (invitation_subject) and can't find it if you write When I fill in "Subject" with "My invitation subject", but does find When I fill in "invitation_subject" with "My invitation subject", The way it is generated communicates much better with the customer of course... :) (it is the fields label, maybe the label in the html generated by rspec_scaffold should not be <b>Subject</b> but something else? ). trace with HTML: Feature: Manage invitations In order to keep track of invitations A invitation mechanic Should be able to manage several invitations Scenario: Register new invitation Given I am on the new invitation page <h1>New invitation</h1> <form action="/invitations" class="new_invitation" id="new_invitation" method="post"> <p> <b>Subject</b><br /> <input id="invitation_subject" name="invitation[subject]" size="30" type="text" /> </p> <p> <b>Cc</b><br /> <input id="invitation_cc" name="invitation[cc]" size="30" type="text" /> </p> <p> <b>Text</b><br /> <textarea cols="40" id="invitation_text" name="invitation[text]" rows="20"></textarea> </p> <p> <input id="invitation_submit" name="commit" type="submit" value="Create" /> </p> </form> <a href="/invitations">Back</a> When I fill in "Subject" with "My invitation subject" Could not find [Webrat::TextField, Webrat::TextareaField, Webrat::PasswordField]: "Subject" (RuntimeError) /home/willem/courses/experienceagile/ebay/trunk/excrm/vendor/plugins/webrat/lib/webrat/core/flunk.rb:4:in `flunk' /home/willem/courses/experienceagile/ebay/trunk/excrm/vendor/plugins/webrat/lib/webrat/core/scope.rb:222:in `find_field' /home/willem/courses/experienceagile/ebay/trunk/excrm/vendor/plugins/webrat/lib/webrat/core/scope.rb:25:in `fills_in' /home/willem/courses/experienceagile/ebay/trunk/excrm/vendor/plugins/webrat/lib/webrat/rails/session.rb:24:in `send' /home/willem/courses/experienceagile/ebay/trunk/excrm/vendor/plugins/webrat/lib/webrat/rails/session.rb:24:in `method_missing' /usr/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/integration.rb:448:in `send!' /usr/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/integration.rb:448:in `method_missing' ./features/steps/common_webrat.rb:14:in `When /^I fill in "(.*)" with "(.*)"$/' features/manage_invitations.feature:8:in `When I fill in "Subject" with "My invitation subject"' <h1>New invitation</h1> <form action="/invitations" class="new_invitation" id="new_invitation" method="post"> <p> <b>Subject</b><br /> <input id="invitation_subject" name="invitation[subject]" size="30" type="text" /> </p> <p> <b>Cc</b><br /> <input id="invitation_cc" name="invitation[cc]" size="30" type="text" /> </p> <p> <b>Text</b><br /> <textarea cols="40" id="invitation_text" name="invitation[text]" rows="20"></textarea> </p> <p> <input id="invitation_submit" name="commit" type="submit" value="Create" /> </p> </form> <a href="/invitations">Back</a> And I fill in "CC" with "My invitation cc" <h1>New invitation</h1> <form action="/invitations" class="new_invitation" id="new_invitation" method="post"> <p> <b>Subject</b><br /> <input id="invitation_subject" name="invitation[subject]" size="30" type="text" /> </p> <p> <b>Cc</b><br /> <input id="invitation_cc" name="invitation[cc]" size="30" type="text" /> </p> <p> <b>Text</b><br /> <rake aborted! Command failed with status (1): [/usr/bin/ruby1.8 -I "/home/willem/courses/...] /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:974:in `sh' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:987:in `call' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:987:in `sh' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:1084:in `sh' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:1019:in `ruby' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:1084:in `ruby' /home/willem/courses/experienceagile/ebay/trunk/excrm/vendor/plugins/cucumber/lib/cucumber/rake/task.rb:47:in `define_tasks' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:621:in `call' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:621:in `execute' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:616:in `each' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:616:in `execute' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:582:in `invoke_with_call_chain' /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:575:in `invoke_with_call_chain' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:568:in `invoke' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:2031:in `invoke_task' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:2009:in `top_level' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:2009:in `each' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:2009:in `top_level' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:2048:in `standard_exception_handling' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:2003:in `top_level' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:1982:in `run' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:2048:in `standard_exception_handling' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/lib/rake.rb:1979:in `run' /usr/lib/ruby/gems/1.8/gems/rake-0.8.2/bin/rake:31 /usr/bin/rake:19:in `load' /usr/bin/rake:19 textarea cols="40" id="invitation_text" name="invitation[text]" rows="20"></textarea> </p> <p> <input id="invitation_submit" name="commit" type="submit" value="Create" /> </p> </form> <a href="/invitations">Back</a> And I fill in "Text" with "My invitation text" And I press "Create" Then I should see "My invitation subject" And I should see "My invitation cc" And I should see "My invitation text" Scenario: Delete invitation Given there are 4 invitations When I delete the first invitation Then there should be 3 invitations left |initial|after| |100|99| |1|0| 10 steps passed 1 steps failed 6 steps skipped > Also check log/test.log. (apologies for the ESC characters, less doesn't seem to recognize the colours....) Processing InvitationsController#new (for 127.0.0.1 at 2008-09-29 08:55:04) [GET] Session ID: 56bcf61f1eb75b3e8c973a21bca504d0 Parameters: {"action"=>"new", "controller"=>"invitations"} ESC[4;35;1mSQL (0.004048)ESC[0m ESC[0m SELECT a.attname, format_type(a.atttypid, a.atttypmod), d. adsrc, a.attnotnull FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = 'invitations'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum ESC[0m Rendering invitations/new Completed in 0.01889 (52 reqs/sec) | Rendering: 0.00598 (31%) | DB: 0.00550 (29%) | 200 OK [http://ww w.example.com/invitations/new] REQUESTING PAGE: POST /invitations with {"commit"=>"Create", "invitation"=>{"cc"=>"", "text"=>"", "su bject"=>""}} Processing InvitationsController#create (for 127.0.0.1 at 2008-09-29 08:55:04) [POST] Session ID: BAh7BiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo% 0ASGFzaHsABjoKQHVzZWR7AA%3 D%3D--4a442a5c5f1558d51188e7e418677dedf9dd2717 Parameters: {"commit"=>"Create", "action"=>"create", "controller"=>"invitations", "invitation"=>{"c c"=>"", "text"=>"", "subject"=>""}} ESC[4;36;1mPK and serial sequence (0.005058)ESC[0m ESC[0;1m SELECT attr.attname, seq.relname FROM pg_class seq, pg_attribute attr, pg_depend dep, pg_namespace name, pg_constraint cons WHERE seq.oid = dep.objid AND seq.relkind = 'S' AND attr.attrelid = dep.refobjid AND attr.attnum = dep.refobjsubid AND attr.attrelid = cons.conrelid AND attr.attnum = cons.conkey[1] AND cons.contype = 'p' AND dep.refobjid = 'invitations'::regclass ESC[0m ESC[4;35;1mInvitation Create (0.001065)ESC[0m ESC[0mINSERT INTO invitations ("cc", "updated_at", "text", "subject", "created_at") VALUES(E'', '2008-09-29 08:55:04.858034', E'', E'', '2008-09-29 08:55:04.858034')ESC[0m ESC[4;36;1mSQL (0.000500)ESC[0m ESC[0;1mSELECT currval('invitations_id_seq')ESC[0m Redirected to http://www.example.com/invitations/1 Completed in 0.01049 (95 reqs/sec) | DB: 0.00662 (63%) | 302 Found [http://www.example.com/invitations] Willem > > Aslak > > > It might indicate, as Aslak says in the readme, it is recommended to > > create your features by hand. On the other hand, it would also be > > convenient if the combination of generate feature and generate > > rspec_scaffold works out of the box. :) > > > > I'm going to play a bit more with it - too early to send in my own fix > > for the feature generator I guess. I am willing to make it if you want > > it though. > > > > Willem > > > > _______________________________________________ > > rspec-users mailing list > > rspec-users@rubyforge.org > > http://rubyforge.org/mailman/listinfo/rspec-users > > _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users