Carrierwave Mongoid проверка файла - PullRequest
       2

Carrierwave Mongoid проверка файла

0 голосов
/ 04 сентября 2010

Я не могу понять, как проверить, что 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

Я хотел бы проверить, существует ли загрузка и соответствует ли он белому списку, через стандартную ошибку проверки

это на Rails 2.3.8

Ответы [ 2 ]

2 голосов
/ 05 апреля 2011

Несмотря на то, что 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

Надеюсь, это поможет!

1 голос
/ 08 ноября 2010

Как правило, вам не нужно этого делать, поскольку это поведение уже протестировано в спецификациях carrierwave.

Вы можете тестировать свои загрузчики изолированно, используя помощников по тестированию Carrierwave.Например, я бы просто написал спецификацию, например

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

Но если вы настаиваете на тестировании, я бы предложил использовать FakeFS для заглушения файловой системы, а затем проверить с помощью

File.exists? document.attachment.current_path

было ли вложение создано.

...