function testAddRelatedRecord() { $fragrance = df_get_record('fragrances', array('fragrance_id' => '=1')); $this->assertTrue($fragrance instanceof Dataface_Record, 'Loaded fragrance should be a Dataface_Record object.'); $formulasRelationship = $fragrance->table()->getRelationship('formulas'); $this->assertTrue($formulasRelationship instanceof Dataface_Relationship, 'The formulas relationship does not exist or could not be loaded.'); $relatedRecord = new Dataface_RelatedRecord($fragrance, 'formulas'); $this->assertTrue(!$relatedRecord->isDirty('formula_name'), 'Record should not be dirty when it is first created.'); $formula = $relatedRecord->toRecord('formulas'); $this->assertTrue($formula instanceof Dataface_Record, 'Formula should be a Dataface_Record'); $records = $relatedRecord->toRecords(); $this->assertTrue($records[0] instanceof Dataface_Record, 'Formulas record from toRecords() should be of type Dataface_Record.'); $relatedRecord->setValues(array('formula_name' => 'Test formula', 'formula_description' => 'This is just a test formula', 'ingredients' => array(0 => array('ingredient_id' => 3, 'concentration' => 10, 'concentration_units' => 1, 'amount' => 10, 'amount_units' => 2, '__id__' => 'new', '__order__' => 0), '__loaded__' => 1))); $this->assertTrue($relatedRecord->isDirty('formula_name'), 'The formula name should be dirty before it is saved.'); $this->assertTrue($relatedRecord->isDirty('ingredients'), 'The ingredients should be dirty befor it is saved.'); $io = new Dataface_IO('fragrances'); $res = $io->addRelatedRecord($relatedRecord); $this->assertTrue(!PEAR::isError($res), 'The result of saving a related formula should not be an error.'); }