Sha256: b6ea7a65589516abd4bdf38204d740e4a0b658240ae7c9d1b1c9a9ccbde26f29

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

require 'spec_helper'
require 'dragonfly-activerecord/store.rb'
require 'dragonfly'

describe Dragonfly::ActiveRecord::Store do

  let(:fake_file) do
    Dragonfly::Content.new(
      nil, # no app
      Dragonfly::TempObject.new(data),
      metadata)
  end

  let(:metadata) { {a:1} }

  before { prepare_database }

  shared_examples_for 'store and retrieve' do
    it 'retrieves the data' do
      id = subject.write(fake_file)
      returned_data, returned_meta = subject.read(id)

      expect(returned_data.length).to eq(data.length)
      expect(returned_data.read).to eq(data)
    end
  end


  context 'for small chunks of text data' do
    let(:data) { "foobar" }
    it_should_behave_like 'store and retrieve'
  end

  context 'for small chunks of binary data' do
    let(:data) { SecureRandom.random_bytes(64) }
    it_should_behave_like 'store and retrieve'
  end

  context 'for large chunks of binary data' do
    let(:data) { SecureRandom.random_bytes(2_000_000) }
    it_should_behave_like 'store and retrieve'
  end

  it 'returns nil for missing files' do
    expect(subject.read('1337')).to be_nil
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dragonfly-activerecord-1.0.0 spec/dragonfly-activerecord/store_spec.rb