Как сделать RSpec из валидаторов? - PullRequest
1 голос
/ 26 июня 2019

Я создал файл валидатора и записал валидацию модели в этот файл валидатора, и я хочу сделать Rspec этого валидатора для каждого атрибута, как я могу это сделать?

#This is my validator
# my path   app/models/validators/book.rb
class Validators:: Book
  include ActiveModel::Validations
  attr_accessor :title

  # initialize attributes
  def initialize(book = {})
    unless book.class.name == "book"
    raise "Argument is not of Book model object."
  end

  # loop through each user attribute and assign to its relevant attribute of validation class
  book.attributes.each do |name, value|
    # assign an existing attribute to validator class with the value
    if self.respond_to? name
        send("#{name}=", value)
    end
  end
  validates_length_of :title, minimum: 2, maximum: 8
end

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

Я сделал решение своей проблемы.Спасибо за помощь.

# And path of this file is spec/models/validators/book_spec.rb
require 'rails_helper'

RSpec.describe Validators::Book do
   it {should validate_length_of(:title).is_at_most(64), allow_value(nil).for(:user_lastname)}
end
0 голосов
/ 26 июня 2019

Gembot shoulda-matchers gem предоставляет несколько хороших способов проверить валидации:

RSpec.describe Robot, type: :model do
  it { should validate_presence_of(:arms) }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...