/** * @throws \ValidationException * @throws null */ public function testCallback_ManyConditions_CalledBack() { $dog = new Dog(); $dog->Name = 'Johnny'; $owner1 = new Human(); $owner1->Name = 'Bob'; $owner2 = new Human(); $owner2->Name = 'Wot'; $cat = new Cat(); $cat->Name = 'Agnis'; $afterExists = new \OnAfterExists(function () use($dog) { $dog->write(); }); $afterExists->addCondition($owner1, function ($owner) use($dog) { $dog->Name .= ' ' . $owner->Name; $dog->OwnerID = $owner->ID; }); $afterExists->addCondition($owner2, function ($owner) use($dog) { $dog->Name .= ' ' . $owner->Name; $dog->OwnerID = $owner->ID; }); $afterExists->addCondition($cat, function ($cat) use($dog) { $dog->Name .= ' ' . $cat->Name; }); $owner1->write(); $this->assertFalse($dog->exists()); $owner2->write(); $this->assertFalse($dog->exists()); $cat->write(); $this->assertTrue($dog->exists()); $this->assertEquals($owner2->ID, $dog->OwnerID); $this->assertEquals('Johnny Bob Wot Agnis', $dog->Name); }
/** * @throws \ValidationException * @throws null */ public function testBranchDeleteIDs_DeleteManyIDs_ObjectsDeleted() { $className = ''; $ids = array(); for ($i = 0; $i < 100; $i++) { $dog = new Dog(); $dog->Name = 'Pup ' . $i; $dog->Color = 'Fifty Shade No. ' . $i; $dog->write(); $className = $dog->ClassName; $ids[] = $dog->ID; } $batch = new \Batch(); $batch->deleteIDs($className, $ids); $this->assertEquals(0, Dog::get()->Count()); }
/** * @throws \ValidationException * @throws null */ public function testBatchWrite_ObjectExists_UpdatesObject() { $dog = new Dog(); $dog->Name = 'Harry'; $dog->Type = 'Trotter'; $dog->Color = 'Red'; $dog->write(); $dog->Name = 'Jimmy'; $dog->Color = 'Brown'; $batch = new \Batch(); $batch->write(array($dog)); $dog = Dog::get()->byID($dog->ID); $this->assertEquals('Jimmy', $dog->Name); $this->assertEquals('Trotter', $dog->Type); $this->assertEquals('Brown', $dog->Color); }
/** * @throws \ValidationException * @throws null */ public function testCallback_SetOnAfterExistsCallback_CallbackCalled() { $dog1 = new Dog(); $dog1->Name = 'Jim bob'; $dog2 = new Dog(); $dog2->Name = 'Super Dog'; $owner = new Human(); $owner->Name = 'Hilly Stewart'; $owner->write(); $owner->onAfterExistsCallback(function ($owner) use($dog1) { $dog1->OwnerID = $owner->ID; $dog1->write(); }); $owner->write(); $owner->onAfterExistsCallback(function ($owner) use($dog2) { $dog2->OwnerID = $owner->ID; $dog2->write(); }); $this->assertTrue($owner->exists()); $this->assertTrue($dog1->exists()); $this->assertTrue($dog2->exists()); $this->assertEquals(1, Human::get()->Count()); $this->assertEquals(2, Dog::get()->Count()); $this->assertEquals($owner->ID, $dog1->OwnerID); $this->assertEquals($owner->ID, $dog2->OwnerID); }