Sha256: 774c363370102e63e6ac7e9f152508068483216e382d5c1fec43b80973910c09

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

require 'fragmenter/base'

describe Fragmenter::Base do
  let(:object)       { mock('object', id: 1001) }
  let(:engine_class) { mock('engine_class', new: engine) }
  let(:engine)       { mock('engine') }

  subject { described_class.new(object, engine_class) }

  describe '#key' do
    it 'composes a key from the object class and id value' do
      subject.key.should match(/[a-z]+-\d+/)
    end
  end

  describe 'engine delegation' do
    let(:blob)    { '0101' }
    let(:headers) { {} }

    it 'delegates #store to the storage engine' do
      engine.should_receive(:store).with(blob, headers)

      subject.store(blob, headers)
    end

    it 'delegates #fragments to the storage engine' do
      engine.should_receive(:fragments)
      subject.fragments
    end
  end

  describe '#as_json' do
    it 'merges the stored meta and fragments' do
      engine.stub('meta' => { 'content_type' => 'application/octet-stream' },
                  'fragments' => ['1', '2'])

      subject.as_json.tap do |json|
        json.should have_key('content_type')
        json.should have_key('fragments')
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fragmenter-0.5.1 spec/fragmenter/base_spec.rb
fragmenter-0.5.0 spec/fragmenter/base_spec.rb