[development] Writing a test for book_get_books()

Andrew Berry andrewberry at sentex.net
Wed Jan 21 02:12:19 UTC 2009


Hi,

This is in relation to http://drupal.org/node/360377.

What I'm doing is building multiple $form_state arrays and using them  
to build an entire structure of a book automatically. In essence, the  
code looks like this (mostly from the comments above drupal_execute(),  
and yes, I want to create a book of articles - node type doesn't seem  
to matter):

$parent_node = array('type' => 'article');
$form_state = array();
$form_state['values'] = array();
$form_state['values']['title'] = $number . ' - SimpleTest test node  
' . $this->randomName(10);
$form_state['values']['body'] = 'SimpleTest test body ' . $this- 
 >randomName(32) . ' ' . $this->randomName(32);
$form_state['values']['book'] = _book_link_defaults('new');
$form_state['values']['book']['bid'] = 'new';
$form_state['values']['op'] = t('Save');
drupal_execute($parent_node['type'] . '_node_form', $form_state,  
(object)$parent_node);

And repeat for the various subpages setting the various book  
properties so that child pages have the right parents.

According to lyricnz2 on IRC (thanks!), the problem is that  
drupal_execute() doesn't work as expected in SimpleTest environments,  
as it runs against the normal database, and not the simpletest copy.

Two questions then:

1) Is the original issue actually a bug, or am I abusing FAPI  
incorrectly?
2) Since the issue requires multiple book nodes to be inserted in one  
request, meaning I can't use drupalPost(), how can I write a proper  
test for it? It was suggested that I could create a block and run PHP  
in it, but I would think there has to be a better way.

Thanks,
--Andrew
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2672 bytes
Desc: not available
Url : http://lists.drupal.org/pipermail/development/attachments/20090120/c164d0a3/attachment.bin 


More information about the development mailing list