quest_back 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,32 @@
1
+ <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
2
+ <s:Body>
3
+ <GetQuestsResponse xmlns="https://integration.questback.com/2011/03">
4
+ <GetQuestsResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
5
+ <Quests>
6
+ <Quest>
7
+ <QuestId>4567668</QuestId>
8
+ <SecurityLock>m0pI8orKJp</SecurityLock>
9
+ <QuestTitle>Skalars spørreundersøkelse</QuestTitle>
10
+ <Startdate>2014-02-18T00:00:00</Startdate>
11
+ <EndDate>2017-03-01T00:00:00</EndDate>
12
+ <State>Active</State>
13
+ <TotalInvitationsSent>0</TotalInvitationsSent>
14
+ <TotalResponseCount>0</TotalResponseCount>
15
+ <LastResponseDate>0001-01-01T00:00:00</LastResponseDate>
16
+ <DefaultLanguageId>2989</DefaultLanguageId>
17
+ <Languages>
18
+ <Language>
19
+ <LanguageId>2989</LanguageId>
20
+ <LanguageName>Norwegian (Bokmål)</LanguageName>
21
+ </Language>
22
+ </Languages>
23
+ </Quest>
24
+ </Quests>
25
+ <PageInfo>
26
+ <PageSize>10</PageSize>
27
+ <TotalCount>1</TotalCount>
28
+ </PageInfo>
29
+ </GetQuestsResult>
30
+ </GetQuestsResponse>
31
+ </s:Body>
32
+ </s:Envelope>
@@ -0,0 +1,165 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:i0="https://integration.questback.com/2011/03" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="QuestBackService" targetNamespace="http://tempuri.org/">
3
+ <wsp:Policy wsu:Id="BasicHttpBinding_QuestBackIntegrationLibrary_policy">
4
+ <wsp:ExactlyOne>
5
+ <wsp:All>
6
+ <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
7
+ <wsp:Policy>
8
+ <sp:TransportToken>
9
+ <wsp:Policy>
10
+ <sp:HttpsToken RequireClientCertificate="false" />
11
+ </wsp:Policy>
12
+ </sp:TransportToken>
13
+ <sp:AlgorithmSuite>
14
+ <wsp:Policy>
15
+ <sp:Basic256 />
16
+ </wsp:Policy>
17
+ </sp:AlgorithmSuite>
18
+ <sp:Layout>
19
+ <wsp:Policy>
20
+ <sp:Strict />
21
+ </wsp:Policy>
22
+ </sp:Layout>
23
+ </wsp:Policy>
24
+ </sp:TransportBinding>
25
+ </wsp:All>
26
+ </wsp:ExactlyOne>
27
+ </wsp:Policy>
28
+ <wsdl:import namespace="https://integration.questback.com/2011/03" location="https://integration.questback.com/Integration.svc?wsdl=wsdl0" />
29
+ <wsdl:types />
30
+ <wsdl:binding name="BasicHttpBinding_QuestBackIntegrationLibrary" type="i0:QuestBackIntegrationLibrary">
31
+ <wsp:PolicyReference URI="#BasicHttpBinding_QuestBackIntegrationLibrary_policy" />
32
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
33
+ <wsdl:operation name="GetQuests">
34
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/GetQuests" style="document" />
35
+ <wsdl:input>
36
+ <soap:body use="literal" />
37
+ </wsdl:input>
38
+ <wsdl:output>
39
+ <soap:body use="literal" />
40
+ </wsdl:output>
41
+ <wsdl:fault name="QuestBackServiceFaultFault">
42
+ <soap:fault name="QuestBackServiceFaultFault" use="literal" />
43
+ </wsdl:fault>
44
+ </wsdl:operation>
45
+ <wsdl:operation name="GetQuestQuestions">
46
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/GetQuestQuestions" style="document" />
47
+ <wsdl:input>
48
+ <soap:body use="literal" />
49
+ </wsdl:input>
50
+ <wsdl:output>
51
+ <soap:body use="literal" />
52
+ </wsdl:output>
53
+ </wsdl:operation>
54
+ <wsdl:operation name="AddEmailInvitees">
55
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/AddEmailInvitees" style="document" />
56
+ <wsdl:input>
57
+ <soap:body use="literal" />
58
+ </wsdl:input>
59
+ <wsdl:output>
60
+ <soap:body use="literal" />
61
+ </wsdl:output>
62
+ </wsdl:operation>
63
+ <wsdl:operation name="AddRespondentsData">
64
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/AddRespondentsData" style="document" />
65
+ <wsdl:input>
66
+ <soap:body use="literal" />
67
+ </wsdl:input>
68
+ <wsdl:output>
69
+ <soap:body use="literal" />
70
+ </wsdl:output>
71
+ </wsdl:operation>
72
+ <wsdl:operation name="AddRespondentsDataWithoutEmailInvitation">
73
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/AddRespondentsDataWithoutEmailInvitation" style="document" />
74
+ <wsdl:input>
75
+ <soap:body use="literal" />
76
+ </wsdl:input>
77
+ <wsdl:output>
78
+ <soap:body use="literal" />
79
+ </wsdl:output>
80
+ </wsdl:operation>
81
+ <wsdl:operation name="AddRespondentsDataWithSmsInvitation">
82
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/AddRespondentsDataWithSmsInvitation" style="document" />
83
+ <wsdl:input>
84
+ <soap:body use="literal" />
85
+ </wsdl:input>
86
+ <wsdl:output>
87
+ <soap:body use="literal" />
88
+ </wsdl:output>
89
+ </wsdl:operation>
90
+ <wsdl:operation name="GetInvitationResponseCounts">
91
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/GetInvitationResponseCounts" style="document" />
92
+ <wsdl:input>
93
+ <soap:body use="literal" />
94
+ </wsdl:input>
95
+ <wsdl:output>
96
+ <soap:body use="literal" />
97
+ </wsdl:output>
98
+ </wsdl:operation>
99
+ <wsdl:operation name="GetInviteesInfo">
100
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/GetInviteesInfo" style="document" />
101
+ <wsdl:input>
102
+ <soap:body use="literal" />
103
+ </wsdl:input>
104
+ <wsdl:output>
105
+ <soap:body use="literal" />
106
+ </wsdl:output>
107
+ </wsdl:operation>
108
+ <wsdl:operation name="GetAnswers">
109
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/GetAnswers" style="document" />
110
+ <wsdl:input>
111
+ <soap:body use="literal" />
112
+ </wsdl:input>
113
+ <wsdl:output>
114
+ <soap:body use="literal" />
115
+ </wsdl:output>
116
+ </wsdl:operation>
117
+ <wsdl:operation name="GetResponses">
118
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/GetResponses" style="document" />
119
+ <wsdl:input>
120
+ <soap:body use="literal" />
121
+ </wsdl:input>
122
+ <wsdl:output>
123
+ <soap:body use="literal" />
124
+ </wsdl:output>
125
+ </wsdl:operation>
126
+ <wsdl:operation name="GetRespondentsData">
127
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/GetRespondentsData" style="document" />
128
+ <wsdl:input>
129
+ <soap:body use="literal" />
130
+ </wsdl:input>
131
+ <wsdl:output>
132
+ <soap:body use="literal" />
133
+ </wsdl:output>
134
+ </wsdl:operation>
135
+ <wsdl:operation name="GetLanguageList">
136
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/GetLanguageList" style="document" />
137
+ <wsdl:input>
138
+ <soap:body use="literal" />
139
+ </wsdl:input>
140
+ <wsdl:output>
141
+ <soap:body use="literal" />
142
+ </wsdl:output>
143
+ <wsdl:fault name="QuestBackServiceFaultFault">
144
+ <soap:fault name="QuestBackServiceFaultFault" use="literal" />
145
+ </wsdl:fault>
146
+ </wsdl:operation>
147
+ <wsdl:operation name="TestConnection">
148
+ <soap:operation soapAction="https://integration.questback.com/2011/03/QuestBackIntegrationLibrary/TestConnection" style="document" />
149
+ <wsdl:input>
150
+ <soap:body use="literal" />
151
+ </wsdl:input>
152
+ <wsdl:output>
153
+ <soap:body use="literal" />
154
+ </wsdl:output>
155
+ <wsdl:fault name="QuestBackServiceFaultFault">
156
+ <soap:fault name="QuestBackServiceFaultFault" use="literal" />
157
+ </wsdl:fault>
158
+ </wsdl:operation>
159
+ </wsdl:binding>
160
+ <wsdl:service name="QuestBackService">
161
+ <wsdl:port name="BasicHttpBinding_QuestBackIntegrationLibrary" binding="tns:BasicHttpBinding_QuestBackIntegrationLibrary">
162
+ <soap:address location="https://integration.questback.com/Integration.svc" />
163
+ </wsdl:port>
164
+ </wsdl:service>
165
+ </wsdl:definitions>
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0"?>
2
+ <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
3
+ <s:Body>
4
+ <s:Fault>
5
+ <faultcode>s:Client</faultcode>
6
+ <faultstring xml:lang="nb-NO">Invalid username or password.</faultstring>
7
+ <detail>
8
+ <QuestBackServiceFault xmlns="https://integration.questback.com/2011/03" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
9
+ <Operation>Authentication</Operation>
10
+ <ProblemType>Invalid username or password.</ProblemType>
11
+ </QuestBackServiceFault>
12
+ </detail>
13
+ </s:Fault>
14
+ </s:Body>
15
+ </s:Envelope>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0"?>
2
+ <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
3
+ <s:Body>
4
+ <TestConnectionResponse xmlns="https://integration.questback.com/2011/03">
5
+ <TestConnectionResult>Connection sucessful. you are connected to namespace: https://integration.questback.com/2011/03</TestConnectionResult>
6
+ </TestConnectionResponse>
7
+ </s:Body>
8
+ </s:Envelope>
@@ -0,0 +1,257 @@
1
+ require 'spec_helper'
2
+
3
+ describe QuestBack::Api, type: :request do
4
+ let(:config) do
5
+ QuestBack::Configuration.new(
6
+ wsdl: path_to_fixture('quest_back.wsdl'),
7
+ username: 'my-username',
8
+ password: 'my-password'
9
+ )
10
+ end
11
+
12
+ let(:expected_default_message) do
13
+ {
14
+ user_info: {
15
+ 'Username' => 'my-username',
16
+ 'Password' => 'my-password'
17
+ }
18
+ }
19
+ end
20
+
21
+ subject { described_class.new config: config }
22
+
23
+ describe "#client" do
24
+ it "is a savon client" do
25
+ expect(subject.client).to be_a Savon::Client
26
+ end
27
+
28
+ it "sets proxy building client" do
29
+ config.http_proxy = 'http://127.0.0.1/'
30
+
31
+ Savon::Client.should_receive(:new).
32
+ with(hash_including(proxy: 'http://127.0.0.1/')).
33
+ and_return :client
34
+
35
+ expect(subject.client).to eq :client
36
+ end
37
+ end
38
+
39
+
40
+ describe "operations" do
41
+ describe "#test_connection" do
42
+ context "success" do
43
+ it "calls with correct message and response is successful" do
44
+ savon.expects(:test_connection).with(message: expected_default_message).returns success_fixture_for 'test_connection'
45
+ response = subject.test_connection
46
+ expect(response).to be_successful
47
+ end
48
+ end
49
+
50
+ context "failure" do
51
+ it "raises error" do
52
+ savon.expects(:test_connection).with(message: :any).returns failure_fixture_for 'test_connection'
53
+ expect { subject.test_connection }.to raise_error Savon::SOAPFault
54
+ end
55
+ end
56
+ end
57
+
58
+
59
+
60
+ describe "#get_quests" do
61
+ it "makes call with expected arguments" do
62
+ expected_message = expected_default_message.merge(
63
+ paging_info: {'PageNo' => 0, 'PageSize' => 50},
64
+ quest_filter: '',
65
+ order!: QuestBack::Api::ORDER[:get_quests]
66
+ )
67
+
68
+ savon.expects(:get_quests).with(message: expected_message).returns success_fixture_for 'get_quests'
69
+ response = subject.get_quests
70
+ expect(response).to be_successful
71
+ end
72
+
73
+ it "is possible to override default paging info" do
74
+ expected_message = expected_default_message.merge(
75
+ paging_info: {'PageNo' => 0, 'PageSize' => 1},
76
+ quest_filter: '',
77
+ order!: QuestBack::Api::ORDER[:get_quests]
78
+ )
79
+
80
+ savon.expects(:get_quests).with(message: expected_message).returns success_fixture_for 'get_quests'
81
+ response = subject.get_quests paging_info: {page_size: 1}
82
+ expect(response).to be_successful
83
+ end
84
+
85
+ it "has expected results" do
86
+ savon.expects(:get_quests).with(message: :any).returns success_fixture_for 'get_quests'
87
+ response = subject.get_quests
88
+
89
+ result = response.results.first
90
+
91
+ expect(result[:quest_id]).to eq '4567668'
92
+ expect(result[:security_lock]).to eq 'm0pI8orKJp'
93
+ expect(result[:state]).to eq 'Active'
94
+ end
95
+ end
96
+
97
+
98
+
99
+ describe "#get_language_list" do
100
+ it "makes call with expected arguments" do
101
+ savon.expects(:get_language_list).with(message: expected_default_message).returns success_fixture_for 'get_language_list'
102
+ response = subject.get_language_list
103
+ expect(response).to be_successful
104
+ end
105
+
106
+ it "has all known languages" do
107
+ savon.expects(:get_language_list).with(message: :any).returns success_fixture_for 'get_language_list'
108
+ response = subject.get_language_list
109
+
110
+ expect(response.results.length).to eq 145
111
+ end
112
+ end
113
+
114
+
115
+
116
+ describe "#add_email_invitees" do
117
+ it "makes call with expected arguments" do
118
+ expected_message = expected_default_message.merge(
119
+ quest_info: {'QuestId' => 4567668, 'SecurityLock' => 'm0pI8orKJp'},
120
+ emails: {'array:string' => ['inviso@skalar.no', 'th@skalar.no']},
121
+ sendduplicate: false,
122
+ order!: QuestBack::Api::ORDER[:add_email_invitees] - [:language_id]
123
+ )
124
+
125
+
126
+ savon.expects(:add_email_invitees).with(message: expected_message).returns success_fixture_for 'add_email_invitees'
127
+ response = subject.add_email_invitees(
128
+ quest_info: {
129
+ quest_id: 4567668,
130
+ security_lock: 'm0pI8orKJp'
131
+ },
132
+ emails: ['inviso@skalar.no', 'th@skalar.no']
133
+ )
134
+ expect(response).to be_successful
135
+ end
136
+
137
+ it "is possible to override defaults" do
138
+ expected_message = expected_default_message.merge(
139
+ quest_info: {'QuestId' => 4567668, 'SecurityLock' => 'm0pI8orKJp'},
140
+ emails: {'array:string' => ['inviso@skalar.no', 'th@skalar.no']},
141
+ sendduplicate: true,
142
+ order!: QuestBack::Api::ORDER[:add_email_invitees] - [:language_id]
143
+ )
144
+
145
+ savon.expects(:add_email_invitees).with(message: expected_message).returns success_fixture_for 'add_email_invitees'
146
+ response = subject.add_email_invitees(
147
+ quest_info: {
148
+ quest_id: 4567668,
149
+ security_lock: 'm0pI8orKJp'
150
+ },
151
+ emails: ['inviso@skalar.no', 'th@skalar.no'],
152
+ sendduplicate: true
153
+ )
154
+ end
155
+
156
+ it "fails if you give it keys which are not known" do
157
+ expect { subject.add_email_invitees(foo: 'bar') }.to raise_error ArgumentError
158
+ end
159
+
160
+ it "has expected result" do
161
+ savon.expects(:add_email_invitees).with(message: :any).returns success_fixture_for 'add_email_invitees'
162
+ response = subject.add_email_invitees(
163
+ quest_info: {quest_id: 4567668, security_lock: 'm0pI8orKJp'},
164
+ emails: ['inviso@skalar.no', 'th@skalar.no'],
165
+ )
166
+
167
+ expect(response.result).to eq 'Added 2 invitations to QuestId:4567668'
168
+ end
169
+ end
170
+
171
+
172
+ describe "#add_respondents_data" do
173
+ it "makes call with expected arguments" do
174
+ expected_message = expected_default_message.merge(
175
+ quest_info: {'QuestId' => 4567668, 'SecurityLock' => 'm0pI8orKJp'},
176
+ respondents_data: {
177
+ 'RespondentDataHeader' => {
178
+ 'RespondentDataHeader' => [
179
+ {
180
+ 'Title' => 'Epost',
181
+ 'enum:Type' => 2,
182
+ 'IsEmailField' => true,
183
+ 'IsSmsField' => false
184
+ },
185
+ {
186
+ 'Title' => 'Mobil',
187
+ 'enum:Type' => 2,
188
+ 'IsEmailField' => false,
189
+ 'IsSmsField' => true
190
+ },
191
+ {
192
+ 'Title' => 'Navn',
193
+ 'enum:Type' => 2,
194
+ 'IsEmailField' => false,
195
+ 'IsSmsField' => false
196
+ },
197
+ {
198
+ 'Title' => 'Alder',
199
+ 'enum:Type' => 1,
200
+ 'IsEmailField' => false,
201
+ 'IsSmsField' => false
202
+ }
203
+ ]
204
+ },
205
+ 'RespondentData' => {'array:string' => ['th@skalar.no;404 40 404;Thorbjorn;32']},
206
+ 'Delimiter' => ';',
207
+ 'AllowDuplicate' => true,
208
+ 'AddAsInvitee' => true,
209
+ order!: ["RespondentDataHeader", "RespondentData", "Delimiter", "AllowDuplicate", "AddAsInvitee"]
210
+ } ,
211
+ order!: QuestBack::Api::ORDER[:add_respondents_data] - [:language_id]
212
+ )
213
+
214
+
215
+ savon.expects(:add_respondents_data).with(message: expected_message).returns success_fixture_for 'add_respondents_data'
216
+ response = subject.add_respondents_data(
217
+ quest_info: {quest_id: 4567668, security_lock: 'm0pI8orKJp'},
218
+ respondents_data: {
219
+ respondent_data_header: {
220
+ respondent_data_header: [
221
+ {
222
+ title: 'Epost',
223
+ type: QuestBack::Api.respondent_data_header_type_for(:text),
224
+ is_email_field: true,
225
+ is_sms_field: false,
226
+ },
227
+ {
228
+ title: 'Mobil',
229
+ type: QuestBack::Api.respondent_data_header_type_for(:text),
230
+ is_email_field: false,
231
+ is_sms_field: true,
232
+ },
233
+ {
234
+ title: 'Navn',
235
+ type: QuestBack::Api.respondent_data_header_type_for(:text),
236
+ is_email_field: false,
237
+ is_sms_field: false,
238
+ },
239
+ {
240
+ title: 'Alder',
241
+ type: QuestBack::Api.respondent_data_header_type_for(:numeric),
242
+ is_email_field: false,
243
+ is_sms_field: false,
244
+ },
245
+ ]
246
+ },
247
+ respondent_data: ['th@skalar.no;404 40 404;Thorbjorn;32'],
248
+ allow_duplicate: true,
249
+ add_as_invitee: true
250
+ }
251
+ )
252
+
253
+ expect(response).to be_successful
254
+ end
255
+ end
256
+ end
257
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe QuestBack::Configuration do
4
+ describe "#initialize" do
5
+ it "has default wsdl URL" do
6
+ expect(described_class.new.wsdl).to eq 'https://integration.questback.com/integration.svc?wsdl'
7
+ end
8
+
9
+ it "assigns incomming attributes" do
10
+ config = described_class.new username: 'name', password: 'password', http_proxy: 'http://127.0.0.1/'
11
+
12
+ expect(config.username).to eq 'name'
13
+ expect(config.password).to eq 'password'
14
+ expect(config.http_proxy).to eq 'http://127.0.0.1/'
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe QuestBack::Response, type: :request do
4
+ let(:http) do
5
+ double(
6
+ body: success_fixture_for('get_quests'),
7
+ error?: false
8
+ )
9
+ end
10
+ let(:globals) { Savon::GlobalOptions.new }
11
+ let(:locals) { {} }
12
+ let(:savon_response) { Savon::Response.new(http, globals, locals) }
13
+
14
+ subject { described_class.new savon_response, operation_name: :get_quests, result_key_nestings: [:quests, :quest] }
15
+
16
+
17
+ describe "#result" do
18
+ context "singular result" do
19
+ before { http.stub(:body).and_return success_fixture_for('get_quests') }
20
+
21
+ it "returns the result of it's body" do
22
+ expect(subject.result).to eq savon_response.body[:get_quests_response][:get_quests_result][:quests][:quest]
23
+ end
24
+ end
25
+
26
+ context "multiple result" do
27
+ before { http.stub(:body).and_return success_fixture_for('get_quests_multiple_response') }
28
+
29
+ it "fails" do
30
+ expect { subject.result }.to raise_error QuestBack::Error::MultipleResultsFound
31
+ end
32
+ end
33
+ end
34
+
35
+ describe "#results" do
36
+ context "singular result" do
37
+ before { http.stub(:body).and_return success_fixture_for('get_quests') }
38
+
39
+ it "returns the result of it's body wrapped in an array" do
40
+ expect(subject.results).to eq Array.wrap(savon_response.body[:get_quests_response][:get_quests_result][:quests][:quest])
41
+ end
42
+ end
43
+
44
+ context "multiple result" do
45
+ before { http.stub(:body).and_return success_fixture_for('get_quests_multiple_response') }
46
+
47
+ it "returns the result" do
48
+ expect(subject.results).to eq savon_response.body[:get_quests_response][:get_quests_result][:quests][:quest]
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,35 @@
1
+ require 'bundler/setup'
2
+ require 'quest_back'
3
+ require "savon/mock/spec_helper"
4
+
5
+
6
+
7
+ module RequestHelpers
8
+ def success_fixture_for(name)
9
+ read_fixture "#{name}_success.xml"
10
+ end
11
+
12
+ def failure_fixture_for(name)
13
+ read_fixture "#{name}_failure.xml"
14
+ end
15
+
16
+ def read_fixture(filename)
17
+ File.read path_to_fixture(filename)
18
+ end
19
+
20
+ def path_to_fixture(filename)
21
+ File.join(File.dirname(__FILE__), 'fixtures', filename)
22
+ end
23
+ end
24
+
25
+
26
+
27
+ RSpec.configure do |c|
28
+ c.treat_symbols_as_metadata_keys_with_true_values = true
29
+
30
+ # Mock savon request tests
31
+ c.include Savon::SpecHelper, type: :request
32
+ c.include RequestHelpers, type: :request
33
+ c.before(type: :request) { savon.mock! }
34
+ c.after(type: :request) { savon.unmock! }
35
+ end