fakeheal's avatar

Test text in HTML templates

I have an email I send when people sign up.

Texts in .blade.php file are formatted by my IDE. How can I test those texts reliably? I am using Mailthief as the version of Laravel is 5.2.

Test:

$texts = [
    "Welcome",
    "Proin aliquam varius sodales. Ut vel tortor molestie, sagittis quam ullamcorper, lacinia urna. Nunc dictum sodales nulla non convallis. Maecenas mollis ac tellus sed commodo. Quisque ipsum leo, porttitor at porta sit amet, imperdiet at turpis. Aenean eget mi vel justo accumsan rutrum. Sed ultricies enim sed felis malesuada, sit amet dictum elit aliquet. Suspendisse ultrices vulputate faucibus. Praesent in mauris nulla. Nullam id tellus quis dolor hendrerit egestas. Nullam velit ligula, tempor sed lobortis a, luctus imperdiet nisl. Fusce sed nibh orci. Nulla laoreet sapien vel metus tempor sodales. Duis vulputate mi a orci vehicula, at finibus tortor convallis. Praesent non magna nisl.",
    "Blah Blah Blah",
];

$user = factory(\App\Models\User::class, 'client')->create();

dispatch(new SignupEmail($user->id));

$this->assertTrue($this->lastMessage()->contains(trim($texts[0]), 'raw'));

Example content of email.blade.php:

....         
            <tr>
                    <td style="padding-top: 0;">
                        <table style="width:100%;background: #fff;line-height: 1.38;border-top: 10px solid #fff;border-left: 28px solid #fff;border-right: 28px solid #fff;">
                            <tr>
                                <td>
                                    <p style="margin-bottom: 21px;">
                                        Proin aliquam varius sodales. Ut vel tortor molestie, sagittis quam ullamcorper, lacinia urna.
                                        Nunc dictum sodales nulla non convallis. Maecenas mollis ac tellus sed commodo. Quisque ipsum
                                        leo, porttitor at porta sit amet, imperdiet at turpis. Aenean eget mi vel justo accumsan rutrum.
                                        Sed ultricies enim sed felis malesuada, sit amet dictum elit aliquet. Suspendisse ultrices
                                        vulputate faucibus. Praesent in mauris nulla. Nullam id tellus quis dolor hendrerit egestas.
                                        Nullam velit ligula, tempor sed lobortis a, luctus imperdiet nisl. Fusce sed nibh orci. Nulla
                                        laoreet sapien vel metus tempor sodales. Duis vulputate mi a orci vehicula, at finibus tortor
                                        convallis. Praesent non magna nisl.
                                    </p>
                                </td>
                            </tr>
                        </table>
                    </td>
                </tr>
            ...

In this case my IDE formatted the text of the email (adding new lines \n) and ->contains() no longer matches with $texts[1].

0 likes
3 replies
fakeheal's avatar

I want to assert that text from $texts[1] (the long lorem ipsum line) exists in the template, regardless of how it was formatted?

sr57's avatar

So in your test, remove html tags before doing your assert.

Use php function : strip_tags

Please or to participate in this conversation.