/** * test that saveAll and with models with validation interact well * * @return void */ public function testValidatesWithModelsAndSaveAll() { $this->loadFixtures('Something', 'SomethingElse', 'JoinThing'); $data = array('Something' => array('id' => 5, 'title' => 'Extra Fields', 'body' => 'Extra Fields Body', 'published' => '1'), 'SomethingElse' => array(array('something_else_id' => 1, 'doomed' => ''))); $Something = new Something(); $JoinThing = $Something->JoinThing; $JoinThing->validate = array('doomed' => array('rule' => 'notEmpty')); $expectedError = array('doomed' => array('This field cannot be left blank')); $Something->create(); $result = $Something->saveAll($data, array('validate' => 'only')); $this->assertFalse($result); $result = $Something->validateAssociated($data); $this->assertFalse($result); $this->assertEquals($expectedError, $JoinThing->validationErrors); $result = $Something->validator()->validateAssociated($data); $this->assertFalse($result); $Something->create(); $result = $Something->saveAll($data, array('validate' => 'first')); $this->assertFalse($result); $this->assertEquals($expectedError, $JoinThing->validationErrors); $count = $Something->find('count', array('conditions' => array('Something.id' => $data['Something']['id']))); $this->assertSame(0, $count); $joinRecords = $JoinThing->find('count', array('conditions' => array('JoinThing.something_id' => $data['Something']['id']))); $this->assertEquals(0, $joinRecords, 'Records were saved on the join table. %s'); }