Forum: RSpec [cucumber] noob Q deleteing from a list.

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
316c03a99e8ed311e5462d94f085fc2e?d=identicon&s=25 John Ivanoff (Guest)
on 2009-02-26 15:17
(Received via mailing list)
manage_froobles.feature
--------------------------------------
  Scenario: Delete frooble
    Given the following froobles:
      |name|color|description|
      |name 1|color 1|description 1|
      |name 2|color 2|description 2|
      |name 3|color 3|description 3|
      |name 4|color 4|description 4|
    When I delete the 3rd frooble
    Then I should see the following froobles:
      |name|color|description|
      |name 1|color 1|description 1|
      |name 2|color 2|description 2|
      |name 4|color 4|description 4|

----------------------------------------------------------------------------------------------------------------
froobles_steps.rb
--------------------------------------
When /^I delete the (\d+)(?:st|nd|rd|th) frooble$/ do |pos|
  visit froobles_url
  within("table > tr:nth-child(#{pos.to_i+1})") do
    click_link "Destroy"
  end
end

Then /^I should see the following froobles:$/ do |froobles|
  froobles.raw[1..-1].each_with_index do |row, i|
    row.each_with_index do |cell, j|
      response.should have_selector("table > tr:nth-child(#{i+2}) >
td:nth-child(#{j+1})") { |td|
        td.inner_text.should == cell
      }
    end
  end
end

I want to show a definition list instead of a table.

index.html
--------------------------------------
<dl>
  <dt>description 1</dt>
  <dd>show | edit| destroy</dd>
  <dt>description 2</dt>
  <dd>show | edit| destroy</dd>
</dl>

so I'm trying
manage_froobles.feature
--------------------------------------
  Scenario: Delete frooble
    Given the following froobles:
      |description|
      |description 1|
      |description 2|
      |description 3|
      |description 4|
    When I delete the 3rd frooble
    Then I should see the following froobles:
      |description|
      |description 1|
      |description 2|
      |description 4|

----------------------------------------------------------------------------------------------------------------
froobles_steps.rb
--------------------------------------
When /^I delete the (\d+)(?:st|nd|rd|th) frooble$/ do |pos|
  visit froobles_url
  within("dl:nth-child(#{pos.to_i})") do
    click_link "Destroy"
  end
end
(this passes but I really don't know if it's "clicking" the destroy
link on the third list item.)

Then /^I should see the following froobles:$/ do |froobles|
  tasks.raw[1..-1].each_with_index do |row, i|
    response.should have_selector("dl:nth-child(#{i+3})") { |td|
      td.inner_text.should == row
    }
  end
end
(this fails)

I can follow the logic of the table but for some reason I can't write
this test for a list.

Any help would be appreciated.

John
0be0e4aa42aacd9a8a95c792de273ca7?d=identicon&s=25 Aslak Hellesøy (aslakhellesoy)
on 2009-02-26 17:20
(Received via mailing list)
On Thu, Feb 26, 2009 at 12:03 AM, John Ivanoff <john.ivanoff@gmail.com>
wrote:
>    Then I should see the following froobles:
>  within("table > tr:nth-child(#{pos.to_i+1})") do
>      }
>  <dd>show | edit| destroy</dd>
>      |description 1|
> 
----------------------------------------------------------------------------------------------------------------
>
3 possibilities:

1) It's clicking the right link, but your next page renders wrong
2) It's clicking the right link, but your next page renders correctly,
but your Then is buggy
3) It's not clicking the right link

In order to find out which one it is...

> Then /^I should see the following froobles:$/ do |froobles|

# Do this here:
puts response.body

Aslak
48641c4be1fbe167929fb16c9fd94990?d=identicon&s=25 Mark Wilden (Guest)
on 2009-02-26 20:01
(Received via mailing list)
On Thu, Feb 26, 2009 at 7:59 AM, aslak hellesoy
<aslak.hellesoy@gmail.com> wrote:

> puts response.body

Another debugging technique we use is

When /^I view the response$/ do
  Tempfile.open("response") do |file|
    file.print response.body
    `open "file://#{file.path}"`
    sleep 2
  end
end

///ark
C694a032be7518a0d704318895f8fe1d?d=identicon&s=25 Ben Mabey (mabes)
on 2009-02-26 20:34
(Received via mailing list)
Mark Wilden wrote:
>   Tempfile.open("response") do |file|
> http://rubyforge.org/mailman/listinfo/rspec-users
>
If you are using webrat and you want to see the HTML repsonse you can
use: save_and_open_page

-Ben
316c03a99e8ed311e5462d94f085fc2e?d=identicon&s=25 John Ivanoff (Guest)
on 2009-03-02 00:01
(Received via mailing list)
Thanks for all the help. With the
puts response.body
I was able so see what was going on. I know that I am now deleting the
third frooble!!!!

Now when
Then I should see the following froobles:
I get this error
----------------------------------
Then I should see the following froobles:  # features/step_definitions/
frooble_steps.rb:12
      expected: ["description 1"],
           got: "description 1" (using ==)
      Diff:
      @@ -1,2 +1,2 @@
      -["description 1"]
      +"description 1" (Spec::Expectations::ExpectationNotMetError)
      ./features/step_definitions/frooble_steps.rb:18:in `Then /^I
should see the following froobles:$/'
      /Library/Ruby/Gems/1.8/gems/webrat-0.4.0/lib/webrat/core/
matchers/have_xpath.rb:50:in `call'
      /Library/Ruby/Gems/1.8/gems/webrat-0.4.0/lib/webrat/core/
matchers/have_xpath.rb:50:in `matches_nokogiri?'
      /Library/Ruby/Gems/1.8/gems/webrat-0.4.0/lib/webrat/core/
matchers/have_xpath.rb:15:in `matches?'
      ./features/step_definitions/frooble_steps.rb:17:in `Then /^I
should see the following froobles:$/'
      (eval):3:in `each_with_index'
      ./features/step_definitions/frooble_steps.rb:16:in `each'
      ./features/step_definitions/frooble_steps.rb:16:in
`each_with_index'
      ./features/step_definitions/frooble_steps.rb:16:in `Then /^I
should see the following froobles:$/'
      features/list.feature:15:in `Then I should see the following
froobles:'
----------------------------------

Again any help will be appreciated.

John
3c28deaff162aeda44f2e0bcdca1dacf?d=identicon&s=25 Joseph Wilk (josephwilk)
on 2009-03-02 11:56
(Received via mailing list)
John Ivanoff wrote:
> frooble_steps.rb:12
>       /Library/Ruby/Gems/1.8/gems/webrat-0.4.0/lib/webrat/core/
> should see the following froobles:$/'
>       features/list.feature:15:in `Then I should see the following
> froobles:'
> ----------------------------------
>
> Again any help will be appreciated.
>
You are expecting a list  in your test but you are getting back a
string.
>>>>
>>> ///ark
>> rspec-users mailing list
>> rspec-us...@rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
>>
> _______________________________________________
> rspec-users mailing list
> rspec-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
>


--
Joseph Wilk
http://blog.josephwilk.net
This topic is locked and can not be replied to.