Как выполнять сложные поиски и тестировать их, в cakePHP и Simpletest - PullRequest
1 голос
/ 11 февраля 2011

У меня очень сложная структура данных, что-то вроде 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']))

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

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

Есть предложения?

1 Ответ

0 голосов
/ 05 апреля 2011

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

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

...