em-nordnet 0.0.1
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/.gitignore +18 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +65 -0
- data/LICENSE +22 -0
- data/README.md +66 -0
- data/Rakefile +2 -0
- data/em-nordnet.gemspec +28 -0
- data/lib/em-nordnet.rb +46 -0
- data/lib/em-nordnet/account.rb +27 -0
- data/lib/em-nordnet/api.rb +234 -0
- data/lib/em-nordnet/config.rb +16 -0
- data/lib/em-nordnet/feed/connection.rb +53 -0
- data/lib/em-nordnet/feed/dsl.rb +56 -0
- data/lib/em-nordnet/feed/private.rb +27 -0
- data/lib/em-nordnet/feed/public.rb +43 -0
- data/lib/em-nordnet/goliath/feed_plugin.rb +25 -0
- data/lib/em-nordnet/goliath/private_feed.rb +8 -0
- data/lib/em-nordnet/goliath/public_feed.rb +18 -0
- data/lib/em-nordnet/instrument.rb +27 -0
- data/lib/em-nordnet/order.rb +48 -0
- data/lib/em-nordnet/version.rb +5 -0
- data/spec/em-nordnet/account_spec.rb +34 -0
- data/spec/em-nordnet/api_spec.rb +179 -0
- data/spec/em-nordnet/config_spec.rb +14 -0
- data/spec/em-nordnet/goliath/public_feed_spec.rb +11 -0
- data/spec/em-nordnet/instrument_spec.rb +35 -0
- data/spec/em-nordnet/order_spec.rb +27 -0
- data/spec/em-nordnet_spec.rb +46 -0
- data/spec/spec_helper.rb +28 -0
- data/spec/support/api/headers.rb +15 -0
- data/spec/support/api/results.rb +205 -0
- data/spec/support/api/stubs.rb +137 -0
- data/spec/support/api/urls.rb +112 -0
- data/spec/support/api_helper.rb +4 -0
- data/spec/support/configure_helper.rb +19 -0
- metadata +208 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
#encoding: UTF-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Em::Nordnet::Config do
|
5
|
+
subject do
|
6
|
+
Em::Nordnet::Config.new 'https://api.test.nordnet.se', 'user', 'secret', 'pem', 'service'
|
7
|
+
end
|
8
|
+
|
9
|
+
its(:url) { should == 'https://api.test.nordnet.se' }
|
10
|
+
its(:user) { should == 'user' }
|
11
|
+
its(:password) { should == 'secret' }
|
12
|
+
its(:pem) { should == 'pem' }
|
13
|
+
its(:service) { should == 'service' }
|
14
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Em::Nordnet::Instrument do
|
4
|
+
describe 'initialization' do
|
5
|
+
let(:attributes) do
|
6
|
+
{
|
7
|
+
id: 123,
|
8
|
+
market_id: 321,
|
9
|
+
currency: 'SEK',
|
10
|
+
shortname: 'Swedbank A',
|
11
|
+
longname: 'Swedbank A',
|
12
|
+
is_in_code: '123123123',
|
13
|
+
ticksize_id: '123123123'
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
subject { Em::Nordnet::Instrument.new attributes }
|
18
|
+
|
19
|
+
its(:id) { should == 123 }
|
20
|
+
its(:market_id) { should == 321 }
|
21
|
+
its(:currency) { should == 'SEK' }
|
22
|
+
its(:shortname) { should == 'Swedbank A' }
|
23
|
+
its(:longname) { should == 'Swedbank A' }
|
24
|
+
its(:is_in_code) { should == '123123123' }
|
25
|
+
its(:ticksize_id) { should == '123123123' }
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '.search' do
|
29
|
+
it 'should return a collection of instruments matching the symbol and options'
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#subscribe_params' do
|
33
|
+
it 'should return subscription feed parameters for the given type'
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Em::Nordnet::Order do
|
4
|
+
|
5
|
+
describe 'initialization' do
|
6
|
+
let(:account) { Em::Nordnet::Account.new }
|
7
|
+
let(:instrument) { Em::Nordnet::Instrument.new}
|
8
|
+
let(:attributes) { { id: 123, account: account, instrument: instrument, price: 23.2, status: 'OK' } }
|
9
|
+
|
10
|
+
subject { Em::Nordnet::Order.new attributes }
|
11
|
+
|
12
|
+
its(:id) { should == 123 }
|
13
|
+
its(:account) { should == account }
|
14
|
+
its(:instrument) { should == instrument }
|
15
|
+
its(:price) { should == 23.2 }
|
16
|
+
its(:status) { should == 'OK' }
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
describe '.buy' do
|
21
|
+
it 'needs to be tested'
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '.all' do
|
25
|
+
it 'should return a collection of orders belonging to the given account id'
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Em::Nordnet do
|
4
|
+
describe '.configure' do
|
5
|
+
def alternative_config
|
6
|
+
Em::Nordnet.configure do |c|
|
7
|
+
c.url = 'https://api.test.nordnet.se'
|
8
|
+
c.user = 'user'
|
9
|
+
c.password = 'password'
|
10
|
+
c.pem = 'PEM'
|
11
|
+
c.service = 'SERVICE'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { Em::Nordnet.config }
|
16
|
+
|
17
|
+
before(:all) { alternative_config }
|
18
|
+
after(:all) { configure_nordnet }
|
19
|
+
|
20
|
+
its(:url) { should == 'https://api.test.nordnet.se' }
|
21
|
+
its(:user) { should == 'user' }
|
22
|
+
its(:password) { should == 'password' }
|
23
|
+
its(:pem) { should == 'PEM' }
|
24
|
+
its(:service) { should == 'SERVICE' }
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '.config' do
|
28
|
+
it 'should return an instance of config' do
|
29
|
+
Em::Nordnet.config.should be_instance_of(Em::Nordnet::Config)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should be memoized' do
|
33
|
+
Em::Nordnet.config.should === Em::Nordnet.config
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '.api', type: 'api authenticated' do
|
38
|
+
it 'should return an instance of api' do
|
39
|
+
Em::Nordnet.api.should be_instance_of(Em::Nordnet::Api)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should be memoized' do
|
43
|
+
Em::Nordnet.api.should === Em::Nordnet.api
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
9
|
+
config.run_all_when_everything_filtered = true
|
10
|
+
config.filter_run :focus
|
11
|
+
|
12
|
+
# Run specs in random order to surface order dependencies. If you find an
|
13
|
+
# order dependency and want to debug it, you can fix the order by providing
|
14
|
+
# the seed, which is printed after each run.
|
15
|
+
# --seed 1234
|
16
|
+
config.order = 'random'
|
17
|
+
|
18
|
+
config.before(:all) { configure_nordnet }
|
19
|
+
config.before(:each, type: 'api authenticated') { stub_login }
|
20
|
+
end
|
21
|
+
|
22
|
+
require_relative 'support/configure_helper'
|
23
|
+
require_relative 'support/api_helper'
|
24
|
+
|
25
|
+
require 'rubygems'
|
26
|
+
require 'webmock/rspec'
|
27
|
+
|
28
|
+
require 'em-nordnet'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
def default_headers
|
2
|
+
{ headers: { 'Content-Length' => 0, 'Content-Type' => 'application/json' } }
|
3
|
+
end
|
4
|
+
|
5
|
+
def authorization_headers
|
6
|
+
{ headers: { 'Accept-Encoding' => 'gzip, compressed', 'Authorization' => 'Basic Y2YxNDdjNjkwZjY1ZmUxMDY4ZjQwZWYyM2YyMzY0OGViZjhjN2YwMjpjZjE0N2M2OTBmNjVmZTEwNjhmNDBlZjIzZjIzNjQ4ZWJmOGM3ZjAy', 'Content-Type' => 'application/json' } }
|
7
|
+
end
|
8
|
+
|
9
|
+
def post_authorization_headers
|
10
|
+
{ headers: { 'Authorization' => 'Basic Y2YxNDdjNjkwZjY1ZmUxMDY4ZjQwZWYyM2YyMzY0OGViZjhjN2YwMjpjZjE0N2M2OTBmNjVmZTEwNjhmNDBlZjIzZjIzNjQ4ZWJmOGM3ZjAy', 'Content-Length' => '0', 'Content-Type' => 'application/json' } }
|
11
|
+
end
|
12
|
+
|
13
|
+
def delete_authorization_headers
|
14
|
+
{ headers: { 'Authorization' => 'Basic Y2YxNDdjNjkwZjY1ZmUxMDY4ZjQwZWYyM2YyMzY0OGViZjhjN2YwMjpjZjE0N2M2OTBmNjVmZTEwNjhmNDBlZjIzZjIzNjQ4ZWJmOGM3ZjAy', 'Content-Type' => 'application/json' } }
|
15
|
+
end
|
@@ -0,0 +1,205 @@
|
|
1
|
+
def login_result
|
2
|
+
{
|
3
|
+
environment: 'test',
|
4
|
+
session_key: 'cf147c690f65fe1068f40ef23f23648ebf8c7f02',
|
5
|
+
private_feed: {port: 443, hostname: 'priv.api.test.nordnet.se', encrypted: true},
|
6
|
+
expires_in: 300,
|
7
|
+
country: 'SE',
|
8
|
+
public_feed: {port: 443, hostname: 'pub.api.test.nordnet.se', encrypted: true}
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
def touch_result
|
13
|
+
{logged_in: true}
|
14
|
+
end
|
15
|
+
|
16
|
+
def realtime_access_result
|
17
|
+
[{level: 2, marketID: '44'}, {level: 2, marketID: '11'}]
|
18
|
+
end
|
19
|
+
|
20
|
+
def news_sources_result
|
21
|
+
[{
|
22
|
+
name: 'SIX News Norway',
|
23
|
+
imageurl: 'now/images/loggaSix.gif',
|
24
|
+
code: 'sixnn',
|
25
|
+
sourceid: 50,
|
26
|
+
level: 'REALTIME'
|
27
|
+
}]
|
28
|
+
end
|
29
|
+
|
30
|
+
def news_items_result
|
31
|
+
pending "Needs request result"
|
32
|
+
end
|
33
|
+
|
34
|
+
def news_item_result
|
35
|
+
pending "Needs request result"
|
36
|
+
end
|
37
|
+
|
38
|
+
def accounts_result
|
39
|
+
[{alias: nil, default: 'true', id: '9210370'}]
|
40
|
+
end
|
41
|
+
|
42
|
+
def account_result
|
43
|
+
{
|
44
|
+
ownCapital: '1000000.0',
|
45
|
+
futureSum: '0.0',
|
46
|
+
forwardSum: '0.0',
|
47
|
+
collateral: '0.0',
|
48
|
+
interest: '0.0',
|
49
|
+
tradingPower: '1000000.0',
|
50
|
+
accountSum: '1000000.0',
|
51
|
+
loanLimit: '1000000.0',
|
52
|
+
pawnValue: '0.0',
|
53
|
+
fullMarketvalue: '0.0',
|
54
|
+
ownCapitalMorning: '1000000.0',
|
55
|
+
accountCurrency: 'SEK'
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
def ledgers_result
|
60
|
+
[{
|
61
|
+
accountSumAcc: '1000000.0',
|
62
|
+
accIntCred: '0.0',
|
63
|
+
currency: 'SEK',
|
64
|
+
accIntDeb: '0.0',
|
65
|
+
accountSum: '1000000.0'
|
66
|
+
}]
|
67
|
+
end
|
68
|
+
|
69
|
+
def positions_result
|
70
|
+
pending "Needs request result"
|
71
|
+
end
|
72
|
+
|
73
|
+
def orders_result
|
74
|
+
[{
|
75
|
+
priceCondition: 'LIMIT',
|
76
|
+
validity: { validUntil: 1344870300000, type: 'DAY' },
|
77
|
+
price: { value: 60.0, curr: 'SEK' },
|
78
|
+
side: 'BUY',
|
79
|
+
orderID: 651270,
|
80
|
+
volumeCondition: 'NORMAL',
|
81
|
+
tradedVolume: 0.0,
|
82
|
+
instrumentID: {marketID: 11, identifier: '101'},
|
83
|
+
orderState: 'LOCAL',
|
84
|
+
accno: 9210370,
|
85
|
+
openVolume: 0.0,
|
86
|
+
volume: 200.0,
|
87
|
+
actionState: 'INS_PEND',
|
88
|
+
activationCondition: {type: 'NONE'},
|
89
|
+
modDate: 1344768947395
|
90
|
+
}]
|
91
|
+
end
|
92
|
+
|
93
|
+
def trades_result
|
94
|
+
pending "Needs request result"
|
95
|
+
end
|
96
|
+
|
97
|
+
def instrument_search_result
|
98
|
+
[instrument_lookup_result]
|
99
|
+
end
|
100
|
+
|
101
|
+
def instrument_lookup_result
|
102
|
+
{
|
103
|
+
currency: 'SEK',
|
104
|
+
type: 'A',
|
105
|
+
country: 'SE',
|
106
|
+
identifier: 101,
|
107
|
+
marketID: 11,
|
108
|
+
shortname: 'ERIC B',
|
109
|
+
isinCode: 'SE0000108656',
|
110
|
+
longname: 'Ericsson B',
|
111
|
+
ticksizeid: 12
|
112
|
+
}
|
113
|
+
end
|
114
|
+
|
115
|
+
def multiple_instrument_lookup_result
|
116
|
+
pending "Needs request result"
|
117
|
+
end
|
118
|
+
|
119
|
+
def chart_data_result
|
120
|
+
pending "Needs request result"
|
121
|
+
end
|
122
|
+
|
123
|
+
def lists_result
|
124
|
+
[{name: 'First North SE', country: 'SE', id: '6'}]
|
125
|
+
end
|
126
|
+
|
127
|
+
def list_items_result
|
128
|
+
pending "Needs request result"
|
129
|
+
end
|
130
|
+
|
131
|
+
def markets_result
|
132
|
+
[{
|
133
|
+
name: 'Burgundy',
|
134
|
+
country: 'DK',
|
135
|
+
marketID: '32',
|
136
|
+
ordertypes: [
|
137
|
+
{text: 'Normal order', type: 'NORMAL'},
|
138
|
+
{text: 'Fill or kill', type: 'FOK'},
|
139
|
+
{text: 'Fill and kill', type: 'FAK'}
|
140
|
+
]
|
141
|
+
}]
|
142
|
+
end
|
143
|
+
|
144
|
+
def trading_days_result
|
145
|
+
[
|
146
|
+
{date: '2012-08-13', display_date: '2012-08-13'},
|
147
|
+
{date: '2012-08-14', display_date: '2012-08-14'}
|
148
|
+
]
|
149
|
+
end
|
150
|
+
|
151
|
+
def indices_result
|
152
|
+
[{longname: 'test', source: 'test', id: 'test', type: 'INDEX', country: 'SE'}]
|
153
|
+
end
|
154
|
+
|
155
|
+
def ticksizes_result
|
156
|
+
[
|
157
|
+
{tick: 1.0, above: 1000.0, decimals: 0},
|
158
|
+
{tick: 5.0, above: 5000.0, decimals: 0},
|
159
|
+
{tick: 10.0, above: 10000.0, decimals: 0},
|
160
|
+
{tick: 50.0, above: 50000.0, decimals: 0}
|
161
|
+
]
|
162
|
+
end
|
163
|
+
|
164
|
+
def countries_result
|
165
|
+
['SE', 'NO', 'FI']
|
166
|
+
end
|
167
|
+
|
168
|
+
def underlyings_result
|
169
|
+
[
|
170
|
+
{shortname: 'SKF B', marketID: '11', identifier: '285'},
|
171
|
+
{shortname: 'SCA B', marketID: '11', identifier: '323'},
|
172
|
+
{shortname: 'STE R', marketID: '11', identifier: '2170'},
|
173
|
+
]
|
174
|
+
end
|
175
|
+
|
176
|
+
def derivatives_result
|
177
|
+
[{
|
178
|
+
kind: 'WNT',
|
179
|
+
shortname: 'MINISHRT MTG A',
|
180
|
+
strikeprice: '99999.000000',
|
181
|
+
multiplier: '1',
|
182
|
+
expirydate: '2020-01-01 00:00:00',
|
183
|
+
marketID: '35',
|
184
|
+
expirytype: 'European',
|
185
|
+
currency: 'SEK',
|
186
|
+
callPut: 'Warrant Put',
|
187
|
+
identifier: 'LJV'
|
188
|
+
}]
|
189
|
+
end
|
190
|
+
|
191
|
+
def related_markets_result
|
192
|
+
[{marketID: 11, identifier: '101'}, {marketID: 30, identifier: '1965'}]
|
193
|
+
end
|
194
|
+
|
195
|
+
def create_order_result
|
196
|
+
{ orderID: 6670, resultCode: 'OK', orderState: 'LOCAL', actionState: 'INS_PEND' }
|
197
|
+
end
|
198
|
+
|
199
|
+
def modify_order_result
|
200
|
+
pending "Needs request result"
|
201
|
+
end
|
202
|
+
|
203
|
+
def destroy_order_result
|
204
|
+
{ orderID: 6670, resultCode: 'OK', orderState: 'LOCAL', actionState: 'DEL_PEND' }
|
205
|
+
end
|
@@ -0,0 +1,137 @@
|
|
1
|
+
def stub_get url, result
|
2
|
+
json = MultiJson.dump result
|
3
|
+
stub_request(:get, url).
|
4
|
+
with(authorization_headers).
|
5
|
+
to_return body: json, status: 200
|
6
|
+
end
|
7
|
+
|
8
|
+
def stub_login
|
9
|
+
json = MultiJson.dump login_result
|
10
|
+
stub_request(:post, login_url).
|
11
|
+
with(default_headers).
|
12
|
+
to_return body: json, status: 200
|
13
|
+
end
|
14
|
+
|
15
|
+
def stub_touch(session)
|
16
|
+
json = MultiJson.dump touch_result
|
17
|
+
stub_request(:put, touch_url(session)).
|
18
|
+
with(default_headers).
|
19
|
+
to_return body: json, status: 200
|
20
|
+
end
|
21
|
+
|
22
|
+
def stub_realtime_access
|
23
|
+
stub_get realtime_access_url, realtime_access_result
|
24
|
+
end
|
25
|
+
|
26
|
+
def stub_news_sources
|
27
|
+
stub_get news_sources_url, news_sources_result
|
28
|
+
end
|
29
|
+
|
30
|
+
def stub_news_items params
|
31
|
+
stub_get news_items_url(params), news_items_result
|
32
|
+
end
|
33
|
+
|
34
|
+
def stub_news_item news_item_id
|
35
|
+
stub_get news_item_url(news_item_id), news_item_result
|
36
|
+
end
|
37
|
+
|
38
|
+
def stub_accounts
|
39
|
+
stub_get accounts_url, accounts_result
|
40
|
+
end
|
41
|
+
|
42
|
+
def stub_account account_id
|
43
|
+
stub_get account_url(account_id), account_result
|
44
|
+
end
|
45
|
+
|
46
|
+
def stub_ledgers account_id
|
47
|
+
stub_get ledgers_url(account_id), ledgers_result
|
48
|
+
end
|
49
|
+
|
50
|
+
def stub_positions account_id
|
51
|
+
stub_get positions_url(account_id), positions_result
|
52
|
+
end
|
53
|
+
|
54
|
+
def stub_orders account_id
|
55
|
+
stub_get orders_url(account_id), orders_result
|
56
|
+
end
|
57
|
+
|
58
|
+
def stub_trades account_id
|
59
|
+
stub_get orders_url(account_id), trades_result
|
60
|
+
end
|
61
|
+
|
62
|
+
def stub_instrument_search params
|
63
|
+
stub_get instruments_url(params), instrument_search_result
|
64
|
+
end
|
65
|
+
|
66
|
+
def stub_instrument_lookup params
|
67
|
+
stub_get instruments_url(params), instrument_lookup_result
|
68
|
+
end
|
69
|
+
|
70
|
+
def stub_multiple_instrument_lookup list
|
71
|
+
stub_get instruments_url(list: list), multiple_instrument_lookup_result
|
72
|
+
end
|
73
|
+
|
74
|
+
def stub_chart_data params
|
75
|
+
stub_get chart_data_url(params), chart_data_result
|
76
|
+
end
|
77
|
+
|
78
|
+
def stub_lists
|
79
|
+
stub_get lists_url, lists_result
|
80
|
+
end
|
81
|
+
|
82
|
+
def stub_list_items list_id
|
83
|
+
stub_get list_items_url(list_id), list_items_result
|
84
|
+
end
|
85
|
+
|
86
|
+
def stub_markets
|
87
|
+
stub_get markets_url, markets_result
|
88
|
+
end
|
89
|
+
|
90
|
+
def stub_trading_days market_id
|
91
|
+
stub_get trading_days_url(market_id), trading_days_result
|
92
|
+
end
|
93
|
+
|
94
|
+
def stub_indices
|
95
|
+
stub_get indices_url, indices_result
|
96
|
+
end
|
97
|
+
|
98
|
+
def stub_ticksizes instrument_id
|
99
|
+
stub_get ticksizes_url(instrument_id), ticksizes_result
|
100
|
+
end
|
101
|
+
|
102
|
+
def stub_countries derivative_type
|
103
|
+
stub_get countries_url(derivative_type), countries_result
|
104
|
+
end
|
105
|
+
|
106
|
+
def stub_underlyings derivative_type, country
|
107
|
+
stub_get underlyings_url(derivative_type, country), underlyings_result
|
108
|
+
end
|
109
|
+
|
110
|
+
def stub_derivatives derivative_type, params
|
111
|
+
stub_get derivatives_url(derivative_type, params), derivatives_result
|
112
|
+
end
|
113
|
+
|
114
|
+
def stub_related_markets params
|
115
|
+
stub_get related_markets_url(params), related_markets_result
|
116
|
+
end
|
117
|
+
|
118
|
+
def stub_create_order account_id, params
|
119
|
+
json = MultiJson.dump create_order_result
|
120
|
+
stub_request(:post, orders_url(account_id, params)).
|
121
|
+
with(post_authorization_headers).
|
122
|
+
to_return body: json, status: 200
|
123
|
+
end
|
124
|
+
|
125
|
+
def stub_modify_order account_id, order_id, params
|
126
|
+
json = MultiJson.dump modify_order_result
|
127
|
+
stub_request(:put, order_url(account_id, order_id)).
|
128
|
+
with(post_authorization_headers).
|
129
|
+
to_return body: json, status: 200
|
130
|
+
end
|
131
|
+
|
132
|
+
def stub_destroy_order account_id, order_id
|
133
|
+
json = MultiJson.dump destroy_order_result
|
134
|
+
stub_request(:delete, order_url(account_id, order_id)).
|
135
|
+
with(delete_authorization_headers).
|
136
|
+
to_return body: json, status: 200
|
137
|
+
end
|