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()); }
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()); }