Sha256: 6a4b8d8178e6eeb2ba30775c016c8f1fa53f1fe0db998c441c4d2d81947811f8

Contents?: true

Size: 1.72 KB

Versions: 1

Compression:

Stored size: 1.72 KB

Contents

require 'spec_helper'
require 'orders/shared_examples.rb'

describe Orders::OrderBook do
  subject { Orders::OrderBook.new 123456 }
  let(:item_index) { @item.price }

  before(:each) do
    @item = Orders::OrderBookItem.new :id => 0, :price => 20
    @item1 = Orders::OrderBookItem.new :id => 1, :price => 10
    @zero_price_item = Orders::OrderBookItem.new :id => 2, :price => 0
  end

  it_behaves_like 'index_list'

  its (:isin_id) {should == 123456}
  its (:changed) {should == true}

  describe 'adding item' do
    before(:each) do
      subject.add(@item).size.should == 1
      subject.changed = false
    end

    context 'with zero price' do
      it 'returns self' do
        subject.add(@zero_price_item).should == subject
      end

      it 'does not add such item to the list' do
        subject.add(@zero_price_item)
        subject[subject.index @zero_price_item].should == nil
        subject.size.should == 1
      end

      it 'does not set changed status to true' do
        subject.add(@zero_price_item)
        subject.changed.should == false
      end
    end

    it 'sets changed status to true if item was added' do
      subject.add(@item1)
      subject.changed.should == true
    end

  end

  describe 'removing item' do
    before(:each) do
      subject.add(@item).size.should == 1
      subject.changed = false
    end

    it 'sets changed status to true if item was removed' do
      subject.remove(@item)
      subject.changed.should == true
    end

    context 'that is not in list' do

      it 'returns self' do
        subject.remove(@item1).should == subject
      end

      it 'does not set changed status to true' do
        subject.remove(@item1)
        subject.changed.should == false
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
orders-0.0.2 spec/orders/order_book_spec.rb