public function testManyToManyAdd() { $list = new BookClubList(); $list->setGroupLeader('Archimedes Q. Porter'); $book = new Book(); $book->setTitle("Jungle Expedition Handbook"); $book->setISBN('TEST'); $list->addBook($book); $this->assertEquals(1, $list->countBooks(), 'addCrossFk() sets the internal collection properly'); $this->assertEquals(1, $list->countBookListRels(), 'addCrossFk() sets the internal cross reference collection properly'); $list->save(); $this->assertFalse($book->isNew(), 'related object is saved if added'); $rels = $list->getBookListRels(); $rel = $rels[0]; $this->assertFalse($rel->isNew(), 'cross object is saved if added'); $list->clearBookListRels(); $list->clearBooks(); $books = $list->getBooks(); $expected = new PropelObjectCollection(array($book)); $expected->setModel('Book'); $this->assertEquals($expected, $books, 'addCrossFk() adds the object properly'); $this->assertEquals(1, $list->countBookListRels()); }
/** * Tests reverse setting of relationships, saving one of the objects first. * @link http://propel.phpdb.org/trac/ticket/508 */ public function testManyToMany_Dir2_Saved() { $list = new BookClubList(); $list->setGroupLeader('Archimedes Q. Porter'); $list->save(); $book = new Book(); $book->setTitle("Jungle Expedition Handbook"); $book->setISBN('TEST'); // No save (yet) ... $this->assertEquals(0, count($list->getBookListRels())); $this->assertEquals(0, count($book->getBookListRels())); $this->assertEquals(0, count(BookListRelPeer::doSelect(new Criteria()))); // Now set the relationship from the opposite direction. $xref = new BookListRel(); $xref->setBookClubList($list); $book->addBookListRel($xref); $this->assertEquals(1, count($list->getBookListRels())); $this->assertEquals(1, count($book->getBookListRels())); $this->assertEquals(0, count(BookListRelPeer::doSelect(new Criteria()))); $book->save(); $this->assertEquals(1, count($list->getBookListRels())); $this->assertEquals(1, count($book->getBookListRels())); $this->assertEquals(1, count(BookListRelPeer::doSelect(new Criteria()))); }