2017-02-06 1 views
0

Вот моя модель в Рубине на рельсахПроверка наличия и тип содержимого для того же тест недвижимости

class Item < ApplicationRecord 
    has_attached_file :image, 
    :styles => { :medium => "400x400>", :thumb => "100x100>", :square =>  "300x300#" }, default_url: "/images/:style/missing.png" 
    validates_presence_of(:description, :color, :category, :size, :image) 
    validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/ 
    belongs_to :user 
end 

и я пытаюсь проверить его с помощью RSpec и фабрик девушки переопределения свойства изображения из модели в тесте. Но я не могу, потому что nil не заполняет полный тип проверки содержимого - это должен быть образ. В результате мы можем либо проверить, является ли это образ, либо включен ли он.

describe Item, type: :model do 

    context "validations" do 
    let(:user) {create(:user)} 
    subject(:item) { 
     create(:item, user_id: user.id) 
    } 

    it "is not valid without an image" do 
     item[:image] = nil 
     expect(item).not_to be_valid 
    end 
    end 
end 


include ActionDispatch::TestProcess 

FactoryGirl.define do 
    factory :item do 
    size "XS" 
    color "Orange" 
    category "Onesie" 
    description "Pokemon onesie" 
    image { fixture_file_upload(Rails.root.join('spec', 'files', 'images', 'pokemon_onesie.jpg'), 'image/png') } 
    user_id 1 
    end 
end 

ответ

0

Согласно README here вы можете использовать один оператор валидатор для нескольких валидаций. Что-то вроде этого:

class Item < ApplicationRecord 
    has_attached_file :image, 
    :styles => { :medium => "400x400>", :thumb => "100x100>", :square =>  "300x300#" }, default_url: "/images/:style/missing.png" 

    validates_presence_of(:description, :color, :category, :size) 
    validates_attachment :image, 
    content_type: { :content_type => /\Aimage\/.*\Z/ } 
    presence: true 

    belongs_to :user 
end 
+0

еще не знает, как его проверить – Agata

0

Я понял. Оказывается, это было довольно просто

it "is not valid without an image" do 
    expect{item[:image] = nil}.to raise_error(NameError) 
end 
Смежные вопросы