/**
  * 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));
 }