/** * Factory method to create a sorting state from a given session array * * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder * @param array $sessionArray * @return Tx_PtExtlist_Domain_Model_Sorting_SortingStateCollection */ public static function getInstanceBySessionArray(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder, array $sessionArray) { $sortingStateCollection = new Tx_PtExtlist_Domain_Model_Sorting_SortingStateCollection(); foreach ($sessionArray as $sortingStateSessionArray) { $sortingStateCollection->addSortingState(Tx_PtExtlist_Domain_Model_Sorting_SortingState::getInstanceBySessionArray($configurationBuilder, $sortingStateSessionArray)); } return $sortingStateCollection; }
/** @test */ public function getInstanceBySessionArrayReturnsCorrectSortingState() { $fieldName = 'testFieldName'; $sortingDirection = Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_ASC; $dummySessionArray = array('fieldName' => $fieldName, 'direction' => $sortingDirection); $fieldConfigurationMock = $this->getMock(Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig, array(), array(), '', false); $fieldsConfigurationMock = $this->getMock('Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfigCollection', array('getFieldConfigByIdentifier'), array(), '', false); $fieldsConfigurationMock->expects($this->once())->method('getFieldConfigByIdentifier')->will($this->returnValue($fieldConfigurationMock)); $configurationBuilderMock = $this->getMock('Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder', array('buildFieldsConfiguration'), array(), '', false); $configurationBuilderMock->expects($this->once())->method('buildFieldsConfiguration')->will($this->returnValue($fieldsConfigurationMock)); $sortingState = Tx_PtExtlist_Domain_Model_Sorting_SortingState::getInstanceBySessionArray($configurationBuilderMock, $dummySessionArray); $this->assertEquals($sortingState->getField(), $fieldConfigurationMock); $this->assertEquals($sortingState->getDirection(), $sortingDirection); }