ManageContentFormTest.php #1

  • //
  • guest/
  • perforce_software/
  • chronicle/
  • main/
  • application/
  • workflow/
  • tests/
  • ManageContentFormTest.php
  • View
  • Commits
  • Open Download .zip Download (5 KB)
<?php
/**
 * Test the manage content form.
 *
 * @copyright   2012 Perforce Software. All rights reserved.
 * @license     Please see LICENSE.txt in top-level folder of this distribution.
 * @version     <release>/<patch>
 */
class Workflow_Test_ManageContentFormTest extends ModuleTest
{
    /**
     * Test generating workflow state options.
     */
    public function testStateOptions()
    {
        // create several workflows
        Workflow_Model_Workflow::store(
            array(
                'id'        => 'w1',
                'label'     => 'workflow 1',
                'states'    => array(
                    'a' => array('label' => 'W1 A'),
                    'b' => array('label' => 'B'),
                    'c' => array('label' => 'W1 C'),
                )
            )
        );
        Workflow_Model_Workflow::store(
            array(
                'id'        => 'w2',
                'label'     => 'workflow 2',
                'states'    => array(
                    'c' => array('label' => 'W2 C'),
                    'b' => array('label' => 'B'),
                    'x' => array('label' => 'W2 X'),
                    'y' => array('label' => 'W2 Y'),
                )
            )
        );
        Workflow_Model_Workflow::store(
            array(
                'id'        => 'w3',
                'label'     => 'workflow 3',
                'states'    => array(
                    'b' => array('label' => 'W3 B'),
                    'x' => array('label' => 'W3 X'),
                    'z' => array('label' => 'W3 Z'),
                )
            )
        );
        Workflow_Model_Workflow::store(
            array(
                'id'        => 'w4',
                'label'     => 'workflow 4',
                'states'    => array(
                    'x' => array('label' => 'W4 X'),
                    'y' => array('label' => 'W4 Y'),
                    'z' => array('label' => 'W4 Z'),
                    'u' => array('label' => 'W4 U'),
                    'v' => array('label' => 'W4 V'),
                )
            )
        );

        // define tests
        $tests = array(
            array(
                'line'              => __LINE__,
                'workflows'         => array(),
                'expectedStates'    => array()
            ),
            array(
                'line'              => __LINE__,
                'workflows'         => null,
                'expectedStates'    => array()
            ),
            array(
                'line'              => __LINE__,
                'workflows'         => '',
                'expectedStates'    => array()
            ),
            array(
                'line'              => __LINE__,
                'workflows'         => array(null),
                'expectedStates'    => array()
            ),
            array(
                'line'              => __LINE__,
                'workflows'         => array('not-exist', 'undefined'),
                'expectedStates'    => array()
            ),
            array(
                'line'              => __LINE__,
                'workflows'         => array('w1'),
                'expectedStates'    => array(
                    'a' => 'W1 A',
                    'b' => 'B',
                    'c' => 'W1 C'
                )
            ),
            array(
                'line'              => __LINE__,
                'workflows'         => 'w1',
                'expectedStates'    => array(
                    'a' => 'W1 A',
                    'b' => 'B',
                    'c' => 'W1 C'
                )
            ),
            array(
                'line'              => __LINE__,
                'workflows'         => array('w1', 'w1', 'w1'),
                'expectedStates'    => array(
                    'a' => 'W1 A',
                    'b' => 'B',
                    'c' => 'W1 C'
                )
            ),
            array(
                'line'              => __LINE__,
                'workflows'         => array('w1', 'w2'),
                'expectedStates'    => array(
                    'b' => 'B',
                    'c' => 'W1 C / W2 C'
                )
            ),
            array(
                'line'              => __LINE__,
                'workflows'         => array('w1', 'w4'),
                'expectedStates'    => array()
            ),
            array(
                'line'              => __LINE__,
                'workflows'         => array('w2', 'w3'),
                'expectedStates'    => array(
                    'b' => 'B / W3 B',
                    'x' => 'W2 X / W3 X'
                )
            ),
            array(
                'line'              => __LINE__,
                'workflows'         => array('w2', 'w3', 'w4'),
                'expectedStates'    => array(
                    'x' => 'W2 X / W3 X / W4 X'
                )
            )
        );

        // run tests
        foreach ($tests as $test) {
            $form = new Workflow_Form_ManageContent(array('workflows' => $test['workflows']));
            $this->assertSame(
                $test['expectedStates'],
                $form->getStateOptions(),
                "Unexpected state options for test on line: " . $test['line']
            );
        }
    }
}
# Change User Description Committed
#1 16170 perforce_software Move Chronicle files to follow new path scheme for branching.
//guest/perforce_software/chronicle/application/workflow/tests/ManageContentFormTest.php
#1 8972 Matt Attaway Initial add of the Chronicle source code