Sha256: a933c3cc79d499864ece10218db5fd726fe5bf9275a4cccfb30ba867a7718398

Contents?: true

Size: 1.92 KB

Versions: 12

Compression:

Stored size: 1.92 KB

Contents

require 'spec_helper'
require 'mock_s3_interface'

class S3Cloud < AssetCloud::Base
  bucket :tmp, AssetCloud::S3Bucket
  attr_accessor :s3_connection, :s3_bucket_name

  def s3_bucket(key)
    s3_connection.buckets[s3_bucket_name]
  end
end

describe AssetCloud::S3Bucket do
  directory = File.dirname(__FILE__) + '/files'

  before(:all) do
    @cloud = S3Cloud.new(directory , 'http://assets/files')
    @cloud.s3_connection = MockS3Interface.new('a', 'b')
    @cloud.s3_bucket_name = 'asset-cloud-test'

    @bucket = @cloud.buckets[:tmp]
    FileUtils.mkdir_p(directory + '/tmp')
  end

  after(:each) do
    FileUtils.rm_rf(directory + '/tmp')
  end

  it "#ls should return assets with proper keys" do
    collection = MockS3Interface::Collection.new(nil, ["#{@cloud.url}/tmp/blah.gif", "#{@cloud.url}/tmp/add_to_cart.gif"])
    expect_any_instance_of(MockS3Interface::Bucket).to receive(:objects).and_return(collection)
    ls = @bucket.ls('tmp')
    ls.first.class.should == AssetCloud::Asset
    ls.map(&:key).should == ['tmp/blah.gif', 'tmp/add_to_cart.gif']
  end

  it "#delete should not ignore errors when deleting" do
    expect_any_instance_of(MockS3Interface::Bucket).to receive(:delete).and_raise(StandardError)

    expect { @bucket.delete('assets/fail.gif') }.to raise_error(StandardError)
  end

  it "#delete should always return true" do
    expect_any_instance_of(MockS3Interface::Bucket).to receive(:delete).and_return(nil)

    @bucket.delete('assets/fail.gif').should == true
  end

  it "#stat should get metadata from S3" do
    value = 'hello world'
    @cloud.build('tmp/new_file.test', value).store
    metadata = @bucket.stat('tmp/new_file.test')
    metadata.size.should == value.size
    metadata.updated_at.should == Time.parse("Mon Aug 27 17:37:51 UTC 2007")
  end

  it "#read " do
    value = 'hello world'
    key = 'tmp/new_file.txt'
    @bucket.write(key, value)
    data = @bucket.read(key)
    data.should == value
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
asset_cloud-2.3.1 spec/s3_bucket_spec.rb
asset_cloud-2.3.0 spec/s3_bucket_spec.rb
asset_cloud-2.2.9 spec/s3_bucket_spec.rb
asset_cloud-2.2.8 spec/s3_bucket_spec.rb
asset_cloud-2.2.7 spec/s3_bucket_spec.rb
asset_cloud-2.2.6 spec/s3_bucket_spec.rb
asset_cloud-2.2.5 spec/s3_bucket_spec.rb
asset_cloud-2.2.4 spec/s3_bucket_spec.rb
asset_cloud-2.2.2 spec/s3_bucket_spec.rb
asset_cloud-2.2.1 spec/s3_bucket_spec.rb
asset_cloud-2.2.0 spec/s3_bucket_spec.rb
asset_cloud-2.1.0 spec/s3_bucket_spec.rb