Переопределить Silverstripe LastEdited - PullRequest
1 голос
/ 10 января 2012

Для проекта, над которым я работаю, я должен использовать поле LastEdited в сочетании с некоторыми другими данными, чтобы вывести некоторую информацию о рассматриваемом DataObject.В большинстве случаев это нормально, поскольку поле LastEdited почти всегда является нормальным значением при нормальных обстоятельствах.

Однако при попытке выполнить модульное тестирование моего кода я сталкиваюсь с проблемой, заключающейся в том, что, несмотря на установку поля LastEdited вМое приспособление, когда данные загружаются во временную базу данных, в поле LastEdited устанавливается текущее время.

Мое текущее предположение (в некоторой степени подкрепленное некоторой первоначальной ошибкой в ​​сапфире) заключается в том, что вызов DataObject :: write() автоматически устанавливает LastEdited на текущее время (ожидаемое поведение).

Мой вопрос заключается в том, существует ли способ временно отключить эту функцию, или мне придется исправлять сапфир для этого?

ОБНОВЛЕНИЕ Я решил, что возможность установить последнее отредактированное значение из прибора было полезным, и сделал исправление.Хорошие новости, это будет в следующем выпуске silverstripe

Ответы [ 2 ]

1 голос
/ 10 января 2012

Вы можете попробовать установить значение LastEdited в модульном тесте

$this->logInAs('admin');
$page->LastEdited = '2011-11-11 17:00:00';
$page->doPublish();
$this->logOut();

Я почти уверен, что это работает.Это использует члена администратора в приспособлении между прочим.

0 голосов
/ 02 февраля 2012

Я отвечу на свой вопрос, так как это облегчает жизнь.

Это известная ошибка, которая будет исправлена ​​Silverstripe 3.0.

...