Sha256: ecd7458477d9d1c45543c05340da044d84f0c3a8c00b50dfef7e74b3ab043e3b

Contents?: true

Size: 1.42 KB

Versions: 38

Compression:

Stored size: 1.42 KB

Contents

require 'spec_helper'

describe "uploader declaration" do
  before { allow(Saviour::Config).to receive(:storage).and_return(Saviour::LocalStorage.new(local_prefix: @tmpdir, public_url_prefix: "http://domain.com")) }

  it "raises exception if not provided either way" do
    expect {
      klass = Class.new(Test) { include Saviour::Model }
      klass.attach_file :file
    }.to raise_error.with_message "you must provide either an UploaderClass or a block to define it."
  end

  it "lets you provide uploader as a class" do
    uploader = Class.new(Saviour::BaseUploader) {
      store_dir { "/store/dir" }
      process { |contents, filename| [contents, "foo_#{filename}"] }
    }
    klass = Class.new(Test) { include Saviour::Model }
    klass.attach_file :file, uploader
    a = klass.create! file: Saviour::StringSource.new("content", "houhou.txt")

    expect(a.file.filename).to eq "foo_houhou.txt"
    expect(a.file.url).to eq 'http://domain.com/store/dir/foo_houhou.txt'
  end

  it "lets you provide uploader as a block" do
    klass = Class.new(Test) { include Saviour::Model }

    klass.attach_file(:file) do
      store_dir { "/store/dir" }
      process { |contents, filename| [contents, "foo_#{filename}"] }
    end
    a = klass.create! file: Saviour::StringSource.new("content", "houhou.txt")

    expect(a.file.filename).to eq "foo_houhou.txt"
    expect(a.file.url).to eq 'http://domain.com/store/dir/foo_houhou.txt'
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
saviour-0.6.10 spec/feature/uploader_declaration_spec.rb
saviour-0.6.9 spec/feature/uploader_declaration_spec.rb
saviour-0.6.8 spec/feature/uploader_declaration_spec.rb
saviour-0.6.7 spec/feature/uploader_declaration_spec.rb
saviour-0.6.6 spec/feature/uploader_declaration_spec.rb
saviour-0.6.5 spec/feature/uploader_declaration_spec.rb
saviour-0.6.4 spec/feature/uploader_declaration_spec.rb
saviour-0.6.3 spec/feature/uploader_declaration_spec.rb
saviour-0.6.2 spec/feature/uploader_declaration_spec.rb
saviour-0.6.1 spec/feature/uploader_declaration_spec.rb
saviour-0.6.0 spec/feature/uploader_declaration_spec.rb
saviour-0.5.11 spec/feature/uploader_declaration_spec.rb
saviour-0.5.10 spec/feature/uploader_declaration_spec.rb
saviour-0.5.9 spec/feature/uploader_declaration_spec.rb
saviour-0.5.8 spec/feature/uploader_declaration_spec.rb
saviour-0.5.7 spec/feature/uploader_declaration_spec.rb
saviour-0.5.6 spec/feature/uploader_declaration_spec.rb
saviour-0.5.5 spec/feature/uploader_declaration_spec.rb
saviour-0.5.4 spec/feature/uploader_declaration_spec.rb
saviour-0.5.3 spec/feature/uploader_declaration_spec.rb