/** * Test SaveAssociated with Habtm relations and extra join table fields * * @return void */ public function testSaveAssociatedHabtmWithExtraJoinTableFields() { $this->loadFixtures('Something', 'SomethingElse', 'JoinThing'); $data = array('Something' => array('id' => 4, 'title' => 'Extra Fields', 'body' => 'Extra Fields Body', 'published' => '1'), 'SomethingElse' => array(array('something_else_id' => 1, 'doomed' => '1'), array('something_else_id' => 2, 'doomed' => '0'), array('something_else_id' => 3, 'doomed' => '1'))); $Something = new Something(); $result = $Something->saveAssociated($data); $this->assertFalse(empty($result)); $result = $Something->read(); $this->assertEquals(3, count($result['SomethingElse'])); $this->assertTrue(Set::matches('/Something[id=4]', $result)); $this->assertTrue(Set::matches('/SomethingElse[id=1]', $result)); $this->assertTrue(Set::matches('/SomethingElse[id=1]/JoinThing[something_else_id=1]', $result)); $this->assertTrue(Set::matches('/SomethingElse[id=1]/JoinThing[doomed=1]', $result)); $this->assertTrue(Set::matches('/SomethingElse[id=2]', $result)); $this->assertTrue(Set::matches('/SomethingElse[id=2]/JoinThing[something_else_id=2]', $result)); $this->assertTrue(Set::matches('/SomethingElse[id=2]/JoinThing[doomed=0]', $result)); $this->assertTrue(Set::matches('/SomethingElse[id=3]', $result)); $this->assertTrue(Set::matches('/SomethingElse[id=3]/JoinThing[something_else_id=3]', $result)); $this->assertTrue(Set::matches('/SomethingElse[id=3]/JoinThing[doomed=1]', $result)); }