assert_select <br /> embedded in text

Can someone help with an assert_select problem please?

I have:
<p>some text<br />some more text</p>
I see how to use assert_select to check that the text in the paragraph
is "some textsome more text" and I can check that the paragraph
contains a break. I cannot see how to check that the break is at the
right point in the text.

Any help will be much appreciated

Colin

Colin Law wrote:
[...]
} I cannot see how to check that the break is at the

right point in the text.

What does the "right point" consist of? In other words, how (English,
not Ruby) would you define the break being at the right point?

Any help will be much appreciated

Colin

Best,

Colin Law wrote:
[...]
} I cannot see how to check that the break is at the

right point in the text.

What does the "right point" consist of? In other words, how (English,
not Ruby) would you define the break being at the right point?

Repeating my original post for clarity:

I have:
<p>some text<br />some more text</p>

The right point for the break is after 'some text' and before 'some more text'
As I said I can see how to use assert_select to check that the
complete text is there, and how to check that the break is there, but
I do not see how to check that the break is after 'some text' and
before 'some more text'. I am no doubt missing something obvious.
Of course in my real application the text is not as in this simplified example.

Colin

Perhaps I should clarify further. In my functional test I currently
have something like
assert_select "p", "some textsome more text" # checks the text is correct
assert_select "p>br", 1 # checks p contains br
What I am lacking is a check that the <br /> is in the correct place
in the text.

Colin

Colin Law wrote:
[...]

The right point for the break is after 'some text' and before 'some more text'

How about assert_select "p", /some text.*<br[^>]*>some more text/m ?

BTW, you shouldn't be using <br/> in the self-closing form unless you're
generating XHTML (it is not actually valid HTML), and you shouldn't be
generating XHTML unless you're serving it with the XHTML MIME type -- at
which point IE won't understand the document! So in general, HTML 4 is
the way to go (the html_output plugin will help). See the recent thread
where Rimantas convinced me of this (admittedly after some argument from
me).

Best,

Colin Law wrote:
[...]

The right point for the break is after 'some text' and before 'some more text'

How about assert_select "p", /some text.*<br[^>]*>some more text/m ?

No that doesn't work. The br tag does not appear in the text for the
p tag. This can be seen from the fact that
assert_select "p", "some textsome more text"
passes.
I tried it just to check and it said
/some text.*<br[^>]*>some more text/m expected but was
some textsome more text

BTW, you shouldn't be using <br/> in the self-closing form unless you're
generating XHTML (it is not actually valid HTML), and you shouldn't be
generating XHTML unless you're serving it with the XHTML MIME type -- at
which point IE won't understand the document! So in general, HTML 4 is
the way to go (the html_output plugin will help). See the recent thread
where Rimantas convinced me of this (admittedly after some argument from
me).

OK

Colin

For anyone coming to this thread without the history I am trying to
use assert_select to verify the html
<p>some text<br>some more text</p>

I found a solution to this by adding span tags round my text
fragments, so that the html is now
<p><span>some text</span><br><span>some more text</span></p>
Then I can test it with
      assert_select "p>span:first-of-type", "some text"
      assert_select "p>span:first-of-type+br", 1
      assert_select "p>span:nth-of-type(2)", "some more text"
This works but feel there must be a better solution than adding extra
tags to the html just so that it can be tested.

Colin

Colin Law wrote:
[...]> I found a solution to this by adding span tags round my text

fragments, so that the html is now
<p><span>some text</span><br><span>some more text</span></p>

[...]

This works but feel there must be a better solution than adding extra
tags to the html just so that it can be tested.

Indeed. Try using the regexp I gave you as a simple string match on
response.body , or perhaps go for an XPath-based solution (with RSpec,
that would be rspec_hpricot_matchers, but I don't know if that works
without RSpec).

Colin

Best,

OK, it looks as if I will just have to accept that it cannot be done
with assert_select.
Many thanks for the help
Colin