Files
Dena/spec/trading/matching/market_order_spec.rb
2026-08-13 19:50:53 +03:30

33 lines
1.1 KiB
Ruby

# encoding: UTF-8
# frozen_string_literal: true
describe Matching::MarketOrder do
context 'initialize' do
it 'should not allow price attribute' do
expect { Matching.mock_market_order(type: :ask, price: '1.0'.to_d) }.to raise_error(Matching::OrderError)
end
it 'should only accept positive sum limit' do
expect { Matching.mock_market_order(type: :bid, locked: '0.0'.to_d) }.to raise_error(Matching::OrderError)
end
end
context '#fill' do
subject { Matching.mock_market_order(type: :bid, locked: '10.0'.to_d, volume: '2.0'.to_d) }
it 'should raise not enough volume error' do
expect { subject.fill('1.0'.to_d, '3.0'.to_d, '3.0'.to_d) }.to raise_error(Matching::NotEnoughVolume)
end
it 'should raise sum limit reached error' do
expect { subject.fill('11.0'.to_d, '1.0'.to_d, '11.0'.to_d) }.to raise_error(Matching::ExceedSumLimit)
end
it 'should also decrease volume and sum limit' do
subject.fill '6.0'.to_d, '1.0'.to_d, '6.0'.to_d
expect(subject.volume).to eq '1.0'.to_d
expect(subject.locked).to eq '4.0'.to_d
end
end
end