quest_back 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.
@@ -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