qualtrics 0.5.2 → 0.5.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2ab5987d8e84074740e29a42a1f169b1ca13a6e
4
- data.tar.gz: b424bd87bc1cd077f78c0d932e87cf74779ac909
3
+ metadata.gz: 3082552f68e86aa628b0dcda0ffd131fc6638b2e
4
+ data.tar.gz: 1432fdb41b01181a73fce80a07ccb5af9225d569
5
5
  SHA512:
6
- metadata.gz: 63343b29dab3be01332efdf48fd84b5e0bea769a94e94993325d69f69c0d8eb88f5e831adec0ad0e2d1a670d7448552012ecd829488a5ec5b9014b16651d139c
7
- data.tar.gz: d38f29d7af4ccb4e62eeb1735c244e0ee2c5d9cdd9845216fa23696d34bf99cbb0ea948973319fd37d043b0c2037f5e2b8545bab38f3740bff491d47d83a32f9
6
+ metadata.gz: 20d57dd6f18568e10e651dc33b262f824e50aa20adad0ca65e10fc4685904161b86117152fff84ae7174c803e5bb2a0f99003d3f140c8898ea9b9287f26bd56a
7
+ data.tar.gz: deeab34717dd6e74b9cdd4fb1a39de7b4fd8ec29455c9874e05e45251b7aca2f6311cb50eb5705f578eb84f6449af8789033364ffb9dfd7f78ddbe43f7a204aa
data/lib/qualtrics.rb CHANGED
@@ -13,6 +13,7 @@ require "qualtrics/survey_import"
13
13
 
14
14
  require "qualtrics/message"
15
15
  require "qualtrics/distribution"
16
+ require "qualtrics/submission"
16
17
  require "qualtrics/mailer"
17
18
 
18
19
  # not always necessary for runtime
@@ -98,6 +98,13 @@ module Qualtrics
98
98
  }
99
99
  end
100
100
 
101
+ def response_history
102
+ info_hash["RecipientResponseHistory"].map do |r|
103
+ response = Hash[r.map{|k,v| [Qualtrics::Submission.attribute_map[k], v]}]
104
+ Qualtrics::Submission.new(response)
105
+ end
106
+ end
107
+
101
108
  protected
102
109
  def update_params
103
110
  {
@@ -0,0 +1,39 @@
1
+ module Qualtrics
2
+ class Submission < Entity
3
+
4
+ attr_accessor :id, :survey_id, :distribution_id, :finished_survey, :time_stamp
5
+
6
+ def initialize(options={})
7
+ @id = options[:id]
8
+ @survey_id = options[:survey_id]
9
+ @distribution_id = options[:distribution_id]
10
+ @finished_survey = options[:finished_survey]
11
+ @time_stamp = options[:time_stamp]
12
+ end
13
+
14
+ def info_hash
15
+ response = get('getLegacyResponseData', {
16
+ 'SurveyID' => survey_id,
17
+ 'ResponseID' => id,
18
+ 'Format' => 'CSV',
19
+ 'ExportTags' => 1
20
+ })
21
+
22
+ if response.success?
23
+ response
24
+ else
25
+ false
26
+ end
27
+ end
28
+
29
+ def self.attribute_map
30
+ {
31
+ 'ResponseID' => :id,
32
+ 'SurveyID' => :survey_id,
33
+ 'TimeStamp' => :time_stamp,
34
+ 'EmailDistributionID' => :distribution_id,
35
+ 'FinishedSurvey' => :finished_survey
36
+ }
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module Qualtrics
2
- VERSION = "0.5.2"
2
+ VERSION = "0.5.3"
3
3
  end
data/qualtrics.gemspec CHANGED
@@ -30,5 +30,4 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'dotenv'
31
31
  spec.add_development_dependency 'vcr'
32
32
  spec.add_development_dependency 'webmock'
33
- spec.add_development_dependency 'mocha'
34
33
  end
@@ -0,0 +1,62 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://survey.qualtrics.com/WRAPI/ControlPanel/api.php?ExportTags=1&Format=JSON&Request=getLegacyResponseData&ResponseID=R_296ZnPPDJEONkHP&SurveyID=SV_8deJytTY3InclQ9&Token=<QUALTRICS_TOKEN>&User=<QUALTRICS_USER>&Version=2.3
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.1
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - Apache
23
+ Cache-Control:
24
+ - max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0,
25
+ max-age=315360000
26
+ Pragma:
27
+ - ''
28
+ Content-Transfer-Encoding:
29
+ - binary
30
+ Requeststatus:
31
+ - Success
32
+ Expires:
33
+ - Thu, 27 Feb 2025 19:32:02 GMT
34
+ P3p:
35
+ - CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE", CP="CAO
36
+ DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"
37
+ Servershortname:
38
+ - w11
39
+ X-Cnection:
40
+ - close
41
+ X-Edgeconnect-Midmile-Rtt:
42
+ - '1'
43
+ - '20'
44
+ X-Edgeconnect-Origin-Mex-Latency:
45
+ - '1356'
46
+ - '788'
47
+ Content-Length:
48
+ - '1199'
49
+ Content-Type:
50
+ - application/json
51
+ Date:
52
+ - Mon, 02 Mar 2015 19:32:03 GMT
53
+ Connection:
54
+ - keep-alive
55
+ body:
56
+ encoding: UTF-8
57
+ string: '{"R_296ZnPPDJEONkHP":{"ResponseSet":"Default Response Set","Name":"fn,
58
+ kln","ExternalDataReference":"7","EmailAddress":"ksun@brookeside.com","IPAddress":"104.129.66.226","Status":"0","StartDate":"2015-03-02
59
+ 13:50:13","EndDate":"2015-03-02 13:50:40","Finished":"1","seller_company":"","role":"","redirect_host":"","sect1_head":1,"q1_lc_1":"9","q2_lr_1":"9","q3_lr_1":"9","q4_lc_1":"9","q5_lc_1":"9","q6_li_1":"9","q7_lr_1":"9","q8_li_1":"9","sect2_head":1,"q1_cs_1":"4","q2_cr_1":"4","q3_ch_1":"4","q4_ci_1":"4","q5_cc_1":"4","q9_cp_1":"4","q10_cs_1":"4","q8_cr_1":"4","q6_ch_1":"4","q11_ci_1":"4","q7_cc_1":"4","q14_cp_1":"4","q13_cs_1":"4","q12_cr_1":"4","q15_ch_1":"4","q16_ci_1":"4","q17_cc_1":"4","q18_cp_1":"4","sect3_head":1,"q1_pi_1":"3","q2_pc_1":"3","q3_pr_1":"3","q4_pp_1":"3","q5_ps_1":"3","q6_ph_1":"3","q7_pi_1":"3","q8_pc_1":"3","q9_pr_1":"3","q10_pp_1":"3","q11_ps_1":"3","q12_ph_1":"3","q13_pi_1":"3","q14_pc_1":"3","q15_pr_1":"3","q16_pp_1":"3","q17_ps_1":"3","q18_ph_1":"3","q19_pi_1":"3","q20_pc_1":"3","q21_pr_1":"3","q22_pp_1":"3","q23_ps_1":"3","q24_ph_1":"3","q25_pi_1":"3","q26_pc_1":"3","q27_pr_1":"3","q28_pp_1":"3","q29_ps_1":"3","q30_ph_1":"3","sect4_head":1,"q1_mx":""}}'
60
+ http_version:
61
+ recorded_at: Mon, 02 Mar 2015 19:32:03 GMT
62
+ recorded_with: VCR 2.9.3
@@ -182,4 +182,31 @@ describe Qualtrics::Recipient, :vcr => true do
182
182
  end
183
183
  end
184
184
 
185
+ context 'has responses' do
186
+ let(:recipient) { Qualtrics::Recipient.new }
187
+
188
+ it 'can check its own response history' do
189
+ allow(recipient).to receive(:info_hash).and_return (
190
+ {
191
+ 'PanelMemberID' => 'whatever',
192
+ 'PanelID' => 'this is',
193
+ 'FirstName' => 'kk',
194
+ 'LastName' => 'omg',
195
+ 'RecipientResponseHistory' =>
196
+ [{'ResponseID' => 'response_id',
197
+ 'SurveyID' => 'survey_id',
198
+ 'TimeStamp' => '2015-03-02 11:50:40',
199
+ 'EmailDistributionID' => 'distribution_id',
200
+ 'FinishedSurvey' => true}]
201
+ }
202
+ )
203
+
204
+ response = recipient.response_history[0]
205
+ expect(response.distribution_id).to eql('distribution_id')
206
+ expect(response.finished_survey).to eql(true)
207
+ expect(response.id).to eql('response_id')
208
+ expect(response.survey_id).to eql('survey_id')
209
+ expect(response.time_stamp).to eql('2015-03-02 11:50:40')
210
+ end
211
+ end
185
212
  end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe Qualtrics::Submission, vcr: true do
4
+ it 'has an id' do
5
+ id = '12345asdfg'
6
+
7
+ submission = Qualtrics::Submission.new({
8
+ id: id
9
+ })
10
+
11
+ expect(submission.id).to eql(id)
12
+ end
13
+
14
+ it 'has a survey id' do
15
+ survey_id = 'survey_id'
16
+
17
+ submission = Qualtrics::Submission.new({
18
+ survey_id: survey_id
19
+ })
20
+
21
+ expect(submission.survey_id).to eql(survey_id)
22
+ end
23
+
24
+ it 'has a distribution id' do
25
+ distribution_id = 'distribution_id'
26
+
27
+ submission = Qualtrics::Submission.new({
28
+ distribution_id: distribution_id
29
+ })
30
+
31
+ expect(submission.distribution_id).to eql(distribution_id)
32
+ end
33
+
34
+ it 'has a finished survey boolean' do
35
+ finished_survey = true
36
+
37
+ submission = Qualtrics::Submission.new({
38
+ finished_survey: finished_survey
39
+ })
40
+
41
+ expect(submission.finished_survey).to eql(finished_survey)
42
+ end
43
+
44
+ it 'has a timestamp' do
45
+ time_stamp = "2015-03-02 11:50:40"
46
+
47
+ submission = Qualtrics::Submission.new({
48
+ time_stamp: time_stamp
49
+ })
50
+
51
+ expect(submission.time_stamp).to eql(time_stamp)
52
+ end
53
+
54
+ end
data/spec/spec_helper.rb CHANGED
@@ -7,5 +7,5 @@ require 'mocha/api'
7
7
  Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
8
8
 
9
9
  RSpec.configure do |config|
10
- config.mock_with :mocha
10
+ # config.mock_with :mocha
11
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qualtrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Sun
@@ -165,20 +165,6 @@ dependencies:
165
165
  - - ">="
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
- - !ruby/object:Gem::Dependency
169
- name: mocha
170
- requirement: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- version: '0'
175
- type: :development
176
- prerelease: false
177
- version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: '0'
182
168
  description: Client for Qualtrics API with Faraday
183
169
  email:
184
170
  - sunkev@brandeis.edu
@@ -207,6 +193,7 @@ files:
207
193
  - lib/qualtrics/recipient.rb
208
194
  - lib/qualtrics/recipient_import_row.rb
209
195
  - lib/qualtrics/response.rb
196
+ - lib/qualtrics/submission.rb
210
197
  - lib/qualtrics/survey.rb
211
198
  - lib/qualtrics/survey_import.rb
212
199
  - lib/qualtrics/transaction.rb
@@ -236,6 +223,7 @@ files:
236
223
  - spec/fixtures/vcr_cassettes/Qualtrics_Recipient/recipient_made_in_qualtrics/can_delete_itself_in_qualtrics.yml
237
224
  - spec/fixtures/vcr_cassettes/Qualtrics_Recipient/recipient_made_in_qualtrics/can_update_itself_in_qualtrics.yml
238
225
  - spec/fixtures/vcr_cassettes/Qualtrics_Recipient/recipient_made_in_qualtrics/gets_its_information_in_qualtrics.yml
226
+ - spec/fixtures/vcr_cassettes/Qualtrics_Submission/has_a_survey_id.yml
239
227
  - spec/fixtures/vcr_cassettes/Qualtrics_Survey/creating_to_qualtrics/can_be_activated_or_deactivated.yml
240
228
  - spec/fixtures/vcr_cassettes/Qualtrics_Survey/creating_to_qualtrics/destroys_a_survey_that_returns_true_when_successful.yml
241
229
  - spec/fixtures/vcr_cassettes/Qualtrics_Survey/creating_to_qualtrics/populates_the_survey_id_when_successful.yml
@@ -251,6 +239,7 @@ files:
251
239
  - spec/qualtrics/recipient_import_row_spec.rb
252
240
  - spec/qualtrics/recipient_spec.rb
253
241
  - spec/qualtrics/response_spec.rb
242
+ - spec/qualtrics/submission_spec.rb
254
243
  - spec/qualtrics/survey_import_spec.rb
255
244
  - spec/qualtrics/survey_spec.rb
256
245
  - spec/spec_helper.rb
@@ -306,6 +295,7 @@ test_files:
306
295
  - spec/fixtures/vcr_cassettes/Qualtrics_Recipient/recipient_made_in_qualtrics/can_delete_itself_in_qualtrics.yml
307
296
  - spec/fixtures/vcr_cassettes/Qualtrics_Recipient/recipient_made_in_qualtrics/can_update_itself_in_qualtrics.yml
308
297
  - spec/fixtures/vcr_cassettes/Qualtrics_Recipient/recipient_made_in_qualtrics/gets_its_information_in_qualtrics.yml
298
+ - spec/fixtures/vcr_cassettes/Qualtrics_Submission/has_a_survey_id.yml
309
299
  - spec/fixtures/vcr_cassettes/Qualtrics_Survey/creating_to_qualtrics/can_be_activated_or_deactivated.yml
310
300
  - spec/fixtures/vcr_cassettes/Qualtrics_Survey/creating_to_qualtrics/destroys_a_survey_that_returns_true_when_successful.yml
311
301
  - spec/fixtures/vcr_cassettes/Qualtrics_Survey/creating_to_qualtrics/populates_the_survey_id_when_successful.yml
@@ -321,6 +311,7 @@ test_files:
321
311
  - spec/qualtrics/recipient_import_row_spec.rb
322
312
  - spec/qualtrics/recipient_spec.rb
323
313
  - spec/qualtrics/response_spec.rb
314
+ - spec/qualtrics/submission_spec.rb
324
315
  - spec/qualtrics/survey_import_spec.rb
325
316
  - spec/qualtrics/survey_spec.rb
326
317
  - spec/spec_helper.rb