Как выполнять сложные поиски и тестировать их в cakePHP и Simpletest

У меня очень сложная структура данных, что-то вроде 10 таблиц без таблиц соединения. Мое приложение должно иметь возможность выполнять поиск в большинстве таблиц.

Для этого я решил превратить содержимое полей поиска в массив условий. Ключ - название модели, значение - условия поиска, т.е.

$conditions = array(
        'Artist' => array(
                'OR' => array(
                    'Artist.name LIKE' => '%barl%', 
                    'Pseudonym.name LIKE' => '%barl%'
                    )
                ),
        'Content' => array('Content.subject' => 'architecture'),
        'Editor'  => array('Editor.name LIKE' => '%Gal%'),
        etc....
    )

Этот массив передается моделям, которые доступны для поиска, и каждая модель принимает соответствующее условие.

$this->find('all', array('conditions' => $conditions['Artist']))

Пока все хорошо, по крайней мере, я так думаю. Теперь я начал тестировать модели и обнаружил, что снова и снова копирую один и тот же массив в разных тестовых примерах модели, и это меня беспокоит.

Есть ли способ сделать этот массив доступным для каждого теста? Может массив не лучшее решение и надо сделать модель поиска?

Какие-либо предложения?


person kaklon    schedule 11.02.2011    source источник


Ответы (1)


Поместите массив как свойство в app_model.php как что-то вроде $commonSearchConditions и получите доступ к ним из ваших моделей, которые должны наследовать AppModel.

В зависимости от того, что именно вы делаете, если поиск различается в каждой модели, у меня будет тестовый пример в тесте каждой модели. Если нет, вы можете создать отдельный тест с тестовой моделью, которую вы создаете внутри теста, для тестирования только того поиска, который вы хотите выполнить. Трудно сказать, не зная больше.

person floriank    schedule 05.04.2011