qualtrics_api 0.0.3 → 0.0.4

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: abd7228ac110efc90a89dce24f0a7de7e7335704
4
- data.tar.gz: bc6f5225fd701ad819038027d0d3baadec2ecdf8
3
+ metadata.gz: c9b596ee7f98f076fd177905c54611c0884181a7
4
+ data.tar.gz: ab95a05e5eb6b293d5fa6f92a2989cc27477695b
5
5
  SHA512:
6
- metadata.gz: 813bbed6a8992818faec40c1dc93707bc5c2c5769cc2f422de93578a19c941516ee3b1912963fac4c8e9be7aeeda22bbcd378db449dba7a3e3ab5b365acc7287
7
- data.tar.gz: 147e595c36036bd0664d5fb3d90ec387a74f46fb35120f1ab7c7d56551433b7505303e15dc5471aa94907e9da007b5b59874265f2b7d4c794b7b4590db5ae96f
6
+ metadata.gz: 4f3af6fe953f4d57bdc69e2968205464e2e9089c221bb79f888b797063d8ca83f00d4e43d223d18ec68ed537fbbf16057c36d143fcf42f741153970913aeec86
7
+ data.tar.gz: d38eb7ff62912c5ac57337f366200ba436306284483814e745b31edea564ccf5ad645bfab084deb0e0bb18410b218255f26344be40e292b1f3e61ad9cbeeead4
data/README.md CHANGED
@@ -28,8 +28,9 @@ Or install it yourself as:
28
28
  ### Initialize
29
29
 
30
30
  ```ruby
31
- client = QualtricsAPI.new "YOUR_QUALTRICS_API_KEY"
32
- # => #<QualtricsAPI::Client:0x007fcb74496528 @api_token="YOUR_QUALTRICS_API_KEY">
31
+ QualtricsAPI.configure do |config|
32
+ config.api_token = "YOUR_QUALTRICS_API_KEY"
33
+ end
33
34
  ```
34
35
 
35
36
  ### Surveys
@@ -37,28 +38,28 @@ client = QualtricsAPI.new "YOUR_QUALTRICS_API_KEY"
37
38
  To get all your surveys:
38
39
 
39
40
  ```ruby
40
- client.surveys.fetch
41
+ QualtricsAPI.surveys.fetch
41
42
  # => #<QualtricsAPI::SurveyCollection:0x007fcb72cce350 ....>
42
43
  ```
43
44
 
44
45
  You can also add a scopeId:
45
46
 
46
47
  ```ruby
47
- client.surveys.fetch(scope_id: "someOwnerIdMaybe")
48
+ QualtricsAPI.surveys.fetch(scope_id: "someOwnerIdMaybe")
48
49
  # => #<QualtricsAPI::SurveyCollection:0x007fcb72adaf21 ....>
49
50
  ```
50
51
 
51
52
  After you have received results, you can search for a survey by id:
52
53
 
53
54
  ```ruby
54
- survey = client.surveys.find("surveyIdHere")
55
+ survey = QualtricsAPI.surveys.find("surveyIdHere")
55
56
  # => #<QualtricsAPI::Survey:0x007fcb724f9468 @id="surveyIdHere" ...>
56
57
  ```
57
58
 
58
59
  or just:
59
60
 
60
61
  ```ruby
61
- survey = client.surveys["surveyIdHere"]
62
+ survey = QualtricsAPI.surveys["surveyIdHere"]
62
63
  # => #<QualtricsAPI::Survey:0x007fcb724f9468 @id="surveyIdHere" ...>
63
64
  ```
64
65
 
@@ -129,8 +130,7 @@ You can save it somewhere in your app and check back later (if you know
129
130
  it's gonna take a while!)
130
131
 
131
132
  ```ruby
132
- client = QualtricsAPI.new "YOUR QUALTRICS API TOKEN"
133
- export = client.response_exports["someExportID"]
133
+ export = QualtricsAPI.response_exports["someExportID"]
134
134
  # => #<QualtricsAPI::ResponseExport:0x007fcb742e4e50 ....>
135
135
  export.status
136
136
  => "99.99999%"
@@ -141,21 +141,21 @@ export.status
141
141
  To get all the panels:
142
142
 
143
143
  ```ruby
144
- client.panels.fetch
144
+ QualtricsAPI.panels.fetch
145
145
  # => #<QualtricsAPI::PanelCollection:0x007f8769aae2c0 ....>
146
146
  ```
147
147
 
148
148
  After you have received results, you can search for a panel by id:
149
149
 
150
150
  ```ruby
151
- panel = client.panels.find("panelIdHere")
151
+ panel = QualtricsAPI.panels.find("panelIdHere")
152
152
  # => #<QualtricsAPI::Panel:0x007f876906f278 @id="panelIdHere" ...>
153
153
  ```
154
154
 
155
155
  or just:
156
156
 
157
157
  ```ruby
158
- panel = client.panels["panelIdHere"]
158
+ panel = QualtricsAPI.panels["panelIdHere"]
159
159
  # => #<QualtricsAPI::Panel:0x007f876906f278 @id="panelIdHere" ...>
160
160
  ```
161
161
 
@@ -164,7 +164,7 @@ panel = client.panels["panelIdHere"]
164
164
  To add panel members to a panel:
165
165
 
166
166
  ```ruby
167
- panel = client.panels.fetch["panelIdHere"]
167
+ panel = QualtricsAPI.panels.fetch["panelIdHere"]
168
168
  members = [QualtricsAPI::PanelMember.new(first_name: 'John', last_name: 'Doe', email: 'test@test.com')]
169
169
  panel.members.create(members)
170
170
  => #<QualtricsAPI::PanelImport:0x007fb7db984668 ...>
data/lib/qualtrics_api.rb CHANGED
@@ -8,6 +8,7 @@ require "qualtrics_api/url"
8
8
 
9
9
  require "qualtrics_api/request_error_handler"
10
10
 
11
+ require "qualtrics_api/configurable"
11
12
  require "qualtrics_api/client"
12
13
  require "qualtrics_api/survey"
13
14
  require "qualtrics_api/survey_collection"
@@ -22,7 +23,8 @@ require "qualtrics_api/panel_import"
22
23
  require "qualtrics_api/services/response_export_service"
23
24
 
24
25
  module QualtricsAPI
25
- def self.new(token)
26
- Client.new(api_token: token)
26
+ class << self
27
+ include QualtricsAPI::Configurable
28
+ include QualtricsAPI::Client
27
29
  end
28
30
  end
@@ -1,24 +1,23 @@
1
1
  module QualtricsAPI
2
- class Client
2
+ module Client
3
3
  include Virtus.value_object
4
4
 
5
- attribute :api_token, String
6
-
7
5
  def surveys(options = {})
8
- @surveys ||= QualtricsAPI::SurveyCollection.new(options.merge(connection: connection))
6
+ @surveys = nil if @surveys && @surveys.scope_id != options[:scope_id]
7
+ @surveys ||= QualtricsAPI::SurveyCollection.new(options)
9
8
  end
10
9
 
11
10
  def response_exports(options = {})
12
- @response_exports ||= QualtricsAPI::ResponseExportCollection.new(options.merge(connection: connection))
11
+ @response_exports ||= QualtricsAPI::ResponseExportCollection.new(options)
13
12
  end
14
13
 
15
14
  def panels(options = {})
16
- @panels ||= QualtricsAPI::PanelCollection.new(options.merge(connection: connection))
15
+ @panels ||= QualtricsAPI::PanelCollection.new(options)
17
16
  end
18
17
 
19
18
  def connection
20
- @conn ||= Faraday.new(url: QualtricsAPI::URL,
21
- params: { apiToken: api_token }) do |faraday|
19
+ api_token ||= QualtricsAPI.api_token || fail('Please configure api token!')
20
+ @conn ||= Faraday.new(url: QualtricsAPI::URL, params: { apiToken: api_token }) do |faraday|
22
21
  faraday.request :url_encoded
23
22
  faraday.response :json, :content_type => /\bjson$/
24
23
 
@@ -0,0 +1,9 @@
1
+ module QualtricsAPI
2
+ module Configurable
3
+ attr_accessor :api_token
4
+
5
+ def configure
6
+ yield self
7
+ end
8
+ end
9
+ end
@@ -2,7 +2,6 @@ module QualtricsAPI
2
2
  class Panel
3
3
  include Virtus.value_object
4
4
 
5
- attribute :connection
6
5
  attribute :id, String
7
6
  attribute :library_id, String
8
7
  attribute :name, String
@@ -16,7 +15,7 @@ module QualtricsAPI
16
15
  end
17
16
 
18
17
  def members(options = {})
19
- @members ||= QualtricsAPI::PanelMemberCollection.new(options.merge(id: id, connection: connection))
18
+ @members ||= QualtricsAPI::PanelMemberCollection.new(options.merge(id: id))
20
19
  end
21
20
 
22
21
  private
@@ -4,7 +4,6 @@ module QualtricsAPI
4
4
  include Enumerable
5
5
  include Virtus.value_object
6
6
 
7
- attribute :connection
8
7
  attribute :all, Array, :default => []
9
8
 
10
9
  def_delegator :all, :each
@@ -12,7 +11,7 @@ module QualtricsAPI
12
11
 
13
12
  def fetch(_options = {})
14
13
  @all = []
15
- parse_fetch_response(connection.get('panels'))
14
+ parse_fetch_response(QualtricsAPI.connection.get('panels'))
16
15
  self
17
16
  end
18
17
 
@@ -23,14 +22,14 @@ module QualtricsAPI
23
22
  def find(panel_id)
24
23
  @all.detect do |panel|
25
24
  panel.id == panel_id
26
- end || QualtricsAPI::Panel.new("panelId" => panel_id, connection: connection)
25
+ end || QualtricsAPI::Panel.new("panelId" => panel_id)
27
26
  end
28
27
 
29
28
  private
30
29
 
31
30
  def parse_fetch_response(response)
32
31
  @all = response.body["result"].map do |result|
33
- QualtricsAPI::Panel.new result.merge(connection: connection)
32
+ QualtricsAPI::Panel.new(result)
34
33
  end
35
34
  end
36
35
  end
@@ -2,12 +2,11 @@ module QualtricsAPI
2
2
  class PanelImport
3
3
  include Virtus.value_object
4
4
 
5
- attribute :connection
6
5
  attribute :id, String
7
6
  attribute :panel_id, String
8
7
 
9
8
  def update_status
10
- res = connection.get("panels/#{panel_id}/members/panelImports/#{id}").body["result"]
9
+ res = QualtricsAPI.connection.get("panels/#{panel_id}/members/panelImports/#{id}").body["result"]
11
10
  @import_progress = res["percentComplete"]
12
11
  @completed = true if @import_progress == 100.0
13
12
  self
@@ -2,7 +2,6 @@ module QualtricsAPI
2
2
  class PanelMember
3
3
  include Virtus.value_object
4
4
 
5
- attribute :connection
6
5
  attribute :id, String
7
6
  attribute :first_name, String
8
7
  attribute :last_name, String
@@ -26,9 +25,7 @@ module QualtricsAPI
26
25
  private
27
26
 
28
27
  def serialized_attributes
29
- Hash[attributes.map { |k, v| [mapped_and_uppercased_attribute(k), v] }].tap do |h|
30
- h.delete("Connection")
31
- end.delete_if { |_k, v| v.nil? }
28
+ Hash[attributes.map { |k, v| [mapped_and_uppercased_attribute(k), v] }].delete_if { |_k, v| v.nil? }
32
29
  end
33
30
 
34
31
  def mapped_and_uppercased_attribute(attribute)
@@ -4,7 +4,6 @@ module QualtricsAPI
4
4
  include Enumerable
5
5
  include Virtus.value_object
6
6
 
7
- attribute :connection
8
7
  attribute :id, String
9
8
  attribute :all, Array, :default => []
10
9
 
@@ -13,16 +12,16 @@ module QualtricsAPI
13
12
 
14
13
  def fetch(_options = {})
15
14
  @all = []
16
- parse_fetch_response(connection.get("panels/#{id}/members"))
15
+ parse_fetch_response(QualtricsAPI.connection.get("panels/#{id}/members"))
17
16
  self
18
17
  end
19
18
 
20
19
  def create(panel_members)
21
- res = connection
22
- .post("panels/#{id}/members", connection.params.merge(panelMembers: panel_members.to_json))
20
+ res = QualtricsAPI.connection
21
+ .post("panels/#{id}/members", QualtricsAPI.connection.params.merge(panelMembers: panel_members.to_json))
23
22
  .body["result"]
24
23
  import_id = res['importStatus'].split('/').last
25
- QualtricsAPI::PanelImport.new(id: import_id, panel_id: id, connection: connection)
24
+ QualtricsAPI::PanelImport.new(id: import_id, panel_id: id)
26
25
  end
27
26
 
28
27
  def [](member_id)
@@ -32,14 +31,14 @@ module QualtricsAPI
32
31
  def find(member_id)
33
32
  @all.detect do |panel_member|
34
33
  panel_member.id == member_id
35
- end || QualtricsAPI::PanelMember.new(:id => member_id, connection: connection)
34
+ end || QualtricsAPI::PanelMember.new(:id => member_id)
36
35
  end
37
36
 
38
37
  private
39
38
 
40
39
  def parse_fetch_response(response)
41
40
  @all = response.body["result"].map do |result|
42
- QualtricsAPI::PanelMember.new(result.merge(connection: connection))
41
+ QualtricsAPI::PanelMember.new(result)
43
42
  end
44
43
  end
45
44
  end
@@ -2,11 +2,10 @@ module QualtricsAPI
2
2
  class ResponseExport
3
3
  include Virtus.value_object
4
4
 
5
- attribute :connection
6
5
  attribute :id, String
7
6
 
8
7
  def update_status
9
- res = connection.get('surveys/responseExports/' + id).body["result"]
8
+ res = QualtricsAPI.connection.get('surveys/responseExports/' + id).body["result"]
10
9
  @export_progress = res["percentComplete"]
11
10
  @file_url = res["fileUrl"]
12
11
  @completed = true if @export_progress == 100.0
@@ -4,7 +4,6 @@ module QualtricsAPI
4
4
  include Enumerable
5
5
  include Virtus.value_object
6
6
 
7
- attribute :connection
8
7
  attribute :all, Array, :default => []
9
8
 
10
9
  def_delegator :all, :each
@@ -17,7 +16,7 @@ module QualtricsAPI
17
16
  def find(export_id)
18
17
  @all.detect do |response_export|
19
18
  response_export.id == export_id
20
- end || QualtricsAPI::ResponseExport.new(:id => export_id, connection: connection)
19
+ end || QualtricsAPI::ResponseExport.new(:id => export_id)
21
20
  end
22
21
  end
23
22
  end
@@ -3,7 +3,6 @@ module QualtricsAPI
3
3
  class ResponseExportService
4
4
  include Virtus.value_object
5
5
 
6
- attribute :connection
7
6
  attribute :survey_id, String
8
7
  attribute :response_set_id, String
9
8
  attribute :file_type, String, :default => 'CSV'
@@ -23,9 +22,9 @@ module QualtricsAPI
23
22
  attr_reader :result
24
23
 
25
24
  def start
26
- response = connection.get("surveys/#{survey_id}/responseExports", export_params)
25
+ response = QualtricsAPI.connection.get("surveys/#{survey_id}/responseExports", export_params)
27
26
  export_id = response.body["result"]["exportStatus"].split('/').last
28
- @result = ResponseExport.new(id: export_id, connection: connection)
27
+ @result = ResponseExport.new(id: export_id)
29
28
  end
30
29
 
31
30
  def export_configurations
@@ -2,7 +2,6 @@ module QualtricsAPI
2
2
  class Survey
3
3
  include Virtus.value_object
4
4
 
5
- attribute :connection
6
5
  attribute :id, String
7
6
  attribute :name, String
8
7
  attribute :owner_id, String
@@ -18,7 +17,7 @@ module QualtricsAPI
18
17
  end
19
18
 
20
19
  def export_responses(export_options = {})
21
- QualtricsAPI::Services::ResponseExportService.new(export_options.merge(survey_id: id, connection: connection))
20
+ QualtricsAPI::Services::ResponseExportService.new(export_options.merge(survey_id: id))
22
21
  end
23
22
 
24
23
  private
@@ -4,7 +4,6 @@ module QualtricsAPI
4
4
  include Enumerable
5
5
  include Virtus.value_object
6
6
 
7
- attribute :connection
8
7
  attribute :scope_id, String
9
8
  attribute :all, Array, :default => []
10
9
 
@@ -16,7 +15,7 @@ module QualtricsAPI
16
15
  def fetch(options = {})
17
16
  @all = []
18
17
  update_query_attributes(options)
19
- parse_fetch_response(connection.get('surveys', query_params))
18
+ parse_fetch_response(QualtricsAPI.connection.get('surveys', query_params))
20
19
  self
21
20
  end
22
21
 
@@ -37,7 +36,7 @@ module QualtricsAPI
37
36
  def find(survey_id)
38
37
  @all.detect do |survey|
39
38
  survey.id == survey_id
40
- end || QualtricsAPI::Survey.new("id" => survey_id, connection: connection)
39
+ end || QualtricsAPI::Survey.new("id" => survey_id)
41
40
  end
42
41
 
43
42
  private
@@ -56,7 +55,7 @@ module QualtricsAPI
56
55
 
57
56
  def parse_fetch_response(response)
58
57
  @all = response.body["result"].map do |result|
59
- QualtricsAPI::Survey.new result.merge(connection: connection)
58
+ QualtricsAPI::Survey.new result
60
59
  end
61
60
  end
62
61
  end
@@ -1,3 +1,3 @@
1
1
  module QualtricsAPI
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -31,4 +31,5 @@ Gem::Specification.new do |spec|
31
31
  spec.add_development_dependency "rspec", "~> 3.2"
32
32
  spec.add_development_dependency "vcr", "~> 2.9"
33
33
  spec.add_development_dependency "guard-rspec", "~> 4.5"
34
+ spec.add_development_dependency "pry", "~> 0.10.1"
34
35
  end
@@ -1,25 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe QualtricsAPI::Client do
4
- subject { QualtricsAPI::Client.new(:api_token => "someToken") }
5
-
6
- it "has an api token" do
7
- expect(subject.api_token).to eq "someToken"
8
- end
9
-
10
- it "does not allow changing the token once initialized" do
11
- expect(subject).to_not respond_to(:api_token=)
12
- end
4
+ subject { QualtricsAPI }
13
5
 
14
6
  describe "#response_exports" do
15
7
  it "returns a ResponseExportCollection" do
16
8
  expect(subject.response_exports).to be_a QualtricsAPI::ResponseExportCollection
17
9
  end
18
10
 
19
- it "sets connection" do
20
- expect(subject.surveys.connection).to eq subject.connection
21
- end
22
-
23
11
  it "caches the collection" do
24
12
  expect(subject.response_exports.object_id).to eq subject.response_exports.object_id
25
13
  end
@@ -30,10 +18,6 @@ describe QualtricsAPI::Client do
30
18
  expect(subject.surveys).to be_a QualtricsAPI::SurveyCollection
31
19
  end
32
20
 
33
- it "sets connection" do
34
- expect(subject.surveys.connection).to eq subject.connection
35
- end
36
-
37
21
  it "assigns scope_id if passed" do
38
22
  expect(subject.surveys(:scope_id => "someId").scope_id).to eq "someId"
39
23
  end
@@ -1,18 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe QualtricsAPI::PanelCollection do
4
- let(:connection) { double('connection') }
5
-
6
- subject { described_class.new connection: connection }
7
-
8
4
  it "has no @all when initialized" do
9
5
  expect(subject.all).to eq []
10
6
  end
11
7
 
12
- it "takes a connection" do
13
- expect(subject.connection).to eq connection
14
- end
15
-
16
8
  describe "#find, #[]" do
17
9
  let(:panel_1) { QualtricsAPI::Panel.new "panelId" => "p1" }
18
10
  let(:panel_2) { QualtricsAPI::Panel.new "panelId" => "p2" }
@@ -27,15 +19,10 @@ describe QualtricsAPI::PanelCollection do
27
19
  new_panel = subject["p3"]
28
20
  expect(new_panel).to be_a QualtricsAPI::Panel
29
21
  expect(new_panel.id).to eq "p3"
30
- expect(new_panel.connection).to eq connection
31
22
  end
32
23
  end
33
24
 
34
25
  describe "integration" do
35
- let(:client) { QualtricsAPI.new TEST_API_TOKEN }
36
-
37
- subject { described_class.new connection: client.connection }
38
-
39
26
  describe "#fetch" do
40
27
  describe "when success" do
41
28
  before do
@@ -53,10 +40,6 @@ describe QualtricsAPI::PanelCollection do
53
40
  expect(subject.first).to be_a QualtricsAPI::Panel
54
41
  end
55
42
 
56
- it "passes down the connection" do
57
- expect(subject.all.first.connection).to eq client.connection
58
- end
59
-
60
43
  it "returns itself" do
61
44
  expect(result).to eq subject
62
45
  end
@@ -2,8 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe QualtricsAPI::PanelImport do
4
4
  describe "integration" do
5
- let(:connection) { QualtricsAPI.new(TEST_API_TOKEN).connection }
6
- subject { described_class.new(id: 'PGRS_bEJLYLkqMBs8Bwx', panel_id: 'ML_bC2c5xBz1DxyOYB', connection: connection) }
5
+ subject { described_class.new(id: 'PGRS_bEJLYLkqMBs8Bwx', panel_id: 'ML_bC2c5xBz1DxyOYB') }
7
6
 
8
7
  describe "#update_status" do
9
8
  let(:result) do
@@ -1,18 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe QualtricsAPI::PanelMemberCollection do
4
- let(:connection) { double('connection') }
5
-
6
- subject { described_class.new connection: connection }
7
-
8
4
  it "has no @all when initialized" do
9
5
  expect(subject.all).to eq []
10
6
  end
11
7
 
12
- it "takes a connection" do
13
- expect(subject.connection).to eq connection
14
- end
15
-
16
8
  describe "#find, #[]" do
17
9
  let(:panel_member_1) { QualtricsAPI::PanelMember.new("panelMemberId" => "p1") }
18
10
  let(:panel_member_2) { QualtricsAPI::PanelMember.new("panelMemberId" => "p2") }
@@ -27,14 +19,11 @@ describe QualtricsAPI::PanelMemberCollection do
27
19
  new_panel_member = subject["p3"]
28
20
  expect(new_panel_member).to be_a QualtricsAPI::PanelMember
29
21
  expect(new_panel_member.id).to eq "p3"
30
- expect(new_panel_member.connection).to eq connection
31
22
  end
32
23
  end
33
24
 
34
25
  describe "integration" do
35
- let(:client) { QualtricsAPI.new TEST_API_TOKEN }
36
-
37
- subject { described_class.new(connection: client.connection, id: 'ABCD') }
26
+ subject { described_class.new(id: 'ABCD') }
38
27
 
39
28
  describe "#fetch" do
40
29
  describe "when success" do
@@ -53,10 +42,6 @@ describe QualtricsAPI::PanelMemberCollection do
53
42
  expect(subject.first).to be_a QualtricsAPI::PanelMember
54
43
  end
55
44
 
56
- it "passes down the connection" do
57
- expect(subject.all.first.connection).to eq client.connection
58
- end
59
-
60
45
  it "returns itself" do
61
46
  expect(result).to eq subject
62
47
  end
@@ -77,7 +62,7 @@ describe QualtricsAPI::PanelMemberCollection do
77
62
  describe "#create" do
78
63
  let(:result) do
79
64
  VCR.use_cassette(cassette) do
80
- QualtricsAPI.new(TEST_API_TOKEN).panels.fetch['ML_bC2c5xBz1DxyOYB'].members.create(panel_members)
65
+ QualtricsAPI.panels.fetch['ML_bC2c5xBz1DxyOYB'].members.create(panel_members)
81
66
  end
82
67
  end
83
68
 
@@ -96,10 +81,6 @@ describe QualtricsAPI::PanelMemberCollection do
96
81
  it "returns PanelImport with panel id" do
97
82
  expect(result.panel_id).to eq('ML_bC2c5xBz1DxyOYB')
98
83
  end
99
-
100
- it "returns PanelImport with connection" do
101
- expect(result.connection).not_to be_nil
102
- end
103
84
  end
104
85
 
105
86
  describe "when failed" do
@@ -14,8 +14,7 @@ describe QualtricsAPI::PanelMember do
14
14
  }
15
15
  end
16
16
 
17
- let(:connection) { double('connection', get: {}) }
18
- subject { described_class.new panel_member.merge(connection: connection) }
17
+ subject { described_class.new panel_member }
19
18
 
20
19
  it "has a panel member id" do
21
20
  expect(subject.id).to eq(panel_member["panelMemberId"])
@@ -10,9 +10,7 @@ describe QualtricsAPI::Panel do
10
10
  }
11
11
  end
12
12
 
13
- let(:connection) { double('connection', get: {}) }
14
-
15
- subject { described_class.new qualtrics_response.merge(connection: connection) }
13
+ subject { described_class.new qualtrics_response }
16
14
 
17
15
  it "has an panelId" do
18
16
  expect(subject.id).to eq qualtrics_response["panelId"]
@@ -30,19 +28,11 @@ describe QualtricsAPI::Panel do
30
28
  expect(subject.category).to eq qualtrics_response["category"]
31
29
  end
32
30
 
33
- it "has a connection" do
34
- expect(subject.connection).to eq(connection)
35
- end
36
-
37
31
  describe "#members" do
38
32
  it "returns a PanelMemberCollection" do
39
33
  expect(subject.members).to be_a QualtricsAPI::PanelMemberCollection
40
34
  end
41
35
 
42
- it "sets connection" do
43
- expect(subject.members.connection).to eq subject.connection
44
- end
45
-
46
36
  it "assigns panel id" do
47
37
  expect(subject.members.id).to eq subject.id
48
38
  end
@@ -1,18 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe QualtricsAPI::ResponseExportCollection do
4
- let(:connection) { double('connection') }
5
-
6
- subject { described_class.new(connection: connection) }
7
-
8
4
  it "has no @all when initialized" do
9
5
  expect(subject.all).to eq []
10
6
  end
11
7
 
12
- it "takes a connection" do
13
- expect(subject.connection).to eq connection
14
- end
15
-
16
8
  describe "#find, #[]" do
17
9
  let(:export_1) { QualtricsAPI::ResponseExport.new(:id => "export1") }
18
10
  let(:export_2) { QualtricsAPI::ResponseExport.new(:id => "export2") }
@@ -27,7 +19,6 @@ describe QualtricsAPI::ResponseExportCollection do
27
19
  sut = subject["eee 3"]
28
20
  expect(sut).to be_a QualtricsAPI::ResponseExport
29
21
  expect(sut.id).to eq "eee 3"
30
- expect(sut.connection).to eq connection
31
22
  end
32
23
  end
33
24
  end
@@ -1,8 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe QualtricsAPI::ResponseExport do
4
- let(:connection) { double('connection') }
5
- subject { described_class.new id: "someId", connection: connection }
4
+ subject { described_class.new id: "someId" }
6
5
 
7
6
  describe "#completed?" do
8
7
  it "is true when @completed is true" do
@@ -74,11 +73,9 @@ describe QualtricsAPI::ResponseExport do
74
73
  end
75
74
 
76
75
  describe "#update_status" do
77
- let(:client) { QualtricsAPI.new TEST_API_TOKEN }
78
-
79
76
  it "updates the status of the export then returns itself" do
80
77
  VCR.use_cassette("response_export_update_success") do
81
- subject = described_class.new id: "ES_cwLvnQHobKfV9t3", connection: client.connection
78
+ subject = described_class.new id: "ES_cwLvnQHobKfV9t3"
82
79
 
83
80
  result = subject.update_status
84
81
 
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe QualtricsAPI::Services::ResponseExportService do
4
-
5
4
  describe "initialize" do
6
5
  let(:params) do
7
6
  {
@@ -21,9 +20,7 @@ describe QualtricsAPI::Services::ResponseExportService do
21
20
  spss_string_length: "15"
22
21
  }
23
22
  end
24
- let(:connection) { double("connection") }
25
-
26
- subject { described_class.new params.merge(connection: connection) }
23
+ subject { described_class.new params }
27
24
 
28
25
  describe "assign options" do
29
26
  before do
@@ -36,12 +33,8 @@ describe QualtricsAPI::Services::ResponseExportService do
36
33
  end
37
34
  end
38
35
 
39
- it "assigns connection" do
40
- expect(subject.connection).to eq connection
41
- end
42
-
43
36
  describe "defaults" do
44
- subject { described_class.new connection: connection }
37
+ subject { described_class.new }
45
38
 
46
39
  it "has default @use_labels - false" do
47
40
  expect(subject.use_labels).to eq false
@@ -63,7 +56,7 @@ describe QualtricsAPI::Services::ResponseExportService do
63
56
 
64
57
  describe "#start" do
65
58
  it "calls url with export params" do
66
- expect(connection).to receive(:get).with("surveys/s_id/responseExports", {
59
+ expect(QualtricsAPI.connection).to receive(:get).with("surveys/s_id/responseExports", {
67
60
  "responseSetId" => "r_set_id",
68
61
  "fileType" => "file type",
69
62
  "lastResponseId" => "l_id",
@@ -82,7 +75,7 @@ describe QualtricsAPI::Services::ResponseExportService do
82
75
  end
83
76
 
84
77
  it "assigns and returns a ResponseExport with the id in the url" do
85
- allow(connection).to receive(:get)
78
+ allow(QualtricsAPI.connection).to receive(:get)
86
79
  .and_return(double('resBody', body: {"result" => { "exportStatus" => "some/url/exportId" }}))
87
80
  sut = subject.start
88
81
  expect(sut).to be_a QualtricsAPI::ResponseExport
@@ -92,11 +85,9 @@ describe QualtricsAPI::Services::ResponseExportService do
92
85
  end
93
86
 
94
87
  describe "#integration" do
95
- let(:client) { QualtricsAPI.new TEST_API_TOKEN }
96
-
97
88
  subject do
98
89
  VCR.use_cassette("response_export_start_success") do
99
- client.surveys["SV_djzgZ6eJXqnIUyF"].export_responses.start
90
+ QualtricsAPI.surveys["SV_djzgZ6eJXqnIUyF"].export_responses.start
100
91
  end
101
92
  end
102
93
 
@@ -1,9 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe QualtricsAPI::SurveyCollection do
4
- let(:connection) { double('connection') }
5
-
6
- subject { described_class.new connection: connection, scope_id: "fake_scopeId" }
4
+ subject { described_class.new scope_id: "fake_scopeId" }
7
5
 
8
6
  it "has a scope_id" do
9
7
  expect(subject.scope_id).to eq "fake_scopeId"
@@ -17,10 +15,6 @@ describe QualtricsAPI::SurveyCollection do
17
15
  expect(subject).to respond_to :scope_id=
18
16
  end
19
17
 
20
- it "takes a connection" do
21
- expect(subject.connection).to eq connection
22
- end
23
-
24
18
  describe "#query_attributes" do
25
19
  it "returns only scope_id" do
26
20
  expect(subject.query_attributes.size).to eq 1
@@ -42,18 +36,14 @@ describe QualtricsAPI::SurveyCollection do
42
36
  sut = subject["s3"]
43
37
  expect(sut).to be_a QualtricsAPI::Survey
44
38
  expect(sut.id).to eq "s3"
45
- expect(sut.connection).to eq connection
46
39
  end
47
40
  end
48
41
 
49
42
  describe "integration" do
50
- let(:client) { QualtricsAPI.new TEST_API_TOKEN }
51
-
52
- subject { described_class.new connection: client.connection }
43
+ subject { described_class.new }
53
44
 
54
45
  describe "#fetch" do
55
46
  describe "when success" do
56
-
57
47
  before do
58
48
  expect(subject.size).to eq 0
59
49
  end
@@ -69,10 +59,6 @@ describe QualtricsAPI::SurveyCollection do
69
59
  expect(subject.first).to be_a QualtricsAPI::Survey
70
60
  end
71
61
 
72
- it "passes down the connection" do
73
- expect(subject.all.first.connection).to eq client.connection
74
- end
75
-
76
62
  it "returns itself" do
77
63
  expect(result).to eq subject
78
64
  end
@@ -12,9 +12,7 @@ describe QualtricsAPI::Survey do
12
12
  }
13
13
  end
14
14
 
15
- let(:connection) { double('connection', get: {}) }
16
-
17
- subject { described_class.new qualtrics_response.merge(connection: connection) }
15
+ subject { described_class.new qualtrics_response }
18
16
 
19
17
  it "has an id" do
20
18
  expect(subject.id).to eq qualtrics_response["id"]
@@ -40,10 +38,6 @@ describe QualtricsAPI::Survey do
40
38
  expect(subject.status).to eq qualtrics_response["status"]
41
39
  end
42
40
 
43
- it "has a connection" do
44
- expect(subject.connection).to eq connection
45
- end
46
-
47
41
  describe "export_responses" do
48
42
  let(:options) do
49
43
  {
@@ -53,8 +47,7 @@ describe QualtricsAPI::Survey do
53
47
 
54
48
  it "inits a ResponseExportService with options" do
55
49
  expect(QualtricsAPI::Services::ResponseExportService).to receive(:new).with(start_date: options[:start_date],
56
- survey_id: subject.id,
57
- connection: subject.connection)
50
+ survey_id: subject.id)
58
51
 
59
52
  subject.export_responses(options)
60
53
  end
@@ -1,14 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe QualtricsAPI do
4
-
5
4
  describe "#new" do
6
-
7
- subject { QualtricsAPI.new("someToken") }
5
+ subject { QualtricsAPI }
8
6
 
9
7
  it "initializes a Client with the token passed" do
10
8
  expect(subject).to be_kind_of(QualtricsAPI::Client)
11
- expect(subject.api_token).to eq "someToken"
12
9
  end
13
10
  end
14
11
  end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'qualtrics_api'
2
+ require 'pry'
2
3
  require 'vcr'
3
4
 
4
5
  TEST_API_TOKEN = "6Wpo0Vsx1cN1kcHivCaGTz5IhOvchLrg1o4L0KOZ"
@@ -7,3 +8,7 @@ VCR.configure do |config|
7
8
  config.cassette_library_dir = "fixtures/vcr_cassettes"
8
9
  config.hook_into :faraday
9
10
  end
11
+
12
+ QualtricsAPI.configure do |config|
13
+ config.api_token = TEST_API_TOKEN
14
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qualtrics_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yurui Zhang
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-06-30 00:00:00.000000000 Z
13
+ date: 2015-07-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday
@@ -124,6 +124,20 @@ dependencies:
124
124
  - - "~>"
125
125
  - !ruby/object:Gem::Version
126
126
  version: '4.5'
127
+ - !ruby/object:Gem::Dependency
128
+ name: pry
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: 0.10.1
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: 0.10.1
127
141
  description: |-
128
142
  A Ruby wrapper for Qualtrics REST API version 3.0.
129
143
  See https://co1.qualtrics.com/APIDocs/ for API documents.
@@ -157,6 +171,7 @@ files:
157
171
  - fixtures/vcr_cassettes/survey_collection_fetch_with_scopeId_success.yml
158
172
  - lib/qualtrics_api.rb
159
173
  - lib/qualtrics_api/client.rb
174
+ - lib/qualtrics_api/configurable.rb
160
175
  - lib/qualtrics_api/panel.rb
161
176
  - lib/qualtrics_api/panel_collection.rb
162
177
  - lib/qualtrics_api/panel_import.rb