/** * */ public function testWrite_WriteManyObjects_SeedsAndObjectsWritten() { $this->markTestIncomplete('Need silverstripe-batchwrite compatibility.'); $batchSizes = array(10, 30, 100, 300); foreach ($batchSizes as $batchSize) { $writer = new BatchedSeedWriter($batchSize); for ($i = 0; $i < 100; $i++) { $dog = new Dog(); $dog->Name = 'Bob' . $i; $dog->Breed = 'Cavvy' . $i; $owner = new Human(); $owner->Name = 'Jim' . $i; $owner->onAfterExistsCallback(function ($owner) use($dog, $writer) { $dog->OwnerID = $owner->ID; $writer->write($dog, $this->createField()); }); $writer->write($owner, $this->createField()); } $writer->finish(); $dogSeeds = \SeedRecord::get()->filter('SeedClassName', 'Seeder\\Tests\\Dog'); $ownerSeeds = \SeedRecord::get()->filter('SeedClassName', 'Seeder\\Tests\\Human'); $dogs = Dog::get(); $owners = Human::get(); $this->assertEquals(100, $dogs->Count()); $this->assertEquals(100, $owners->Count()); $this->assertEquals(100, $dogSeeds->Count()); $this->assertEquals(100, $ownerSeeds->Count()); for ($i = 0; $i < 100; $i++) { $dog = $dogs[$i]; $owner = $owners[$i]; $ownerSeed = $ownerSeeds[$i]; $dogSeed = $dogSeeds[$i]; $this->assertEquals('Seeder\\Tests\\Dog', $dogSeed->SeedClassName); $this->assertEquals($dog->ID, $dogSeed->SeedID); $this->assertEquals('Seeder\\Tests\\Human', $ownerSeed->SeedClassName); $this->assertEquals($owner->ID, $ownerSeed->SeedID); } $writer->delete($dogs); $writer->delete($dogSeeds); $writer->delete($owners); $writer->delete($ownerSeeds); $writer->finish(); $this->assertEquals(0, Dog::get()->Count()); $this->assertEquals(0, Human::get()->Count()); $this->assertEquals(0, \SeedRecord::get()->Count()); } }