123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812 |
- <?php
- /**
- * This file is part of the Propel package.
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @license MIT License
- */
- /**
- * Simple test script for Propel drivers.
- *
- * This script will no do in-depth testing, but is designed to test whether drivers
- * are correctly performing basic operations -- SELECT, UPDATE, DELETE, limit support,
- * prepared query emulation, etc.
- *
- * IMPORTANT:
- *
- * Use this script with a clean version of the [example] bookstore database. If records
- * already exist, an error will be displayed.
- *
- * TODO:
- * A more advanced driver test system should be developed that could test capabilities
- * of driver-specific things like callable statements (stored procedures), etc. Perhaps break
- * functionality into class & provide ability to subclass.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Revision: 1612 $
- */
- // Setup configuration. It is expected that the bookstore-conf.php file exists in ../build/conf
- //
- error_reporting(E_ALL);
- $conf_path = realpath(dirname(__FILE__) . '/../projects/bookstore-packaged/build/conf/bookstore-packaged-conf.php');
- if (!file_exists($conf_path)) {
- print "Make sure that you specify properties in conf/bookstore-packaged.properties and "
- ."build propel before running this script.";
- exit;
- }
- // Add PHP_CLASSPATH, if set
- if (getenv("PHP_CLASSPATH")) {
- set_include_path(getenv("PHP_CLASSPATH") . PATH_SEPARATOR . get_include_path());
- }
- // Add build/classes/ and classes/ to path
- set_include_path(
- realpath(dirname(__FILE__) . '/../projects/bookstore-packaged/build/classes') . PATH_SEPARATOR .
- dirname(__FILE__) . '/../../runtime/classes' . PATH_SEPARATOR .
- get_include_path()
- );
- // Require classes.
- require_once 'propel/Propel.php';
- require_once 'author/Author.php';
- require_once 'publisher/Publisher.php';
- require_once 'book/Book.php';
- require_once 'review/Review.php';
- include_once 'media/Media.php';
- include_once 'log/BookstoreLog.php';
- include_once 'book_club_list/BookClubList.php';
- include_once 'book_club_list/BookListRel.php';
- include_once 'Benchmark/Timer.php';
- $timer = new Benchmark_Timer;
- $timer->start();
- // Some utility functions
- function boolTest($cond) {
- if ($cond) {
- return "[OK]\n";
- } else {
- return "[FAILED]\n";
- }
- }
- try {
- // Initialize Propel
- Propel::init($conf_path);
- } catch (Exception $e) {
- die("Error initializing propel: ". $e->__toString());
- }
- function check_tables_empty() {
- try {
- print "\nChecking to see that tables are empty\n";
- print "-------------------------------------\n\n";
- print "Ensuring that there are no records in [author] table: ";
- $res = AuthorPeer::doSelect(new Criteria());
- print boolTest(empty($res));
- print "Ensuring that there are no records in [publisher] table: ";
- $res2 = PublisherPeer::doSelect(new Criteria());
- print boolTest(empty($res2));
- print "Ensuring that there are no records in [book] table: ";
- $res3 = AuthorPeer::doSelect(new Criteria());
- print boolTest(empty($res3));
- print "Ensuring that there are no records in [review] table: ";
- $res4 = ReviewPeer::doSelect(new Criteria());
- print boolTest(empty($res4));
- print "Ensuring that there are no records in [media] table: ";
- $res5 = MediaPeer::doSelect(new Criteria());
- print boolTest(empty($res5));
- print "Ensuring that there are no records in [book_club_list] table: ";
- $res6 = BookClubListPeer::doSelect(new Criteria());
- print boolTest(empty($res6));
- print "Ensuring that there are no records in [book_x_list] table: ";
- $res7 = BookListRelPeer::doSelect(new Criteria());
- print boolTest(empty($res7));
- return (empty($res) && empty($res2) && empty($res3) && empty($res4) && empty($res5));
- } catch (Exception $e) {
- die("Error ensuring tables were empty: " . $e->__toString());
- }
- }
- // Check to see if records already exist in any of the three tables. If so, display an error
- // and exit.
- if (!check_tables_empty()) {
- die("Tables must be empty to perform these tests.");
- }
- // Add publisher records
- // ---------------------
- try {
- print "\nAdding some new publishers to the list\n";
- print "--------------------------------------\n\n";
- $scholastic = new Publisher();
- $scholastic->setName("Scholastic");
- // do not save, will do later to test cascade
- print "Added publisher \"Scholastic\" [not saved yet].\n";
- $morrow = new Publisher();
- $morrow->setName("William Morrow");
- $morrow->save();
- $morrow_id = $morrow->getId();
- print "Added publisher \"William Morrow\" [id = $morrow_id].\n";
- $penguin = new Publisher();
- $penguin->setName("Penguin");
- $penguin->save();
- $penguin_id = $penguin->getId();
- print "Added publisher \"Penguin\" [id = $penguin_id].\n";
- $vintage = new Publisher();
- $vintage->setName("Vintage");
- $vintage->save();
- $vintage_id = $vintage->getId();
- print "Added publisher \"Vintage\" [id = $vintage_id].\n";
- } catch (Exception $e) {
- die("Error adding publisher: " . $e->__toString());
- }
- // Add author records
- // ------------------
- try {
- print "\nAdding some new authors to the list\n";
- print "--------------------------------------\n\n";
- $rowling = new Author();
- $rowling->setFirstName("J.K.");
- $rowling->setLastName("Rowling");
- // no save()
- print "Added author \"J.K. Rowling\" [not saved yet].\n";
- $stephenson = new Author();
- $stephenson->setFirstName("Neal");
- $stephenson->setLastName("Stephenson");
- $stephenson->save();
- $stephenson_id = $stephenson->getId();
- print "Added author \"Neal Stephenson\" [id = $stephenson_id].\n";
- $byron = new Author();
- $byron->setFirstName("George");
- $byron->setLastName("Byron");
- $byron->save();
- $byron_id = $byron->getId();
- print "Added author \"George Byron\" [id = $byron_id].\n";
- $grass = new Author();
- $grass->setFirstName("Gunter");
- $grass->setLastName("Grass");
- $grass->save();
- $grass_id = $grass->getId();
- print "Added author \"Gunter Grass\" [id = $grass_id].\n";
- } catch (Exception $e) {
- die("Error adding author: " . $e->__toString());
- }
- // Add book records
- // ----------------
- try {
- print "\nAdding some new books to the list\n";
- print "-------------------------------------\n\n";
- $phoenix = new Book();
- $phoenix->setTitle("Harry Potter and the Order of the Phoenix");
- $phoenix->setISBN("043935806X");
- print "Trying cascading save (Harry Potter): ";
- $phoenix->setAuthor($rowling);
- $phoenix->setPublisher($scholastic);
- $phoenix->save();
- $phoenix_id = $phoenix->getId();
- print boolTest(true);
- print "Added book \"Harry Potter and the Order of the Phoenix\" [id = $phoenix_id].\n";
- $qs = new Book();
- $qs->setISBN("0380977427");
- $qs->setTitle("Quicksilver");
- $qs->setAuthor($stephenson);
- $qs->setPublisher($morrow);
- $qs->save();
- $qs_id = $qs->getId();
- print "Added book \"Quicksilver\" [id = $qs_id].\n";
- $dj = new Book();
- $dj->setISBN("0140422161");
- $dj->setTitle("Don Juan");
- $dj->setAuthor($byron);
- $dj->setPublisher($penguin);
- $dj->save();
- $dj_id = $qs->getId();
- print "Added book \"Don Juan\" [id = $dj_id].\n";
- $td = new Book();
- $td->setISBN("067972575X");
- $td->setTitle("The Tin Drum");
- $td->setAuthor($grass);
- $td->setPublisher($vintage);
- $td->save();
- $td_id = $td->getId();
- print "Added book \"The Tin Drum\" [id = $dj_id].\n";
- } catch (Exception $e) {
- die("Error saving book: " . $e->__toString());
- }
- // Add review records
- // ------------------
- try {
- print "\nAdding some book reviews to the list\n";
- print "------------------------------------\n\n";
- $r1 = new Review();
- $r1->setBook($phoenix);
- $r1->setReviewedBy("Washington Post");
- $r1->setRecommended(true);
- $r1->setReviewDate(time());
- $r1->save();
- $r1_id = $r1->getId();
- print "Added Washington Post book review [id = $r1_id].\n";
- $r2 = new Review();
- $r2->setBook($phoenix);
- $r2->setReviewedBy("New York Times");
- $r2->setRecommended(false);
- $r2->setReviewDate(time());
- $r2->save();
- $r2_id = $r2->getId();
- print "Added New York Times book review [id = $r2_id].\n";
- } catch (Exception $e) {
- die("Error saving book review: " . $e->__toString());
- }
- // Perform a "complex" search
- // --------------------------
- try {
- print "\nDoing complex search on books\n";
- print "-----------------------------\n\n";
- $crit = new Criteria();
- $crit->add(BookPeer::TITLE, 'Harry%', Criteria::LIKE);
- print "Looking for \"Harry%\": ";
- $results = BookPeer::doSelect($crit);
- print boolTest(count($results) === 1);
- $crit2 = new Criteria();
- $crit2->add(BookPeer::ISBN, array("0380977427", "0140422161"), Criteria::IN);
- $results = BookPeer::doSelect($crit2);
- print "Looking for ISBN IN (\"0380977427\", \"0140422161\"): ";
- print boolTest(count($results) === 2);
- } catch (Exception $e) {
- die("Error while performing complex query: " . $e->__toString());
- }
- // Perform a "limit" search
- // ------------------------
- try {
- print "\nDoing LIMITed search on books\n";
- print "-----------------------------\n\n";
- $crit = new Criteria();
- $crit->setLimit(2);
- $crit->setOffset(1);
- $crit->addAscendingOrderByColumn(BookPeer::TITLE);
- print "Checking to make sure correct number returned: ";
- $results = BookPeer::doSelect($crit);
- print boolTest(count($results) === 2);
- print "Checking to make sure correct books returned: ";
- // we ordered on book title, so we expect to get
- print boolTest( $results[0]->getTitle() == "Harry Potter and the Order of the Phoenix" && $results[1]->getTitle() == "Quicksilver" );
- } catch (Exception $e) {
- die("Error while performing LIMIT query: " . $e->__toString());
- }
- // Perform a lookup & update!
- // --------------------------
- try {
- print "\nUpdating just-created book title\n";
- print "--------------------------------\n\n";
- print "First finding book by PK (=$qs_id) .... ";
- try {
- $qs_lookup = BookPeer::retrieveByPk($qs_id);
- } catch (Exception $e) {
- print "ERROR!\n";
- die("Error retrieving by pk: " . $e->__toString());
- }
- if ($qs_lookup) {
- print "FOUND!\n";
- } else {
- print "NOT FOUND :(\n";
- die("Couldn't find just-created book: book_id = $qs_id");
- }
- try {
- $new_title = "Quicksilver (".crc32(uniqid(rand())).")";
- print "Attempting to update found object (".$qs_lookup->getTitle()." -> ".$new_title."): ";
- $qs_lookup->setTitle($new_title);
- $qs_lookup->save();
- print boolTest(true);
- } catch (Exception $e) {
- die("Error saving (updating) book: " . $e->__toString());
- }
- print "Making sure object was correctly updated: ";
- $qs_lookup2 = BookPeer::retrieveByPk($qs_id);
- print boolTest($qs_lookup2->getTitle() == $new_title);
- } catch (Exception $e) {
- die("Error updating book: " . $e->__toString());
- }
- // Test some basic DATE / TIME stuff
- // ---------------------------------
- try {
- print "\nTesting the DATE/TIME columns\n";
- print "-----------------------------\n\n";
- // that's the control timestamp.
- $control = strtotime('2004-02-29 00:00:00');
- // should be two in the db
- $r = ReviewPeer::doSelectOne(new Criteria());
- $r_id = $r->getId();
- $r->setReviewDate($control);
- $r->save();
- $r2 = ReviewPeer::retrieveByPk($r_id);
- print "Checking ability to fetch native unix timestamp: ";
- print boolTest($r2->getReviewDate(null) === $control);
- print "Checking ability to use date() formatter: ";
- print boolTest($r2->getReviewDate('n-j-Y') === '2-29-2004');
- print "[FYI] Here's the strftime() formatter for current locale: " . $r2->getReviewDate('%x') . "\n";
- } catch (Exception $e) {
- die("Error test date/time: " . $e->__toString());
- }
- // Handle BLOB/CLOB Columns
- // ------------------------
- try {
- print "\nTesting the BLOB/CLOB columns\n";
- print "-------------------------------\n\n";
- $blob_path = dirname(__FILE__) . '/etc/lob/tin_drum.gif';
- $blob2_path = dirname(__FILE__) . '/etc/lob/propel.gif';
- $clob_path = dirname(__FILE__) . '/etc/lob/tin_drum.txt';
- $m1 = new Media();
- $m1->setBook($phoenix);
- $m1->setCoverImage(file_get_contents($blob_path));
- $m1->setExcerpt(file_get_contents($clob_path));
- $m1->save();
- $m1_id = $m1->getId();
- print "Added Media collection [id = $m1_id].\n";
- print "Looking for just-created mediat by PK (=$m1_id) .... ";
- try {
- $m1_lookup = MediaPeer::retrieveByPk($m1_id);
- } catch (Exception $e) {
- print "ERROR!\n";
- die("Error retrieving media by pk: " . $e->__toString());
- }
- if ($m1_lookup) {
- print "FOUND!\n";
- } else {
- print "NOT FOUND :(\n";
- die("Couldn't find just-created media item: media_id = $m1_id");
- }
- print "Making sure BLOB was correctly updated: ";
- print boolTest( $m1_lookup->getCoverImage()->getContents() === file_get_contents($blob_path));
- print "Making sure CLOB was correctly updated: ";
- print boolTest((string) $m1_lookup->getExcerpt()->getContents() === file_get_contents($clob_path));
- // now update the BLOB column and save it & check the results
- $b = $m1_lookup->getCoverImage();
- $b->setContents(file_get_contents($blob2_path));
- $m1_lookup->setCoverImage($b);
- $m1_lookup->save();
- try {
- $m2_lookup = MediaPeer::retrieveByPk($m1_id);
- } catch (Exception $e) {
- print "ERROR!\n";
- die("Error retrieving media by pk: " . $e->__toString());
- }
- print "Making sure BLOB was correctly overwritten: ";
- print boolTest($m2_lookup->getCoverImage()->getContents() === file_get_contents($blob2_path));
- } catch (Exception $e) {
- die("Error doing blob/clob updates: " . $e->__toString());
- }
- // Test Validators
- // ---------------
- try {
- print "\nTesting the column validators\n";
- print "-----------------------------\n\n";
- $bk1 = new Book();
- $bk1->setTitle("12345"); // min length is 10
- $ret = $bk1->validate();
- print "Making sure validation failed: ";
- print boolTest($ret !== true);
- print "Making sure 1 validation message was returned: ";
- print boolTest(count($ret) === 1);
- print "Making sure expected validation message was returned: ";
- $el = array_shift($ret);
- print boolTest(stripos($el->getMessage(), "must be more than") !== false);
- print "\n(Unique validator)\n";
- $bk2 = new Book();
- $bk2->setTitle("Don Juan");
- $ret = $bk2->validate();
- print "Making sure validation failed: ";
- print boolTest($ret !== true);
- print "Making sure 1 validation message was returned: ";
- print boolTest(count($ret) === 1);
- print "Making sure expected validation message was returned: ";
- $el = array_shift($ret);
- print boolTest(stripos($el->getMessage(), "Book title already in database.") !== false);
- print "\n(Now trying some more complex validation.)\n";
- $auth1 = new Author();
- $auth1->setFirstName("Hans");
- // last name required; will fail
- $bk1->setAuthor($auth1);
- $rev1 = new Review();
- $rev1->setReviewDate("08/09/2001");
- // will fail: reviewed_by column required
- $bk1->addReview($rev1);
- $ret2 = $bk1->validate();
- print "Making sure 6 validation messages were returned: ";
- print boolTest(count($ret2) === 6);
- print "Making sure correct columns failed: ";
- print boolTest(array_keys($ret2) === array(
- AuthorPeer::LAST_NAME,
- AuthorPeer::EMAIL,
- AuthorPeer::AGE,
- BookPeer::TITLE,
- ReviewPeer::REVIEWED_BY,
- ReviewPeer::STATUS
- ));
- $bk2 = new Book();
- $bk2->setTitle("12345678901"); // passes
- $auth2 = new Author();
- $auth2->setLastName("Blah"); //passes
- $auth2->setEmail("some@body.com"); //passes
- $auth2->setAge(50); //passes
- $bk2->setAuthor($auth2);
- $rev2 = new Review();
- $rev2->setReviewedBy("Me!"); // passes
- $rev2->setStatus("new"); // passes
- $bk2->addReview($rev2);
- $ret3 = $bk2->validate();
- print "Making sure complex validation can pass: ";
- print boolTest($ret3 === true);
- } catch (Exception $e) {
- die("Error doing validation tests: " . $e->__toString());
- }
- // Test doCount()
- //
- try {
- print "\nTesting doCount() functionality\n";
- print "-------------------------------\n\n";
- $c = new Criteria();
- $records = BookPeer::doSelect($c);
- $count = BookPeer::doCount($c);
- print "Making sure correct number of results: ";
- print boolTest(count($records) === $count);
- } catch (Exception $e) {
- die("Error deleting book: " . $e->__toString());
- }
- // Test many-to-many relationships
- // ---------------
- try {
- print "\nTesting many-to-many relationships\n";
- print "-----------------------------\n\n";
- // init book club list 1 with 2 books
- $blc1 = new BookClubList();
- $blc1->setGroupLeader("Crazyleggs");
- $blc1->setTheme("Happiness");
- $brel1 = new BookListRel();
- $brel1->setBook($phoenix);
- $brel2 = new BookListRel();
- $brel2->setBook($dj);
- $blc1->addBookListRel($brel1);
- $blc1->addBookListRel($brel2);
- $blc1->save();
- print "Making sure BookClubList 1 was saved: ";
- print boolTest(!is_null($blc1->getId()));
- // init book club list 2 with 1 book
- $blc2 = new BookClubList();
- $blc2->setGroupLeader("John Foo");
- $blc2->setTheme("Default");
- $brel3 = new BookListRel();
- $brel3->setBook($phoenix);
- $blc2->addBookListRel($brel3);
- $blc2->save();
- print "Making sure BookClubList 2 was saved: ";
- print boolTest(!is_null($blc2->getId()));
- // re-fetch books and lists from db to be sure that nothing is cached
- $crit = new Criteria();
- $crit->add(BookPeer::ID, $phoenix->getId());
- $phoenix = BookPeer::doSelectOne($crit);
- print "Making sure book 'phoenix' has been re-fetched from db: ";
- print boolTest(!empty($phoenix));
- $crit = new Criteria();
- $crit->add(BookClubListPeer::ID, $blc1->getId());
- $blc1 = BookClubListPeer::doSelectOne($crit);
- print "Making sure BookClubList 1 has been re-fetched from db: ";
- print boolTest(!empty($blc1));
- $crit = new Criteria();
- $crit->add(BookClubListPeer::ID, $blc2->getId());
- $blc2 = BookClubListPeer::doSelectOne($crit);
- print "Making sure BookClubList 2 has been re-fetched from db: ";
- print boolTest(!empty($blc2));
- $relCount = $phoenix->countBookListRels();
- print "Making sure book 'phoenix' has 2 BookListRels: ";
- print boolTest($relCount == 2);
- $relCount = $blc1->countBookListRels();
- print "Making sure BookClubList 1 has 2 BookListRels: ";
- print boolTest($relCount == 2);
- $relCount = $blc2->countBookListRels();
- print "Making sure BookClubList 2 has 1 BookListRel: ";
- print boolTest($relCount == 1);
- } catch (Exception $e) {
- die("Error doing many-to-many relationships tests: " . $e->__toString());
- }
- // Test multiple databases
- // ---------------
- try {
- print "\nTesting multiple databases\n";
- print "-----------------------------\n\n";
- $line = new BookstoreLog();
- $line->setIdent('bookstore-packaged-test');
- $line->setTime(time());
- $line->setMessage('We are testing to write something to the log database ...');
- $line->setPriority('debug');
- $line->save();
- $line_id = $line->getId();
- print "Making sure BookstoreLog was saved: ";
- print boolTest(!empty($line_id));
- } catch (Exception $e) {
- die("Error doing multiple databases tests: " . $e->__toString());
- }
- // Cleanup (tests DELETE)
- // ----------------------
- try {
- print "\nRemoving books that were just created\n";
- print "-------------------------------------\n\n";
- print "First finding book by PK (=$phoenix_id) .... ";
- try {
- $hp = BookPeer::retrieveByPk($phoenix_id);
- } catch (Exception $e) {
- print "ERROR!\n";
- die("Error retrieving by pk: " . $e->__toString());
- }
- if ($hp) {
- print "FOUND!\n";
- } else {
- print "NOT FOUND :(\n";
- die("Couldn't find just-created book: book_id = $phoenix_id");
- }
- print "Attempting to delete [multi-table] by found pk: ";
- $c = new Criteria();
- $c->add(BookPeer::ID, $hp->getId());
- // The only way for cascading to work currently
- // is to specify the author_id and publisher_id (i.e. the fkeys
- // have to be in the criteria).
- $c->add(AuthorPeer::ID, $hp->getId());
- $c->add(PublisherPeer::ID, $hp->getId());
- $c->setSingleRecord(true);
- BookPeer::doDelete($c);
- print boolTest(true);
- print "Checking to make sure correct records were removed.\n";
- print "\tFrom author table: ";
- $res = AuthorPeer::doSelect(new Criteria());
- print boolTest(count($res) === 3);
- print "\tFrom publisher table: ";
- $res2 = PublisherPeer::doSelect(new Criteria());
- print boolTest(count($res2) === 3);
- print "\tFrom book table: ";
- $res3 = BookPeer::doSelect(new Criteria());
- print boolTest(count($res3) === 3);
- print "Attempting to delete books by complex criteria: ";
- $c = new Criteria();
- $cn = $c->getNewCriterion(BookPeer::ISBN, "043935806X");
- $cn->addOr($c->getNewCriterion(BookPeer::ISBN, "0380977427"));
- $cn->addOr($c->getNewCriterion(BookPeer::ISBN, "0140422161"));
- $c->add($cn);
- BookPeer::doDelete($c);
- print boolTest(true);
- print "Attempting to delete book [id = $td_id]: ";
- $td->delete();
- print boolTest(true);
- print "Attempting to delete author [id = $stephenson_id]: ";
- AuthorPeer::doDelete($stephenson_id);
- print boolTest(true);
- print "Attempting to delete author [id = $byron_id]: ";
- AuthorPeer::doDelete($byron_id);
- print boolTest(true);
- print "Attempting to delete author [id = $grass_id]: ";
- $grass->delete();
- print boolTest(true);
- print "Attempting to delete publisher [id = $morrow_id]: ";
- PublisherPeer::doDelete($morrow_id);
- print boolTest(true);
- print "Attempting to delete publisher [id = $penguin_id]: ";
- PublisherPeer::doDelete($penguin_id);
- print boolTest(true);
- print "Attempting to delete publisher [id = $vintage_id]: ";
- $vintage->delete();
- print boolTest(true);
- // These have to be deleted manually also since we have onDelete
- // set to SETNULL in the foreign keys in book. Is this correct?
- print "Attempting to delete author [lastname = 'Rowling']: ";
- $rowling->delete();
- print boolTest(true);
- print "Attempting to delete publisher [lastname = 'Scholastic']: ";
- $scholastic->delete();
- print boolTest(true);
- print "Attempting to delete BookClubList 1: ";
- $blc1->delete();
- print boolTest(true);
- print "Attempting to delete BookClubList 2: ";
- $blc2->delete();
- print boolTest(true);
- } catch (Exception $e) {
- die("Error deleting book: " . $e->__toString());
- }
- // Check again to make sure that tables are empty
- // ----------------------------------------------
- check_tables_empty();
- $timer->stop();
- print $timer->display();
|