Mariano,
Am I missing something simple? Can you let me know an example were you
were able to use with redirect? Should I do something different in my
application.
I am keen to use your new framework for our unit tests but right now I
am blocked on this.
Thanks
Krishnan
On May 1, 8:26 am, ks <[EMAIL PROTECTED]> wrote:
> Mariano,
>
> I have tried writing some tests. This looks great. Thanks.
>
> I am running into an issue when my controller actions is doing
> redirects. For e.g. in my login action, the user is redirected to
> another page if login is successful. However the cake redirect
> function has an exit in it ( which is useful for the web application)
> but thetestframework exits when that happens.
>
> What is the best way to handle this? In TestSuite, I think the
> dispatch maybe handled differently since I was able totestthe same
> action with a post.
>
> Thanks
> Krishnan
>
> On Apr 25, 2:04 am, ks <[EMAIL PROTECTED]> wrote:
>
> > Great! Thanks Mariano.
>
> > I downloaded the code yesterday and see the testAction method which i
> > did not have in the previous version. Thanks for your help, I will
> > give this a try
>
> > Krishnan
>
> > On Apr 23, 3:28 pm, "Mariano Iglesias" <[EMAIL PROTECTED]>
> > wrote:
>
> > > I haven't had time to write a Bakery article regarding this, but update to
> > > latest SVN head and look for testAction() in CakeTestSuite. I still have
> > > to
> > > add a couple of things but I'll try to give you an idea here:
>
> > > Say you have typical Articles controller, with articles model, and it
> > > looks
> > > like this:
>
> > > <?php
>
> > > class ArticlesController extends AppController {
> > > var $name = 'Articles';
> > > var $helpers = array('Ajax', 'Form', 'Html');
>
> > > function index($short = null) {
> > > if (!empty($this->data)) {
> > > $this->Article->save($this->data);
> > > }
>
> > > if (!empty($short)) {
> > > $result = $this->Article->findAll(null,
> > > array('id',
> > > 'title'));
> > > } else {
> > > $result = $this->Article->findAll();
> > > }
>
> > > if (isset($this->params['requested'])) {
> > > return $result;
> > > }
>
> > > $this->set('title', 'Articles');
> > > $this->set('articles', $result);
> > > }
>
> > > }
>
> > > ?>
>
> > > Create then a file named articles_controller.test.php on your
> > > app/tests/cases/controllers directory and inside put:
>
> > > <?php
>
> > > class ArticlesControllerTest extends CakeTestCase {
> > > function startCase() {
> > > echo '<h1>StartingTestCase</h1>';
> > > }
>
> > > function endCase() {
> > > echo '<h1>EndingTestCase</h1>';
> > > }
>
> > > function startTest($method) {
> > > echo '<h3>Starting method ' . $method . '</h3>';
> > > }
>
> > > function endTest($method) {
> > > echo '<hr />';
> > > }
>
> > > function testIndex() {
> > > $result = $this->testAction('/articles/index');
> > > debug($result);
> > > }
>
> > > function testIndexShort() {
> > > $result = $this->testAction('/articles/index/short');
> > > debug($result);
> > > }
>
> > > function testIndexShortGetRenderedHtml() {
> > > $result = $this->testAction('/articles/index/short',
> > > array('return' => 'render'));
> > > debug(htmlentities($result));
> > > }
>
> > > function testIndexShortGetViewVars() {
> > > $result = $this->testAction('/articles/index/short',
> > > array('return' => 'vars'));
> > > debug($result);
> > > }
>
> > > function testIndexFixturized() {
> > > $result = $this->testAction('/articles/index/short',
> > > array('fixturize' => true));
> > > debug($result);
> > > }
>
> > > function testIndexPostFixturized() {
> > > $data = array('Article' => array('user_id' => 1,
> > > 'published'
> > > => 1, 'slug'=>'new-article', 'title' => 'New Article', 'body' => 'New
> > > Body'));
> > > $result = $this->testAction('/articles/index',
> > > array('fixturize' => true, 'data' => $data, 'method' => 'post'));
> > > debug($result);
> > > }
>
> > > }
>
> > > ?>
>
> > > Ok couple of things:
>
> > > * In second parameter of testAction() you send an array with attributes.
> > > Among others use:
>
> > > - return: set to what you want returned. Valid values are: 'vars'
> > > (so you get the view vars available after executing action), 'render' (so
> > > you get html generated once action is run), or 'return' to get the
> > > returned
> > > value when action uses $this->params['requested']. Default is 'return'.
>
> > > - fixturize: set to true if you want your models auto-fixturized
> > > (so
> > > your application tables get copied, along with their records, totesttables
> > > so if you change data it does not affect your real application.) If you
> > > set
> > > 'fixturize' to an array of models, then only those models will be
> > > auto-fixturized while the other will remain with live tables.
>
> > > - data: see last item
>
> > > - method: see last item
>
> > > * testAction()can auto-fixturize the model so if yourtestsubmits data (and
> > > therefore saves records, see next item) you can safely do it ontesttables,
> > > automatically created for you.
>
> > > * You can POST data as POST or GET using the 'data' setting, where you set
> > > it to be an associative array consisting of fields => value. Take a look
> > > at
> > > function testIndexPostFixturized() in abovetestcase to see how we emulate
> > > posting form data for a new article submission.
>
> > > -MI
>
> > > ---------------------------------------------------------------------------
>
> > > Remember, smart coders answer ten questions for every question they ask.
> > > So be smart, be cool, and share your knowledge.
>
> > > BAKE ON!
>
> > > blog:http://www.MarianoIglesias.com.ar
>
> > > -----Mensaje original-----
> > > De: [email protected] [mailto:[EMAIL PROTECTED] En nombre
> > > de ks
> > > Enviado el: Lunes, 23 de Abril de 2007 05:44 p.m.
> > > Para: Cake PHP
> > > Asunto: Re: whats the relationship between CakePHP 1.2testsuiteN
> > > SimpleTest
>
> > > Do you know when that will be available in ? We currently need to
> > > write unit tests for our controllers and I am debating if we should
> > > wait until this is released or use testsuite in the meantime and move
> > > to CakeTest once thats available?- Hide quoted text -
>
> > - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---