function testSetSaveUpdateData() { /** * Testing saving a new record (order not specified) sets order to highest + 1 */ $Item = new Item(); $data = array('Item' => array('name' => 'Item F')); $Item->data = $data; $Item->setSaveUpdateData(); $data['Item']['order'] = 5; $this->assertEqual($Item->data, $data); /** * Test saving new record with order specified, sets Sequence::update array */ $Item->data['Item']['order'] = 3; $Item->setSaveUpdateData(); $expected = array('action' => array('`Item`.`order`' => '`Item`.`order` + 1'), 'conditions' => array('`Item`.`order` >=' => 3)); $this->assertEqual($Item->Behaviors->Sequence->update, $expected); /** * Test editing record with new order */ $Item->id = 4; $Item->data['Item']['order'] = 1; $Item->setSaveUpdateData(); $expected = array('action' => array('`Item`.`order`' => '`Item`.`order` + 1'), 'conditions' => array(array('`Item`.`order` >=' => 1), array('`Item`.`order` <' => 3))); $this->assertEqual($Item->Behaviors->Sequence->update, $expected); /** * Testing saving a new record (order not specified) sets order to highest + 1 */ $GroupedItem = new GroupedItem(); $data = array('GroupedItem' => array('name' => 'Group 2 Item F', 'group_field' => 2)); $GroupedItem->data = $data; $GroupedItem->setSaveUpdateData(); $data['GroupedItem']['order'] = 5; $this->assertEqual($GroupedItem->data, $data); /** * Test saving new record with order specified, sets Sequence::update array */ $GroupedItem->data['GroupedItem']['order'] = 3; $GroupedItem->setSaveUpdateData(); $expected = array('action' => array('`GroupedItem`.`order`' => '`GroupedItem`.`order` + 1'), 'conditions' => array('`GroupedItem`.`order` >=' => 3)); $this->assertEqual($GroupedItem->Behaviors->Sequence->update, $expected); /** * Test editing record with new order */ $GroupedItem = new GroupedItem(); $GroupedItem->id = 4; $GroupedItem->data['GroupedItem']['order'] = 1; $GroupedItem->setSaveUpdateData(); $expected = array('action' => array('`GroupedItem`.`order`' => '`GroupedItem`.`order` + 1'), 'conditions' => array(array('`GroupedItem`.`order` >=' => 1), array('`GroupedItem`.`order` <' => 3))); $this->assertEqual($GroupedItem->Behaviors->Sequence->update, $expected); /** * Test editing group */ $GroupedItem = new GroupedItem(); $GroupedItem->id = 2; $GroupedItem->data['GroupedItem']['group_field'] = 2; $GroupedItem->setSaveUpdateData(); $expected = array('action' => array('`GroupedItem`.`order`' => '`GroupedItem`.`order` - 1'), 'conditions' => array('`GroupedItem`.`order` >=' => 1)); $this->assertEqual($GroupedItem->Behaviors->Sequence->update, $expected); $expected = array('GroupedItem' => array('group_field' => 2, 'order' => 5)); $this->assertEqual($GroupedItem->data, $expected); /** * Testing saving a new record (order not specified) sets order to highest + 1 */ $MultiGroupedItem = new MultiGroupedItem(); $data = array('MultiGroupedItem' => array('name' => 'Group1 1 Group2 1 Item F', 'group_field_1' => 1, 'group_field_2' => 1)); $MultiGroupedItem->data = $data; $MultiGroupedItem->setSaveUpdateData(); $data['MultiGroupedItem']['order'] = 5; $this->assertEqual($MultiGroupedItem->data, $data); /** * Test saving new record with order specified, sets Sequence::update array */ $MultiGroupedItem->data['MultiGroupedItem']['order'] = 3; $MultiGroupedItem->setSaveUpdateData(); $expected = array('action' => array('`MultiGroupedItem`.`order`' => '`MultiGroupedItem`.`order` + 1'), 'conditions' => array('`MultiGroupedItem`.`order` >=' => 3)); $this->assertEqual($MultiGroupedItem->Behaviors->Sequence->update, $expected); /** * Test editing record with new order */ $MultiGroupedItem = new MultiGroupedItem(); $MultiGroupedItem->id = 4; $MultiGroupedItem->data['MultiGroupedItem']['order'] = 1; $MultiGroupedItem->setSaveUpdateData(); $expected = array('action' => array('`MultiGroupedItem`.`order`' => '`MultiGroupedItem`.`order` + 1'), 'conditions' => array(array('`MultiGroupedItem`.`order` >=' => 1), array('`MultiGroupedItem`.`order` <' => 3))); $this->assertEqual($MultiGroupedItem->Behaviors->Sequence->update, $expected); /** * Test editing group */ $MultiGroupedItem = new MultiGroupedItem(); $MultiGroupedItem->id = 2; $MultiGroupedItem->data['MultiGroupedItem']['group_field_1'] = 2; $MultiGroupedItem->data['MultiGroupedItem']['group_field_2'] = 2; $MultiGroupedItem->setSaveUpdateData(); $expected = array('action' => array('`MultiGroupedItem`.`order`' => '`MultiGroupedItem`.`order` - 1'), 'conditions' => array('`MultiGroupedItem`.`order` >=' => 1)); $this->assertEqual($MultiGroupedItem->Behaviors->Sequence->update, $expected); $expected = array('MultiGroupedItem' => array('group_field_1' => 2, 'group_field_2' => 2, 'order' => 5)); $this->assertEqual($MultiGroupedItem->data, $expected); }