fin 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,66 +2,47 @@ require 'spec_helper'
2
2
  require 'fin/models/shared_examples'
3
3
 
4
4
  describe Fin::Order do
5
+ let(:model_class_id) { 14 }
5
6
 
6
- it_behaves_like 'model'
7
+ shared_examples_for 'order_with_set_properties' do
7
8
 
8
- describe '#new with empty initializer' do
9
- subject { Fin::Order.new }
10
-
11
- its (:repl_id) {should == nil}
12
- its (:rev) {should == nil}
13
- its (:isin_id) {should == nil}
14
- its (:isin) {should == nil}
15
- its (:price) {should == nil}
16
- its (:volume) {should == nil}
17
- its (:dir) {should == nil}
18
- its (:buysell) {should == nil}
19
- its (:moment) {should == nil}
20
- its (:book) {should == nil}
21
- end
22
-
23
- describe '#new with opts' do
24
- subject { Fin::Order.new :isin => 1234567,
25
- :repl_id => 12,
26
- :rev => 123,
27
- :price => 1234,
28
- :volume => 12345,
29
- :buysell => 1,
30
- :moment => 'time',
31
- :book => 123456
32
- }
9
+ it_behaves_like 'model'
10
+ it_behaves_like 'price_as_integer'
33
11
 
34
- its (:repl_id) {should == 12}
35
- its (:rev) {should == 123}
36
- its (:isin_id) {should == 1234567}
37
- its (:isin) {should == 1234567}
38
- its (:price) {should == 1234}
39
- its (:volume) {should == 12345}
40
- its (:dir) {should == 1}
41
- its (:buysell) {should == 1}
42
- its (:moment) {should == 'time'}
43
- its (:book) {should == 123456}
44
-
45
- describe '#to_s, #inspect' do
12
+ describe '#to_s' do
46
13
  it 'is just right' do
47
14
  subject.to_s.should == "12:1234>12345+"
48
- subject.inspect.should == "12:1234>12345+"
49
- end
50
- end
51
-
52
- describe '#price=' do
53
- it 'converts given price to Integer if it is integer' do
54
- subject.price = 1313.0
55
- subject.price.should == 1313
56
- subject.price.should be_an Integer
57
15
  end
58
16
  end
59
17
 
60
18
  describe '#index' do
61
- it 'should be equal to replId' do
19
+ it 'should be equal to repl_id' do
62
20
  subject.index.should == subject.repl_id
63
21
  end
64
22
  end
65
23
  end
24
+
25
+ describe '#new with empty initializer' do
26
+ let(:property_hash) { {} }
27
+ subject { Fin::Order.new }
28
+
29
+ it_behaves_like 'model'
30
+
31
+ it 'has all nil properties' do
32
+ subject.class.attribute_types.each { |prop, _| subject.send(prop).should == nil }
33
+ end
34
+ end
35
+
36
+ describe '#new with opts' do
37
+ let(:property_hash) do
38
+ {:repl_id => 12,
39
+ :amount => 12345,
40
+ :price => 1234,
41
+ :dir => 1
42
+ }
43
+ end
44
+ subject { Fin::Order.new property_hash }
45
+ it_behaves_like 'order_with_set_properties'
46
+ end
66
47
  end
67
48
 
@@ -2,65 +2,14 @@ require 'spec_helper'
2
2
  require 'fin/models/shared_examples'
3
3
 
4
4
  describe Fin::Position do
5
+ let(:model_class_id) { 15 }
5
6
 
6
- it_behaves_like 'model'
7
+ shared_examples_for 'position_with_set_properties' do
8
+ it_behaves_like 'model'
7
9
 
8
- describe '#new with empty initializer' do
9
- subject { Fin::Position.new }
10
-
11
- its (:repl_id) {should == nil} # replId
12
- its (:repl_rev) {should == nil} # replRev
13
- its (:isin_id) {should == nil}
14
- its (:client_code) {should == nil}
15
- its (:open_qty) {should == nil}
16
- its (:buys_qty) {should == nil}
17
- its (:sells_qty) {should == nil}
18
- its (:pos) {should == nil}
19
- its (:net_volume_rur) {should == nil}
20
- its (:last_deal_id) {should == nil}
21
-
22
- # isin_id i4 ���������� �������� ������������� �����������
23
- # client_code c7 ��� �������
24
- # open_qty i4 ���������� ������� �� ������ ������
25
- # buys_qty i4 ���������� ��������� ���������� � ���� ������
26
- # sells_qty i4 ���������� ��������� ���������� � ���� ������
27
- # pos i4 ������� �������
28
- # net_volume_rur d26.2 �����-����� �����, � ������, �� ������� ���� ��������� ������.
29
- # ������������� ����� � ������ ��������, ������������� � ������ �������������
30
- # last_deal_id i8 ������������� ��������� ������
31
- end
32
-
33
- describe '#new with opts' do
34
- subject { Fin::Position.new :isin_id => 1234567,
35
- :repl_id => 12,
36
- :repl_rev => 123,
37
- :client_code => 'fz1234',
38
- :open_qty => 12345,
39
- :buys_qty => 1212,
40
- :sells_qty => 1213,
41
- :pos => 12344,
42
- :net_volume_rur => 123456,
43
- :last_deal_id => 654321,
44
-
45
- }
46
-
47
- its (:isin_id) {should == 1234567}
48
- its (:isin) {should == 1234567}
49
- its (:id) {should == 12}
50
- its (:rev) {should == 123}
51
- its (:client_code) {should == 'fz1234'}
52
- its (:open_qty) {should == 12345}
53
-
54
- its (:buys_qty) {should == 1212}
55
- its (:sells_qty) {should == 1213}
56
- its (:pos) {should == 12344}
57
- its (:net_volume_rur) {should == 123456}
58
- its (:last_deal_id) {should == 654321}
59
-
60
- describe '#to_s, #inspect' do
10
+ describe '#to_s' do
61
11
  it 'is just right' do
62
12
  subject.to_s.should == "12[1234567] 12344, open: 12345, buys: 1212, sells: 1213"
63
- subject.inspect.should == "12[1234567] 12344, open: 12345, buys: 1212, sells: 1213"
64
13
  end
65
14
  end
66
15
 
@@ -70,5 +19,35 @@ describe Fin::Position do
70
19
  end
71
20
  end
72
21
  end
22
+
23
+ describe '#new with empty initializer' do
24
+ let(:property_hash) { {} }
25
+ subject { Fin::Position.new }
26
+
27
+ it_behaves_like 'model'
28
+
29
+ it 'has all nil properties' do
30
+ subject.class.attribute_types.each { |prop, _| subject.send(prop).should == nil }
31
+ end
32
+ end
33
+
34
+ describe '#new with opts' do
35
+ let(:property_hash) do
36
+ {:isin_id => 1234567,
37
+ :repl_id => 12,
38
+ :repl_rev => 123,
39
+ :client_code => 'fz1234',
40
+ :open_qty => 12345,
41
+ :buys_qty => 1212,
42
+ :sells_qty => 1213,
43
+ :pos => 12344,
44
+ :net_volume_rur => 123456,
45
+ :last_deal_id => 654321,
46
+
47
+ }
48
+ end
49
+ subject { Fin::Position.new property_hash }
50
+ it_behaves_like 'position_with_set_properties'
51
+ end
73
52
  end
74
53
 
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+ require 'fin/models/shared_examples'
3
+
4
+ describe Fin::Quote do
5
+ let(:model_class_id) { 16 }
6
+
7
+ shared_examples_for 'quote_with_set_properties' do
8
+ it_behaves_like 'model'
9
+ it_behaves_like 'price_as_integer'
10
+
11
+ its (:book) {should == 123456}
12
+
13
+ describe '#to_s' do
14
+ it 'is just right' do
15
+ subject.to_s.should == "12:1234>12345+"
16
+ end
17
+ end
18
+
19
+ describe '#index' do
20
+ it 'should be equal to repl_id' do
21
+ subject.index.should == subject.repl_id
22
+ end
23
+ end
24
+ end
25
+
26
+ describe '#new with empty initializer' do
27
+ let(:property_hash) { {} }
28
+ subject { Fin::Quote.new }
29
+
30
+ its (:book) {should == nil}
31
+
32
+ it_behaves_like 'model'
33
+
34
+ it 'has all nil properties' do
35
+ subject.class.attribute_types.each { |prop, _| subject.send(prop).should == nil }
36
+ end
37
+ end
38
+
39
+ describe 'with properties' do
40
+ let(:property_hash) do
41
+ {:isin_id => 1234567,
42
+ :repl_id => 12,
43
+ :rev => 123,
44
+ :repl_act => 1,
45
+ :price => 1234.0,
46
+ :volume => 12345,
47
+ :buysell => 1,
48
+ :moment => 'time',
49
+ :book => 123456
50
+ }
51
+ end
52
+
53
+ context 'initialized with property options hash' do
54
+ subject { Fin::Quote.new property_hash }
55
+ it_behaves_like 'quote_with_set_properties'
56
+ end
57
+
58
+ context 'initialized with property array' do
59
+ subject { Fin::Quote.new 12,
60
+ 123,
61
+ 1,
62
+ 1234567,
63
+ 1234.0,
64
+ 12345,
65
+ 1,
66
+ 'time',
67
+ :book => 123456
68
+ }
69
+
70
+ it_behaves_like 'quote_with_set_properties'
71
+ end
72
+ end
73
+ end
@@ -1,5 +1,86 @@
1
1
  shared_examples_for 'model' do
2
- it 'has index method' do
3
- expect {subject.index }.to_not raise_error
4
- end
2
+ it 'has index method' do
3
+ expect { subject.index }.to_not raise_error
4
+ end
5
+
6
+ it 'has pre-defined replID, replRev, replAct properties' do
7
+ expect do
8
+ subject.replID
9
+ subject.repl_id
10
+ subject.replRev
11
+ subject.repl_rev
12
+ subject.rev
13
+ subject.replAct
14
+ subject.repl_act
15
+ end.to_not raise_error
16
+ end
17
+
18
+ context 'properties' do
19
+
20
+ it 'has all properties set correctly' do
21
+ property_hash.each { |prop, value| subject.send(prop).should == value }
22
+ end
23
+
24
+ context 'enumeration' do
25
+
26
+ specify { should be_kind_of Enumerable }
27
+
28
+ describe '#each' do
29
+ it 'enumerates through property names and respective values' do
30
+ @property_names = []
31
+ @property_values = []
32
+ subject.each do |name, value|
33
+ @property_names << name
34
+ @property_values << value
35
+ end
36
+ @property_values.size.should == subject.class.attribute_types.size
37
+ @property_names.should == subject.class.attribute_types.keys
38
+ end
39
+ end
40
+
41
+ describe '#each_property' do
42
+ it 'enumerates through property names and respective values' do
43
+ @property_names = []
44
+ @property_values = []
45
+ subject.each_property do |name, value|
46
+ @property_names << name
47
+ @property_values << value
48
+ end
49
+ @property_values.size.should == subject.class.attribute_types.size
50
+ @property_names.should == subject.class.attribute_types.keys
51
+ end
52
+ end
53
+ end
54
+ end
55
+
56
+ describe '#inspect' do
57
+ it 'lists all properties' do
58
+ subject.inspect.should == subject.map { |prop, value| "#{prop}=#{value}" }.join(',')
59
+ end
60
+ end
61
+
62
+ describe '.model_class_id' do
63
+ it 'is properly set' do
64
+ described_class.model_class_id.should == model_class_id
65
+ end
66
+
67
+ it 'is added to model classes list' do
68
+ id = described_class.model_class_id
69
+ Fin::Model.model_classes[id].should == described_class
70
+ described_class.model_classes[id].should == described_class
71
+ end
72
+ end
73
+ end
74
+
75
+ shared_examples_for 'price_as_integer' do
76
+ describe '#price_as_integer' do
77
+ it 'returns price as Integer if it is Integer' do
78
+ subject.price = 1313.0
79
+ subject.price.should == 1313.0
80
+ subject.price_as_integer.should == 1313
81
+ subject.price = 1313.5
82
+ subject.price.should == 1313.5
83
+ subject.price_as_integer.should == 1313.5
84
+ end
85
+ end
5
86
  end
@@ -1,20 +1,20 @@
1
1
  require 'spec_helper'
2
2
  require 'fin/shared_examples.rb'
3
3
 
4
- describe Fin::OrderList do
5
- subject { Fin::OrderList.new }
6
- let(:item_index) { @item.id }
4
+ describe Fin::QuoteList do
5
+ subject { Fin::QuoteList.new }
6
+ let(:item_index) { @item.repl_id }
7
7
  let (:new_item_book_index) {new_item.price}
8
8
 
9
9
  before(:each) do
10
- @item = Fin::Order.new :isin_id => 1234, :id => 0, :price => 20
11
- @item1 = Fin::Order.new :isin_id => 1234, :id => 1, :price => 10
10
+ @item = Fin::Quote.new :isin_id => 1234, :repl_id => 0, :price => 20
11
+ @item1 = Fin::Quote.new :isin_id => 1234, :repl_id => 1, :price => 10
12
12
  @same_isin_item = @item1
13
- @item2 = Fin::Order.new :isin_id => 5678, :id => 2, :price => 10
13
+ @item2 = Fin::Quote.new :isin_id => 5678, :repl_id => 2, :price => 10
14
14
  @diff_isin_item = @item2
15
- @zero_price_item = Fin::Order.new :isin_id => 1234, :id => 3, :price => 0
16
- @repeat_item = Fin::Order.new :isin_id => 1234, :id => 0, :price => 13
17
- @repeat_zero_price_item = Fin::Order.new :isin_id => 1234, :id => 0, :price => 0
15
+ @zero_price_item = Fin::Quote.new :isin_id => 1234, :repl_id => 3, :price => 0
16
+ @repeat_item = Fin::Quote.new :isin_id => 1234, :repl_id => 0, :price => 13
17
+ @repeat_zero_price_item = Fin::Quote.new :isin_id => 1234, :repl_id => 0, :price => 0
18
18
  end
19
19
 
20
20
  it_behaves_like 'changed_list'
@@ -31,7 +31,7 @@ describe Fin::OrderList do
31
31
  describe 'adding item' do
32
32
  let(:expected_number_of_books) { 1 }
33
33
 
34
- context 'to empty OrderList' do
34
+ context 'to empty QuoteList' do
35
35
  let(:new_item) { @item }
36
36
 
37
37
  it_behaves_like 'adding_item_to_books'
@@ -43,7 +43,7 @@ describe Fin::OrderList do
43
43
  end
44
44
  end
45
45
 
46
- context 'to non-empty OrderList' do
46
+ context 'to non-empty QuoteList' do
47
47
  before(:each) do
48
48
  subject.add(@item).size.should == 1
49
49
  end
@@ -111,7 +111,7 @@ describe Fin::OrderList do
111
111
 
112
112
  it 'deletes item from the list' do
113
113
  subject.remove(unwanted_item)
114
- subject[unwanted_item.id].should == nil
114
+ subject[unwanted_item.repl_id].should == nil
115
115
  subject.size.should == expected_size
116
116
  end
117
117
 
@@ -340,7 +340,7 @@ shared_examples_for 'creating_books' do
340
340
  book = subject.books[new_item.isin_id]
341
341
  if new_item_book_index == 0
342
342
  case subject
343
- when Fin::OrderList
343
+ when Fin::QuoteList
344
344
  new_item.book.should == nil
345
345
  else
346
346
  new_item.book.should == book
@@ -2,7 +2,7 @@
2
2
  #task 'gem:release' => 'test:run'
3
3
 
4
4
  task :notes do
5
- puts 'Output annotations (TBD)'
5
+ puts 'Output annotations (TBD)'
6
6
  end
7
7
 
8
8
  #Bundler not ready for prime time just yet
@@ -15,4 +15,4 @@ end
15
15
  # system "bundle install"
16
16
  # puts
17
17
  # end
18
- #end
18
+ #end
@@ -6,7 +6,7 @@ namespace :spec do
6
6
  require 'rspec/core/rake_task'
7
7
 
8
8
  desc "Run all specs"
9
- RSpec::Core::RakeTask.new(:spec){|task|}
9
+ RSpec::Core::RakeTask.new(:spec) { |task|}
10
10
 
11
11
  desc "Run specs with RCov"
12
12
  RSpec::Core::RakeTask.new(:rcov) do |task|