/** * 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()))); }
public function testManyToManySetterIsNotLoosingAnyReference() { $list1 = new BookClubList(); $list2 = new BookClubList(); $book = new Book(); $book->addBookClubList($list1); $book->addBookClubList($list2); $lists = $book->getBookClubLists(); $this->assertCount(2, $lists, 'setRelCol is losing references to referenced object'); $rels = $book->getBookListRels(); $this->assertCount(2, $rels, 'setRelCol is losing references to relation object'); foreach ($rels as $rel) { $this->assertNotNull($rel->getBook(), 'setRelCol is losing backreference on set relation to local object'); $this->assertNotNull($rel->getBookClubList(), 'setRelCol is losing backreference on set relation to referenced object'); } foreach ($lists as $list) { $this->assertCount(1, $list->getBooks(), 'setRelCol is losing backreference on set objects'); } }