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
-~----------~----~----~----~------~----~------~--~---

Reply via email to