fix_spec 0.1.0 → 0.2.0
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.
- data/README.md +1 -1
- data/VERSION +1 -1
- data/features/support/env.rb +1 -1
- data/fix_spec.gemspec +4 -2
- data/lib/fix_spec/builder.rb +3 -5
- data/lib/fix_spec/data_dictionary.rb +41 -0
- data/lib/fix_spec.rb +1 -0
- data/spec/data_dictionary_spec.rb +23 -0
- metadata +4 -2
data/README.md
CHANGED
@@ -114,7 +114,7 @@ FIXSpec works best when a DataDictionary is provided. With a DataDictionary loa
|
|
114
114
|
The DataDictionary is globally set:
|
115
115
|
|
116
116
|
```ruby
|
117
|
-
FIXSpec::data_dictionary =
|
117
|
+
FIXSpec::data_dictionary = FIXSpec::DataDictionary.new "config/FIX42.xml"
|
118
118
|
```
|
119
119
|
|
120
120
|
#### Exclusion
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/features/support/env.rb
CHANGED
@@ -8,7 +8,7 @@ def last_fix
|
|
8
8
|
end
|
9
9
|
|
10
10
|
Around('@with_data_dictionary') do |scenario, block|
|
11
|
-
FIXSpec::data_dictionary=
|
11
|
+
FIXSpec::data_dictionary= FIXSpec::DataDictionary.new "features/support/FIX42.xml"
|
12
12
|
block.call
|
13
13
|
FIXSpec::data_dictionary= nil
|
14
14
|
end
|
data/fix_spec.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "fix_spec"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Chris Busbey"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-10-22"
|
13
13
|
s.description = "Build and Inspect FIX Messages with RSpec and Cucumber steps"
|
14
14
|
s.email = "info@connamara.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -43,10 +43,12 @@ Gem::Specification.new do |s|
|
|
43
43
|
"lib/fix_spec/builder.rb",
|
44
44
|
"lib/fix_spec/configuration.rb",
|
45
45
|
"lib/fix_spec/cucumber.rb",
|
46
|
+
"lib/fix_spec/data_dictionary.rb",
|
46
47
|
"lib/fix_spec/helpers.rb",
|
47
48
|
"lib/fix_spec/matchers.rb",
|
48
49
|
"lib/fix_spec/matchers/be_fix_eql.rb",
|
49
50
|
"lib/fix_spec/matchers/have_fix_path.rb",
|
51
|
+
"spec/data_dictionary_spec.rb",
|
50
52
|
"spec/fix_spec/helpers_spec.rb",
|
51
53
|
"spec/spec_helper.rb"
|
52
54
|
]
|
data/lib/fix_spec/builder.rb
CHANGED
@@ -73,11 +73,6 @@ Given /^I set the (?:FIX|fix) message at(?: tag)? "(.*?)" to (".*"|\-?\d+(?:\.\d
|
|
73
73
|
msg = msg.get_trailer
|
74
74
|
end
|
75
75
|
|
76
|
-
if tag == -1 then
|
77
|
-
msg.setString(fieldName, fieldValue)
|
78
|
-
return
|
79
|
-
end
|
80
|
-
|
81
76
|
case FIXSpec::data_dictionary.get_field_type_enum(tag).get_name
|
82
77
|
when "INT","DAYOFMONTH" then
|
83
78
|
msg.setInt(tag, fieldValue.to_i)
|
@@ -86,6 +81,9 @@ Given /^I set the (?:FIX|fix) message at(?: tag)? "(.*?)" to (".*"|\-?\d+(?:\.\d
|
|
86
81
|
when "BOOLEAN" then
|
87
82
|
msg.setBoolean(tag, fieldValue == "true")
|
88
83
|
else
|
84
|
+
#enum description => enum value
|
85
|
+
#e.g. tag 54 "BUY"=>"1"
|
86
|
+
fieldValue = FIXSpec::data_dictionary.get_reverse_value_name(tag, fieldValue)
|
89
87
|
msg.setString(tag, fieldValue)
|
90
88
|
end
|
91
89
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#encoding ascii
|
2
|
+
|
3
|
+
require 'rexml/document'
|
4
|
+
|
5
|
+
module FIXSpec
|
6
|
+
class DataDictionary < quickfix.DataDictionary
|
7
|
+
|
8
|
+
def initialize fileName
|
9
|
+
super fileName
|
10
|
+
@reverse_lookup = Hash.new({})
|
11
|
+
|
12
|
+
parse_xml(fileName)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_reverse_value_name(tag, name)
|
16
|
+
if(@reverse_lookup[tag].has_key?(name))
|
17
|
+
@reverse_lookup[tag][name]
|
18
|
+
else
|
19
|
+
name
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def parse_xml fileName
|
26
|
+
doc = REXML::Document.new File.new(fileName)
|
27
|
+
doc.elements.each("fix/fields/field") do |f|
|
28
|
+
tag = f.attributes['number'].to_i
|
29
|
+
|
30
|
+
f.elements.each("value") do |v|
|
31
|
+
@reverse_lookup[ tag ][v.attributes['description'] ] = v.attributes['enum']
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
#also map pretty msg type names
|
36
|
+
doc.elements.each("fix/messages/message") do |m|
|
37
|
+
@reverse_lookup[35][m.attributes['name']] = m.attributes['msgtype']
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/fix_spec.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FIXSpec::DataDictionary do
|
4
|
+
let(:dict) {FIXSpec::DataDictionary.new "features/support/FIX42.xml" }
|
5
|
+
|
6
|
+
it "is a quickfix.DataDictionary" do
|
7
|
+
dict.is_a?(quickfix.DataDictionary).should be_true
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "get_reverse_value_name" do
|
11
|
+
it "gives me back the same if not an enum" do
|
12
|
+
dict.get_reverse_value_name(1, 'Ralph').should ==('Ralph')
|
13
|
+
end
|
14
|
+
|
15
|
+
it "knows enum lookup" do
|
16
|
+
dict.get_reverse_value_name(54, 'BUY').should ==('1')
|
17
|
+
end
|
18
|
+
|
19
|
+
it "knows how to map msg type" do
|
20
|
+
dict.get_reverse_value_name(35, 'NewOrderSingle').should ==('D')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
name: fix_spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Chris Busbey
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-10-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json_spec
|
@@ -157,10 +157,12 @@ files:
|
|
157
157
|
- lib/fix_spec/builder.rb
|
158
158
|
- lib/fix_spec/configuration.rb
|
159
159
|
- lib/fix_spec/cucumber.rb
|
160
|
+
- lib/fix_spec/data_dictionary.rb
|
160
161
|
- lib/fix_spec/helpers.rb
|
161
162
|
- lib/fix_spec/matchers.rb
|
162
163
|
- lib/fix_spec/matchers/be_fix_eql.rb
|
163
164
|
- lib/fix_spec/matchers/have_fix_path.rb
|
165
|
+
- spec/data_dictionary_spec.rb
|
164
166
|
- spec/fix_spec/helpers_spec.rb
|
165
167
|
- spec/spec_helper.rb
|
166
168
|
homepage: http://github.com/connamara/fix_spec
|