コード例 #1
0
 public function testSetUp()
 {
     $this->assertTrue(Propel::isInstancePoolingEnabled());
     $this->assertEquals(2, count($this->author->getBooks()));
     $this->assertEquals(2, $this->author->countBooks());
 }
コード例 #2
0
 /**
  * This tests to see whether modified objects are being silently overwritten by calls to fk accessor methods.
  * @link       http://propel.phpdb.org/trac/ticket/509#comment:5
  */
 public function testModifiedObjectOverwrite()
 {
     BookstoreDataPopulator::populate();
     $author = new Author();
     $author->setFirstName("John");
     $author->setLastName("Public");
     $books = $author->getBooks();
     // empty, of course
     $this->assertEquals(0, count($books), "Expected empty collection.");
     $book = new Book();
     $book->setTitle("A sample book");
     $book->setISBN("INITIAL ISBN");
     $author->addBook($book);
     $author->save();
     $book->setISBN("MODIFIED ISBN");
     $books = $author->getBooks();
     $this->assertEquals(1, count($books), "Expected 1 book.");
     $this->assertSame($book, $books[0], "Expected the same object to be returned by fk accessor.");
     $this->assertEquals("MODIFIED ISBN", $books[0]->getISBN(), "Expected the modified value NOT to have been overwritten.");
 }
コード例 #3
0
 public function testSetterOneToManyReplacesOldObjectsByNewObjects()
 {
     // Ensure no data
     BookQuery::create()->deleteAll();
     AuthorQuery::create()->deleteAll();
     $books = new ObjectCollection();
     foreach (array('foo', 'bar') as $title) {
         $b = new Book();
         $b->setTitle($title);
         $b->setISBN('FA404');
         $books[] = $b;
     }
     $a = new Author();
     $a->setFirstName('Chuck');
     $a->setLastName('Norris');
     $a->setBooks($books);
     $a->save();
     $books = $a->getBooks();
     $this->assertEquals('foo', $books[0]->getTitle());
     $this->assertEquals('bar', $books[1]->getTitle());
     $books = new ObjectCollection();
     foreach (array('bam', 'bom') as $title) {
         $b = new Book();
         $b->setTitle($title);
         $b->setISBN('FA404');
         $books[] = $b;
     }
     $a->setBooks($books);
     $a->save();
     $books = $a->getBooks();
     $this->assertEquals('bam', $books[0]->getTitle());
     $this->assertEquals('bom', $books[1]->getTitle());
     $this->assertEquals(1, AuthorQuery::create()->count());
     // the replaced book are still there because the PK is not required
     $this->assertEquals(4, BookQuery::create()->count());
 }
コード例 #4
0
 public function testDeletedBookDisappears()
 {
     $this->markTestSkipped();
     $a = new Author();
     $a->setFirstName("Douglas");
     $a->setLastName("Adams");
     $b1 = new Book();
     $b1->setTitle("The Hitchhikers Guide To The Galaxy");
     $b1->setISBN('FA404-1');
     $a->addBook($b1);
     $b2 = new Book();
     $b2->setTitle("The Restaurant At The End Of The Universe");
     $b1->setISBN('FA404-2');
     $a->addBook($b2);
     /* As you cannot write $a->remove($b2), you have to delete $b2
        directly. */
     /* All objects unsaved. As of revision 851, this circumvents the
        $colBooks cache. Anyway, fails because getBooks() never checks if
        a colBooks entry has been deleted. */
     $this->assertEquals(2, count($a->getBooks()));
     $b2->delete();
     $this->assertEquals(1, count($a->getBooks()));
     /* Even if we had saved everything before and the delete() had
        actually updated the DB, the $b2 would still be a "zombie" in
        $a's $colBooks field. */
 }
コード例 #5
0
 public function testSetterOneToManyReplacesOldObjectsByNewObjects()
 {
     // Ensure no data
     BookQuery::create()->deleteAll();
     AuthorQuery::create()->deleteAll();
     $books = new ObjectCollection();
     foreach (array('foo', 'bar') as $title) {
         $b = new Book();
         $b->setTitle($title);
         $books[] = $b;
     }
     $a = new Author();
     $a->setBooks($books);
     $a->save();
     $books = $a->getBooks();
     $this->assertEquals('foo', $books[0]->getTitle());
     $this->assertEquals('bar', $books[1]->getTitle());
     $books = new ObjectCollection();
     foreach (array('bam', 'bom') as $title) {
         $b = new Book();
         $b->setTitle($title);
         $books[] = $b;
     }
     $a->setBooks($books);
     $a->save();
     $books = $a->getBooks();
     $this->assertEquals('bam', $books[0]->getTitle());
     $this->assertEquals('bom', $books[1]->getTitle());
     $this->assertEquals(1, AuthorQuery::create()->count());
     $this->assertEquals(2, BookQuery::create()->count());
 }
コード例 #6
0
 public function testRemoveObjectOneToMany()
 {
     BookQuery::create()->deleteAll();
     AuthorQuery::create()->deleteAll();
     $book = new Book();
     $book->setISBN('012345');
     $book->setTitle('Propel Book');
     $book2 = new Book();
     $book2->setISBN('6789');
     $book2->setTitle('Propel2 Book');
     $author = new Author();
     $author->setFirstName('François');
     $author->setLastName('Z');
     $author->addBook($book);
     $author->addBook($book2);
     $this->assertCount(2, $author->getBooks());
     $author->removeBook($book);
     $books = $author->getBooks();
     $this->assertCount(1, $books);
     $this->assertEquals('Propel2 Book', $books->getFirst()->getTitle());
     $author->save();
     $book->save();
     $book2->save();
     $this->assertEquals(2, BookQuery::create()->count(), 'Two Book');
     $this->assertEquals(1, AuthorQuery::create()->count(), 'One Author');
     $this->assertEquals(1, BookQuery::create()->filterByAuthor($author)->count());
     $author->addBook($book);
     $author->save();
     $this->assertEquals(2, BookQuery::create()->filterByAuthor($author)->count());
     $author->removeBook($book2);
     $author->save();
     $this->assertEquals(1, BookQuery::create()->filterByAuthor($author)->count());
     $this->assertEquals(2, BookQuery::create()->count(), 'Two Book because FK is not required so book is not delete when removed from author\'s book collection');
 }