function testDiff_added_and_removed()
 {
     $bind_value_1 = new MockTracker_FormElement_Field_List_BindValue();
     $bind_value_1->setReturnValue('__toString', 'Sandra');
     $bind_value_1->setReturnValue('getLabel', 'Sandra');
     $bind_value_2 = new MockTracker_FormElement_Field_List_BindValue();
     $bind_value_2->setReturnValue('__toString', 'Manon');
     $bind_value_2->setReturnValue('getLabel', 'Manon');
     $open_value_3 = new MockTracker_FormElement_Field_List_OpenValue();
     $open_value_3->setReturnValue('__toString', 'Marc');
     $open_value_3->setReturnValue('getLabel', 'Marc');
     $open_value_4 = new MockTracker_FormElement_Field_List_OpenValue();
     $open_value_4->setReturnValue('__toString', 'Nicolas');
     $open_value_4->setReturnValue('getLabel', 'Nicolas');
     $field = new $this->field_class();
     $list_1 = new $this->changesetvalue_class(111, $field, false, array($open_value_3, $open_value_4));
     $list_2 = new $this->changesetvalue_class(111, $field, false, array($bind_value_1, $bind_value_2));
     $GLOBALS['Language'] = new MockBaseLanguage($this);
     $GLOBALS['Language']->setReturnValue('getText', 'removed', array('plugin_tracker_artifact', 'removed'));
     $GLOBALS['Language']->setReturnValue('getText', 'added', array('plugin_tracker_artifact', 'added'));
     $this->assertPattern('/Sandra, Manon removed/', $list_1->diff($list_2));
     $this->assertPattern('/Marc, Nicolas added/', $list_1->diff($list_2));
 }
 function testSoapValue()
 {
     $bv_1 = new MockTracker_FormElement_Field_List_BindValue();
     $bv_1->setReturnValue('getSoapValue', 'Jenny');
     $bv_2 = new MockTracker_FormElement_Field_List_BindValue();
     $bv_2->setReturnValue('getSoapValue', 'Bob');
     $bv_3 = new MockTracker_FormElement_Field_List_BindValue();
     $bv_3->setReturnValue('getSoapValue', 'Rob');
     $bv_4 = new MockTracker_FormElement_Field_List_BindValue();
     $bv_4->setReturnValue('getSoapValue', 'Anne');
     $field = new $this->field_class();
     $value_list = new $this->changesetvalue_class(111, $field, false, array($bv_1, $bv_2, $bv_3, $bv_4));
     $this->assertEqual($value_list->getSoapValue($this->user), array('bind_value' => array(array('bind_value_id' => '', 'bind_value_label' => "Jenny"), array('bind_value_id' => '', 'bind_value_label' => "Bob"), array('bind_value_id' => '', 'bind_value_label' => "Rob"), array('bind_value_id' => '', 'bind_value_label' => "Anne"))));
 }
 function testTransitionIsInvalidOnSubmit()
 {
     $artifact = new MockTracker_Artifact();
     $changeset = new MockTracker_Artifact_Changeset_Null();
     $bind = new MockTracker_FormElement_Field_List_Bind_Static();
     $workflow = new MockWorkflow();
     $tracker = new MockTracker();
     $user = mock('PFUser');
     $v1 = new MockTracker_FormElement_Field_List_BindValue();
     $v1->setReturnValue('__toString', '# 123');
     $v1->setReturnValue('getLabel', 'label1');
     $submitted_value_1 = '123';
     // $v1
     $v2 = new MockTracker_FormElement_Field_List_BindValue();
     $v2->setReturnValue('__toString', '# 456');
     $v2->setReturnValue('getLabel', 'label2');
     $submitted_value_2 = '456';
     // $v2
     stub($bind)->getAllValues()->returns(array($submitted_value_1 => null, $submitted_value_2 => null));
     $artifact->setReturnReference('getLastChangeset', $changeset);
     $bind->setReturnReference('getValue', $v2, array($submitted_value_2));
     // null -> v1
     // v1 -> v2
     // other are invalid
     $workflow->setReturnValue('isTransitionExist', true, array(null, $v1));
     $workflow->setReturnValue('isTransitionExist', true, array($v1, $v2));
     $workflow->setReturnValue('isTransitionExist', false);
     $field_list = new $this->field_class();
     $field_list->setReturnReference('getBind', $bind);
     $field_list->setReturnValue('fieldHasEnableWorkflow', true);
     $field_list->setReturnReference('getWorkflow', $workflow);
     $field_list->setReturnReference('getTracker', $tracker);
     $field_list->setReturnValue('permission_is_authorized', true);
     $field_list->setReturnValue('getCurrentUser', $user);
     $field_list->setReturnValue('getTransitionId', 1);
     $field_list->setReturnValue('isNone', false);
     $field_list->setReturnValue('isRequired', false);
     $changeset->setReturnReference('getValue', $changeset_value_list, array($field_list));
     // We try to change the field from null to v2 => invalid
     $this->assertFalse($field_list->isValid($artifact, $submitted_value_2));
 }
 function testSoapValue()
 {
     $bv_1 = new MockTracker_FormElement_Field_List_BindValue();
     $bv_1->setReturnValue('getLabel', 'Jenny');
     $bv_2 = new MockTracker_FormElement_Field_List_BindValue();
     $bv_2->setReturnValue('getLabel', 'Bob');
     $bv_3 = new MockTracker_FormElement_Field_List_BindValue();
     $bv_3->setReturnValue('getLabel', 'Rob');
     $bv_4 = new MockTracker_FormElement_Field_List_BindValue();
     $bv_4->setReturnValue('getLabel', 'Anne');
     $field = new $this->field_class();
     $value_list = new $this->changesetvalue_class(111, $field, false, array($bv_1, $bv_2, $bv_3, $bv_4));
     $this->assertEqual($value_list->getSoapValue(), "Jenny,Bob,Rob,Anne");
 }