- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
<?php
|
|
|
|
|
// $Id$
|
|
|
|
|
|
|
|
|
|
class BookTestCase extends DrupalWebTestCase {
|
|
|
|
|
protected $book;
|
|
|
|
|
|
2009-03-31 01:49:55 +00:00
|
|
|
|
public static function getInfo() {
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
return array(
|
|
|
|
|
'name' => t('Book functionality'),
|
|
|
|
|
'description' => t('Create a book, add pages, and test book interface.'),
|
|
|
|
|
'group' => t('Book'),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function setUp() {
|
|
|
|
|
parent::setUp('book');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2008-04-25 18:26:02 +00:00
|
|
|
|
* Test book functionality through node interfaces.
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
*/
|
|
|
|
|
function testBook() {
|
|
|
|
|
// Create users.
|
2008-12-23 14:32:08 +00:00
|
|
|
|
$book_author = $this->drupalCreateUser(array('create new books', 'create book content', 'edit own book content', 'add content to books'));
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
$web_user = $this->drupalCreateUser(array('access printer-friendly version'));
|
|
|
|
|
|
|
|
|
|
// Create new book.
|
|
|
|
|
$this->drupalLogin($book_author);
|
|
|
|
|
|
|
|
|
|
$this->book = $this->createBookNode('new');
|
|
|
|
|
$book = $this->book;
|
|
|
|
|
|
|
|
|
|
/*
|
2008-04-25 18:26:02 +00:00
|
|
|
|
* Add page hierarchy to book.
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
* Book
|
|
|
|
|
* |- Node 0
|
|
|
|
|
* |- Node 1
|
|
|
|
|
* |- Node 2
|
|
|
|
|
* |- Node 3
|
|
|
|
|
* |- Node 4
|
|
|
|
|
*/
|
|
|
|
|
$nodes = array();
|
|
|
|
|
$nodes[] = $this->createBookNode($book->nid); // Node 0.
|
|
|
|
|
$nodes[] = $this->createBookNode($book->nid, $nodes[0]->book['mlid']); // Node 1.
|
|
|
|
|
$nodes[] = $this->createBookNode($book->nid, $nodes[0]->book['mlid']); // Node 2.
|
|
|
|
|
$nodes[] = $this->createBookNode($book->nid); // Node 3.
|
|
|
|
|
$nodes[] = $this->createBookNode($book->nid); // Node 4.
|
|
|
|
|
|
|
|
|
|
$this->drupalLogout();
|
|
|
|
|
$this->drupalLogin($web_user);
|
|
|
|
|
|
2009-04-25 23:01:43 +00:00
|
|
|
|
// Check that book pages display along with the correct outlines and
|
|
|
|
|
// previous/next links.
|
|
|
|
|
$this->checkBookNode($book, array($nodes[0], $nodes[3], $nodes[4]), FALSE, FALSE, $nodes[0], array());
|
|
|
|
|
$this->checkBookNode($nodes[0], array($nodes[1], $nodes[2]), $book, $book, $nodes[1], array($book));
|
|
|
|
|
$this->checkBookNode($nodes[1], NULL, $nodes[0], $nodes[0], $nodes[2], array($book, $nodes[0]));
|
|
|
|
|
$this->checkBookNode($nodes[2], NULL, $nodes[1], $nodes[0], $nodes[3], array($book, $nodes[0]));
|
|
|
|
|
$this->checkBookNode($nodes[3], NULL, $nodes[2], $book, $nodes[4], array($book));
|
|
|
|
|
$this->checkBookNode($nodes[4], NULL, $nodes[3], $book, FALSE, array($book));
|
2008-12-23 14:32:08 +00:00
|
|
|
|
|
|
|
|
|
$this->drupalLogout();
|
|
|
|
|
|
|
|
|
|
// Create a second book, and move an existing book page into it.
|
|
|
|
|
$this->drupalLogin($book_author);
|
|
|
|
|
$other_book = $this->createBookNode('new');
|
|
|
|
|
$node = $this->createBookNode($book->nid);
|
|
|
|
|
$edit = array('book[bid]' => $other_book->nid);
|
|
|
|
|
$this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
|
|
|
|
|
|
|
|
|
|
$this->drupalLogout();
|
|
|
|
|
$this->drupalLogin($web_user);
|
|
|
|
|
|
|
|
|
|
// Check that the nodes in the second book are displayed correctly.
|
|
|
|
|
// First we must set $this->book to the second book, so that the
|
|
|
|
|
// correct regex will be generated for testing the outline.
|
|
|
|
|
$this->book = $other_book;
|
2009-04-25 23:01:43 +00:00
|
|
|
|
$this->checkBookNode($other_book, array($node), FALSE, FALSE, $node, array());
|
|
|
|
|
$this->checkBookNode($node, NULL, $other_book, $other_book, FALSE, array($other_book));
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2008-04-25 18:26:02 +00:00
|
|
|
|
* Check the outline of sub-pages; previous, up, and next; and printer friendly version.
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
*
|
2009-04-25 23:01:43 +00:00
|
|
|
|
* @param $node
|
2008-05-15 21:19:24 +00:00
|
|
|
|
* Node to check.
|
2009-04-25 23:01:43 +00:00
|
|
|
|
* @param $nodes
|
2008-05-15 21:19:24 +00:00
|
|
|
|
* Nodes that should be in outline.
|
2009-04-25 23:01:43 +00:00
|
|
|
|
* @param $previous
|
2008-05-15 21:19:24 +00:00
|
|
|
|
* Previous link node.
|
2009-04-25 23:01:43 +00:00
|
|
|
|
* @param $up
|
2008-05-15 21:19:24 +00:00
|
|
|
|
* Up link node.
|
2009-04-25 23:01:43 +00:00
|
|
|
|
* @param $next
|
2008-05-15 21:19:24 +00:00
|
|
|
|
* Next link node.
|
2009-04-25 23:01:43 +00:00
|
|
|
|
* @param $breadcrumb
|
|
|
|
|
* The nodes that should be displayed in the breadcrumb.
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
*/
|
2009-04-25 23:01:43 +00:00
|
|
|
|
function checkBookNode($node, $nodes, $previous = FALSE, $up = FALSE, $next = FALSE, array $breadcrumb) {
|
2009-06-07 02:32:57 +00:00
|
|
|
|
// $number does not use drupal_static as it should not be reset
|
|
|
|
|
// since it uniquely identifies each call to checkBookNode().
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
static $number = 0;
|
|
|
|
|
$this->drupalGet('node/' . $node->nid);
|
|
|
|
|
|
|
|
|
|
// Check outline structure.
|
|
|
|
|
if ($nodes !== NULL) {
|
|
|
|
|
$this->assertPattern($this->generateOutlinePattern($nodes), t('Node ' . $number . ' outline confirmed.'));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$this->pass(t('Node ' . $number . ' doesn\'t have outline.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Check previous, up, and next links.
|
|
|
|
|
if ($previous) {
|
|
|
|
|
$this->assertRaw(l('‹ ' . $previous->title, 'node/' . $previous->nid, array('attributes' => array('class' => 'page-previous', 'title' => t('Go to previous page')))), t('Prevoius page link found.'));
|
|
|
|
|
}
|
2008-05-15 21:19:24 +00:00
|
|
|
|
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
if ($up) {
|
|
|
|
|
$this->assertRaw(l('up', 'node/' . $up->nid, array('attributes' => array('class' => 'page-up', 'title' => t('Go to parent page')))), t('Up page link found.'));
|
|
|
|
|
}
|
2008-05-15 21:19:24 +00:00
|
|
|
|
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
if ($next) {
|
|
|
|
|
$this->assertRaw(l($next->title . ' ›', 'node/' . $next->nid, array('attributes' => array('class' => 'page-next', 'title' => t('Go to next page')))), t('Next page link found.'));
|
|
|
|
|
}
|
|
|
|
|
|
2009-04-25 23:01:43 +00:00
|
|
|
|
// Compute the expected breadcrumb.
|
|
|
|
|
$expected_breadcrumb = array();
|
|
|
|
|
$expected_breadcrumb[] = url('');
|
|
|
|
|
foreach ($breadcrumb as $a_node) {
|
|
|
|
|
$expected_breadcrumb[] = url('node/' . $a_node->nid);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Fetch links in the current breadcrumb.
|
|
|
|
|
$links = $this->xpath("//div[@class='breadcrumb']/a");
|
|
|
|
|
$got_breadcrumb = array();
|
|
|
|
|
foreach ($links as $link) {
|
|
|
|
|
$got_breadcrumb[] = (string) $link['href'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Compare expected and got breadcrumbs.
|
|
|
|
|
$this->assertIdentical($expected_breadcrumb, $got_breadcrumb, t('The breadcrumb is correctly displayed on the page.'));
|
|
|
|
|
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
// Check printer friendly version.
|
|
|
|
|
$this->drupalGet('book/export/html/' . $node->nid);
|
|
|
|
|
$this->assertText($node->title, t('Printer friendly title found.'));
|
|
|
|
|
$node->body = str_replace('<!--break-->', '', $node->body);
|
|
|
|
|
$this->assertRaw(check_markup($node->body, $node->format), t('Printer friendly body found.'));
|
|
|
|
|
|
|
|
|
|
$number++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create a regular expression to check for the sub-nodes in the outline.
|
|
|
|
|
*
|
|
|
|
|
* @param array $nodes Nodes to check in outline.
|
|
|
|
|
*/
|
|
|
|
|
function generateOutlinePattern($nodes) {
|
|
|
|
|
$outline = '';
|
|
|
|
|
foreach ($nodes as $node) {
|
|
|
|
|
$outline .= '(node\/' . $node->nid . ')(.*?)(' . $node->title . ')(.*?)';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return '/<div id="book-navigation-' . $this->book->nid . '"(.*?)<ul(.*?)' . $outline . '<\/ul>/s';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create book node.
|
|
|
|
|
*
|
|
|
|
|
* @param integer $book_nid Book node id or set to 'new' to create new book.
|
|
|
|
|
* @param integer $parent Parent book reference id.
|
|
|
|
|
*/
|
|
|
|
|
function createBookNode($book_nid, $parent = NULL) {
|
2009-06-07 02:32:57 +00:00
|
|
|
|
// $number does not use drupal_static as it should not be reset
|
|
|
|
|
// since it uniquely identifies each call to createBookNode().
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
static $number = 0; // Used to ensure that when sorted nodes stay in same order.
|
|
|
|
|
|
|
|
|
|
$edit = array();
|
|
|
|
|
$edit['title'] = $number . ' - SimpleTest test node ' . $this->randomName(10);
|
|
|
|
|
$edit['body'] = 'SimpleTest test body ' . $this->randomName(32) . ' ' . $this->randomName(32);
|
|
|
|
|
$edit['book[bid]'] = $book_nid;
|
|
|
|
|
|
|
|
|
|
if ($parent !== NULL) {
|
|
|
|
|
$this->drupalPost('node/add/book', $edit, t('Change book (update list of parents)'));
|
|
|
|
|
|
|
|
|
|
$edit['book[plid]'] = $parent;
|
|
|
|
|
$this->drupalPost(NULL, $edit, t('Save'));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$this->drupalPost('node/add/book', $edit, t('Save'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Check to make sure the book node was created.
|
2008-12-05 22:18:46 +00:00
|
|
|
|
$node = $this->drupalGetNodeByTitle($edit['title']);
|
- Added a test framework to Drupal along with a first batch of tests for
Drupal core! This is an important milestone for the project so enable
the module and check it out ... :)
Thanks to Rok Žlender, Károly Négyesi, Jimmy Berry, Kevin Bridges, Charlie
Gordon, Douglas Hubler, Miglius Alaburda, Andy Kirkham, Dimitri13, Kieran
Lal, Moshe Weitzman, and the many other people that helped with testing
over the past years and that drove this home.
It all works but it is still rough around the edges (i.e. documentation
is still being written, the coding style is not 100% yet, a number of
tests still fail) but we spent the entire weekend working on it in Paris
and made a ton of progress. The best way to help and to get up to speed,
is to start writing and contributing some tests ... as well as fixing
some of the failures.
For those willing to help with improving the test framework, here are
some next steps and issues to resolve:
- How to best approach unit tests and mock functions?
- How to test drupal_mail() and drupal_http_request()?
- How to improve the admin UI so we have a nice progress bar?
- How best to do code coverage?
- See http://g.d.o/node/10099 for more ...
2008-04-20 18:24:07 +00:00
|
|
|
|
$this->assertNotNull(($node === FALSE ? NULL : $node), t('Book node found in database.'));
|
|
|
|
|
$number++;
|
|
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
|
}
|
|
|
|
|
}
|
2008-12-16 23:57:33 +00:00
|
|
|
|
|
|
|
|
|
class BookBlockTestCase extends DrupalWebTestCase {
|
2009-03-31 01:49:55 +00:00
|
|
|
|
public static function getInfo() {
|
2008-12-16 23:57:33 +00:00
|
|
|
|
return array(
|
|
|
|
|
'name' => t('Block availability'),
|
|
|
|
|
'description' => t('Check if the book navigation block is available.'),
|
|
|
|
|
'group' => t('Book'),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function setUp() {
|
|
|
|
|
parent::setUp('book');
|
|
|
|
|
|
|
|
|
|
// Create and login user
|
|
|
|
|
$admin_user = $this->drupalCreateUser(array('administer blocks'));
|
|
|
|
|
$this->drupalLogin($admin_user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function testBookNavigationBlock() {
|
|
|
|
|
// Set block title to confirm that the interface is availble.
|
|
|
|
|
$this->drupalPost('admin/build/block/configure/book/navigation', array('title' => $this->randomName(8)), t('Save block'));
|
|
|
|
|
$this->assertText(t('The block configuration has been saved.'), t('Block configuration set.'));
|
|
|
|
|
|
|
|
|
|
// Set the block to a region to confirm block is availble.
|
|
|
|
|
$edit = array();
|
|
|
|
|
$edit['book_navigation[region]'] = 'footer';
|
|
|
|
|
$this->drupalPost('admin/build/block', $edit, t('Save blocks'));
|
|
|
|
|
$this->assertText(t('The block settings have been updated.'), t('Block successfully move to footer region.'));
|
|
|
|
|
}
|
|
|
|
|
}
|