Spec-Zone.ru › Ruby on Rails 4.1

модуль ActiveModel::Lint::Tests

Тесты Active Model Lint

Вы можете проверить, соответствует ли объект API Active Model, включив ActiveModel::Lint::Tests в свой TestCase. Он будет включать тесты, которые покажут, полностью ли ваш объект соответствует API или какие аспекты API не реализованы.

Обратите внимание, что объект не обязан реализовывать все API для работы с Action Pack. Этот модуль предназначен только для предоставления рекомендаций в случае, если вы хотите все функции из коробки.

Эти тесты не пытаются определить семантическую корректность возвращаемых значений. Например, вы можете реализовать valid? для всегда возвращения true, и тесты пройдут. Вам нужно убедиться, что значения семантически осмысленны.

Ожидается, что объекты, которые вы передаете, вернут совместимый объект из вызова to_model. Совершенно нормально, если to_model вернет self.

Методы публичного экземпляра

test_errors_aref() Показать исходный код

Тестирование ошибок

Возвращает объект, который реализует [](attribute), определяющий, который возвращает массив строк, являющихся ошибками для данного атрибута. Если используется локализация, строки должны быть локализованы для текущей локали. Если ошибка отсутствует, этот метод должен вернуть пустой массив.

# File activemodel/lib/active_model/lint.rb, line 94
def test_errors_aref
  assert model.respond_to?(:errors), "The model should respond to errors"
  assert model.errors[:hello].is_a?(Array), "errors#[] should return an Array"
end
test_model_naming() Показать исходный код

Именование

Model.model_name должен возвращать строку с некоторыми удобными методами: :human, :singular и :plural. Дополнительную информацию см. в ActiveModel::Naming.

# File activemodel/lib/active_model/lint.rb, line 79
def test_model_naming
  assert model.class.respond_to?(:model_name), "The model should respond to model_name"
  model_name = model.class.model_name
  assert model_name.respond_to?(:to_str)
  assert model_name.human.respond_to?(:to_str)
  assert model_name.singular.respond_to?(:to_str)
  assert model_name.plural.respond_to?(:to_str)
end
test_persisted?() Показать исходный код

Реагирует на persisted?

Возвращает булево значение, указывающее, был ли объект сохранен. Это используется при расчете URL для объекта. Если объект не сохранен, форма для этого объекта, например, будет перенаправлена на действие создания. Если объект сохранен, форма для объекта будет перенаправлена на действие обновления.

# File activemodel/lib/active_model/lint.rb, line 69
def test_persisted?
  assert model.respond_to?(:persisted?), "The model should respond to persisted?"
  assert_boolean model.persisted?, "persisted?"
end
test_to_key() Показать исходный код

Реагирует на to_key

Возвращает перечисляемый объект всех (первичных) атрибутов ключа или nil, если model.persisted? ложно. Это используется dom_id для генерации уникальных идентификаторов для объекта.

# File activemodel/lib/active_model/lint.rb, line 29
def test_to_key
  assert model.respond_to?(:to_key), "The model should respond to to_key"
  def model.persisted?() false end
  assert model.to_key.nil?, "to_key should return nil when `persisted?` returns false"
end
test_to_param() Показать исходный код

Реагирует на to_param

Возвращает строку, представляющую ключ объекта, подходящую для использования в URL или nil в случае, если model.persisted? является false.

Реализаторы могут решить либо вызвать исключение, либо предоставить значение по умолчанию в случае, если запись использует составной первичный ключ. В lint нет тестов для этого поведения, так как нет смысла принуждать реализатора к какой-либо стратегии реализации. Однако, если ресурс не сохранён, то to_param всегда должен возвращать nil.

# File activemodel/lib/active_model/lint.rb, line 46
def test_to_param
  assert model.respond_to?(:to_param), "The model should respond to to_param"
  def model.to_key() [1] end
  def model.persisted?() false end
  assert model.to_param.nil?, "to_param should return nil when `persisted?` returns false"
end
test_to_partial_path() Показать исходный код

Реагирует на to_partial_path

Возвращает строку, задающую относительный путь. Это используется для поиска частичных представлений. Например, модель BlogPost может возвращать “blog_posts/blog_post”.

# File activemodel/lib/active_model/lint.rb, line 57
def test_to_partial_path
  assert model.respond_to?(:to_partial_path), "The model should respond to to_partial_path"
  assert_kind_of String, model.to_partial_path
end

© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API