2010-09-04 43 views
0

我無法弄清楚如何驗證carrierwave已經上傳文件到我的mongoid對象。Carrierwave文件的Mongoid驗證

我有一個文檔類

class Content::Document < Content 

    mount_uploader :attachment, DocumentUploader 

    field :attachable_id 
    field :attachable_type 
end 

和上傳:

require 'carrierwave/orm/mongoid' 
class DocumentUploader < CarrierWave::Uploader::Base 

    storage = :filesystem 
    include CarrierWave::RMagick 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end   

    def extension_white_list 
    %w(doc docx xls xlsx ppt pptx pdf) 
    end 

我想驗證上傳依然存在,它通過一個標準的驗證錯誤

白名單別的匹配

這是軌道上的2.3.8

回答

1

一般來說你不會不需要這麼做,因爲這個行爲已經在carrierwave規範中進行了測試。

您可以使用Carrierwave測試助手隔離測試您的上傳者。例如。我只想寫一個規範像

attachment_uploader.extension_white_list.should =~ %w(doc docx xls xlsx ppt pptx pdf) 

但是,如果你堅持要測試是否我會建議使用FakeFS存根文件系統,然後用

File.exists? document.attachment.current_path 

附件是否已創建檢查。

+0

非常感謝,這對我很好 – nodrog 2011-01-06 13:04:46

2

雖然這是事實,Carrierwave確實有廣泛的測試,你可以測試其有效性像這樣的東西:

it "is valid with valid attributes" do 
    file_bytes = File.open("spec/binary/avatar.png") 
    valid_attrs = {:name => "foo", :description => "bar", :avatar => file_bytes} 
    user = User.new(valid_attrs) 
    user.should be_valid 
    end 

希望幫助!