survey-gizmo-ruby 1.0.5 → 2.0.0

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.
@@ -1,35 +1,33 @@
1
1
  shared_examples_for 'an object with errors' do
2
2
  before(:each) do
3
- SurveyGizmo.setup(:user => 'test@test.com', :password => 'password')
3
+ SurveyGizmo.setup(user: 'test@test.com', password: 'password')
4
4
  stub_request(:any, /#{@base}/).to_return(json_response(false, 'There was an error!'))
5
5
  end
6
-
7
- it "should be in zombie state if requests fail"
8
6
 
9
7
  context "class methods" do
10
8
  it { described_class.first(get_attributes).should be_nil }
11
- it { described_class.all(get_attributes).should be_empty }
9
+ it { described_class.all(get_attributes).should be_empty }
12
10
  end
13
11
 
14
12
  context "instance methods" do
15
13
  before(:each) do
16
14
  @obj = described_class.new(create_attributes)
17
15
  end
18
-
16
+
19
17
  it "should have an errors array" do
20
18
  @obj.errors.should == []
21
19
  end
22
-
20
+
23
21
  it "should add errors on failed requests" do
24
22
  @obj.save.should == false
25
23
  @obj.errors.should include('There was an error!')
26
24
  end
27
-
25
+
28
26
  it "should empty the errors array if object gets saved" do
29
27
  stub_request(:any, /#{@base}/).to_return(json_response(false, 'There was an error!'), json_response(true, get_attributes))
30
28
  @obj.save.should == false
31
29
  @obj.errors.should_not be_empty
32
- @obj.save.should == true
30
+ @obj.save.id.nil?.should == false
33
31
  @obj.errors.should be_empty
34
32
  end
35
33
  end
@@ -1,42 +1,25 @@
1
1
  module SurveyGizmoSpec
2
2
  class ResourceTest
3
3
  include SurveyGizmo::Resource
4
-
4
+
5
5
  attribute :id, Integer
6
6
  attribute :title, String
7
7
  attribute :test_id, Integer
8
-
8
+
9
9
  # routes
10
10
  route '/test/:id', :via => :get
11
11
  route '/test/:test_id/resource', :via => :create
12
12
  route '/test/:test_id/resource/:id', :via => [:update, :delete]
13
-
14
- def to_param_options
15
- {:id => self.id, :test_id => self.test_id}
16
- end
17
- end
18
13
 
19
- class CollectionTest
20
- include SurveyGizmo::Resource
21
-
22
- attribute :id, Integer
23
- attribute :title, String
24
-
25
- # routes
26
- route '/test/:id', :via => :get
27
- route '/test/collection', :via => :create
28
- route '/test/collection/:id', :via => [:update, :delete]
29
-
30
14
  def to_param_options
31
- {:id => self.id, :test_id => self.test_id}
15
+ {id: self.id, test_id: self.test_id}
32
16
  end
33
17
  end
34
18
 
35
19
  class GenericResource
36
20
  include SurveyGizmo::Resource
37
-
21
+
38
22
  attribute :id, Integer
39
23
  attribute :title, String
40
-
41
24
  end
42
25
  end
@@ -1,107 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "SurveyGizmo" do
4
- it "should have a base uri" do
3
+ describe SurveyGizmo do
4
+ it 'should have a base uri' do
5
5
  SurveyGizmo.base_uri.should == 'https://restapi.surveygizmo.com/v3'
6
6
  end
7
7
 
8
- it "should allow basic authentication configuration" do
9
- SurveyGizmo.setup(:user => 'test@test.com', :password => 'password')
10
- SurveyGizmo.default_options[:default_params].should == {'user:md5' => 'test@test.com:5f4dcc3b5aa765d61d8327deb882cf99'}
8
+ it 'should raise an error if auth isn\'t configured' do
9
+ #SurveyGizmo.reset
10
+ #expect(SurveyGizmo::API::Survey.all).to raise_exception
11
11
  end
12
12
 
13
- it "should raise an error if auth isn't configured"
14
-
15
- describe "Collection" do
16
- before(:each) do
17
- @array = [
18
- {:id => 1, :title => 'Test 1'},
19
- {:id => 2, :title => 'Test 2'},
20
- {:id => 3, :title => 'Test 3'},
21
- {:id => 4, :title => 'Test 4'}
22
- ]
23
-
24
- SurveyGizmo::Collection.send :public, *SurveyGizmo::Collection.private_instance_methods
25
- end
26
-
27
- let(:described_class) { SurveyGizmoSpec::CollectionTest }
28
-
29
- context "class" do
30
- before(:each) do
31
- described_class.collection :generic_resources
32
- end
33
-
34
- subject { SurveyGizmo::Collection.new(described_class, :generic_resources, @array) }
35
-
36
- it { should_not be_loaded }
37
-
38
- it "should set the options in the collections property" do
39
- described_class.collections.should == {:generic_resources => {:parent => described_class, :target => :generic_resources}}
40
- end
41
-
42
- it "should load objects using the given class" do
43
- subject.first.should be_instance_of(SurveyGizmoSpec::GenericResource)
44
- end
45
-
46
- it "should be loaded before iteration" do
47
- subject.should_not be_loaded
48
- subject.each
49
- subject.should be_loaded
50
- end
51
- end
52
-
53
- context '#collection' do
54
- before(:each) do
55
- described_class.collection(:resources, 'ResourceTest')
56
- end
57
-
58
- it { lambda{ described_class.collection :resources, 'ResourceTest'}.should_not raise_error }
59
-
60
- it "should have an accessor for the collection" do
61
- described_class.new.should respond_to('resources')
62
- described_class.new.should respond_to('resources=')
63
- end
64
-
65
- it "should set an empty collection" do
66
- described_class.collection(:resources, 'ResourceTest')
67
- obj = described_class.new()
68
- obj.resources.should be_empty
69
- end
70
-
71
- it "should set a collection" do
72
- described_class.collection(:resources, 'ResourceTest')
73
- obj = described_class.new()
74
- obj.resources = @array
75
- obj.resources.should be_instance_of(SurveyGizmo::Collection)
76
- obj.resources.length.should == @array.length
77
- end
78
-
79
- it "should set a collection from a hash" do
80
- obj = described_class.new(:id => 1, :resources => @array)
81
- obj.resources.should be_instance_of(SurveyGizmo::Collection)
82
- obj.resources.length.should == @array.length
83
- end
84
-
85
- it "can handle multiple collections" do
86
- described_class.collection(:generic_resources)
87
- described_class.new.should respond_to('resources')
88
- described_class.new.should respond_to('generic_resources')
89
- end
90
-
91
- it "can handle nested collections" do
92
- pending("Needs to be changed to work with suite. Right now it only passes in isolation.")
93
- SurveyGizmoSpec::ResourceTest.collection :generic_resources
94
- @generic_resource_list = [
95
- {:id => 1, :title => 'Generic Test 5'},
96
- {:id => 2, :title => 'Generic Test 6'},
97
- {:id => 3, :title => 'Generic Test 7'}
98
- ]
99
-
100
- @array << {:id => 99, :generic_resources => @generic_resource_list}
101
- obj = described_class.new(:id => 1, :resources => @array)
102
- obj.resources.first.should be_instance_of(SurveyGizmoSpec::ResourceTest)
103
- obj.resources.detect{|r| r.id == 99 }.generic_resources.first.should be_instance_of(SurveyGizmoSpec::GenericResource)
104
- end
105
- end
13
+ it 'should allow basic authentication configuration' do
14
+ SurveyGizmo.setup(user: 'test@test.com', password: 'password')
15
+ SurveyGizmo.default_options[:default_params].should == {'user:md5' => 'test@test.com:5f4dcc3b5aa765d61d8327deb882cf99'}
106
16
  end
107
17
  end
@@ -3,27 +3,32 @@ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
- gem.name = "survey-gizmo-ruby"
7
- gem.version = "1.0.5"
8
- gem.authors = ["Kabari Hendrick", "Chris Horn", "Adrien Jarthon"]
9
- gem.email = ["adrien.jarthon@dimelo.com"]
10
- gem.description = "Gem to use the SurveyGizmo.com REST API, v3+"
11
- gem.summary = "Gem to use the SurveyGizmo.com REST API, v3+"
12
- gem.homepage = "http://github.com/RipTheJacker/survey-gizmo-ruby"
13
- gem.licenses = ["MIT"]
6
+ gem.name = 'survey-gizmo-ruby'
7
+ gem.version = '2.0.0'
8
+ gem.authors = ['Kabari Hendrick', 'Chris Horn', 'Adrien Jarthon', 'Lumos Labs, Inc.']
9
+ gem.email = ['adrien.jarthon@dimelo.com']
10
+ gem.description = 'Gem to use the SurveyGizmo.com REST API, v3+'
11
+ gem.summary = 'Gem to use the SurveyGizmo.com REST API, v3+'
12
+ gem.homepage = 'http://github.com/RipTheJacker/survey-gizmo-ruby'
13
+ gem.licenses = ['MIT']
14
+ gem.required_ruby_version = '>= 1.9'
14
15
 
15
- gem.add_dependency 'activesupport', ">= 3.0"
16
- gem.add_dependency 'i18n'
17
- gem.add_dependency 'virtus', ">= 1.0.0"
18
- gem.add_dependency 'httparty'
16
+ gem.add_dependency 'activesupport', '>= 3.0'
19
17
  gem.add_dependency 'addressable'
20
- gem.add_development_dependency 'webmock'
21
- gem.add_development_dependency 'rspec', "~> 2.11.0"
18
+ gem.add_dependency 'awesome_print'
19
+ gem.add_dependency 'httparty'
20
+ gem.add_dependency 'i18n'
21
+ gem.add_dependency 'virtus', '>= 1.0.0'
22
+
23
+ gem.add_development_dependency 'bluecloth'
24
+ gem.add_development_dependency 'net-http-spy'
25
+ gem.add_development_dependency 'rspec', '~> 2.11.0'
22
26
  gem.add_development_dependency 'rake'
27
+ gem.add_development_dependency 'webmock'
28
+ gem.add_development_dependency 'yard'
23
29
 
24
30
  gem.files = `git ls-files`.split($/)
25
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
31
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
26
32
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
27
- gem.require_paths = ["lib"]
33
+ gem.require_paths = ['lib']
28
34
  end
29
-
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: survey-gizmo-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kabari Hendrick
8
8
  - Chris Horn
9
9
  - Adrien Jarthon
10
+ - Lumos Labs, Inc.
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2015-08-06 00:00:00.000000000 Z
14
+ date: 2015-03-25 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: activesupport
@@ -27,7 +28,7 @@ dependencies:
27
28
  - !ruby/object:Gem::Version
28
29
  version: '3.0'
29
30
  - !ruby/object:Gem::Dependency
30
- name: i18n
31
+ name: addressable
31
32
  requirement: !ruby/object:Gem::Requirement
32
33
  requirements:
33
34
  - - ">="
@@ -41,19 +42,19 @@ dependencies:
41
42
  - !ruby/object:Gem::Version
42
43
  version: '0'
43
44
  - !ruby/object:Gem::Dependency
44
- name: virtus
45
+ name: awesome_print
45
46
  requirement: !ruby/object:Gem::Requirement
46
47
  requirements:
47
48
  - - ">="
48
49
  - !ruby/object:Gem::Version
49
- version: 1.0.0
50
+ version: '0'
50
51
  type: :runtime
51
52
  prerelease: false
52
53
  version_requirements: !ruby/object:Gem::Requirement
53
54
  requirements:
54
55
  - - ">="
55
56
  - !ruby/object:Gem::Version
56
- version: 1.0.0
57
+ version: '0'
57
58
  - !ruby/object:Gem::Dependency
58
59
  name: httparty
59
60
  requirement: !ruby/object:Gem::Requirement
@@ -69,7 +70,7 @@ dependencies:
69
70
  - !ruby/object:Gem::Version
70
71
  version: '0'
71
72
  - !ruby/object:Gem::Dependency
72
- name: addressable
73
+ name: i18n
73
74
  requirement: !ruby/object:Gem::Requirement
74
75
  requirements:
75
76
  - - ">="
@@ -83,7 +84,35 @@ dependencies:
83
84
  - !ruby/object:Gem::Version
84
85
  version: '0'
85
86
  - !ruby/object:Gem::Dependency
86
- name: webmock
87
+ name: virtus
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 1.0.0
93
+ type: :runtime
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 1.0.0
100
+ - !ruby/object:Gem::Dependency
101
+ name: bluecloth
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ - !ruby/object:Gem::Dependency
115
+ name: net-http-spy
87
116
  requirement: !ruby/object:Gem::Requirement
88
117
  requirements:
89
118
  - - ">="
@@ -124,6 +153,34 @@ dependencies:
124
153
  - - ">="
125
154
  - !ruby/object:Gem::Version
126
155
  version: '0'
156
+ - !ruby/object:Gem::Dependency
157
+ name: webmock
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
+ - !ruby/object:Gem::Dependency
171
+ name: yard
172
+ requirement: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ type: :development
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
127
184
  description: Gem to use the SurveyGizmo.com REST API, v3+
128
185
  email:
129
186
  - adrien.jarthon@dimelo.com
@@ -147,8 +204,8 @@ files:
147
204
  - lib/survey_gizmo/api/response.rb
148
205
  - lib/survey_gizmo/api/survey.rb
149
206
  - lib/survey_gizmo/api/survey_campaign.rb
150
- - lib/survey_gizmo/collection.rb
151
207
  - lib/survey_gizmo/resource.rb
208
+ - lib/survey_gizmo/rest_response.rb
152
209
  - lib/survey_gizmo/survey_gizmo.rb
153
210
  - spec/resource_spec.rb
154
211
  - spec/spec_helper.rb
@@ -173,7 +230,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
173
230
  requirements:
174
231
  - - ">="
175
232
  - !ruby/object:Gem::Version
176
- version: '0'
233
+ version: '1.9'
177
234
  required_rubygems_version: !ruby/object:Gem::Requirement
178
235
  requirements:
179
236
  - - ">="
@@ -181,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
238
  version: '0'
182
239
  requirements: []
183
240
  rubyforge_project:
184
- rubygems_version: 2.4.2
241
+ rubygems_version: 2.2.2
185
242
  signing_key:
186
243
  specification_version: 4
187
244
  summary: Gem to use the SurveyGizmo.com REST API, v3+
@@ -1,72 +0,0 @@
1
- module SurveyGizmo
2
- class Collection
3
-
4
- private
5
- # @param [Class] resource
6
- # @param [Symbol] name
7
- # @param [Array] values in hashes
8
- def initialize(resource, name, values)
9
- @array = Array(values)
10
- @collection = []
11
- @loaded = false
12
- @options = resource.collections[name]
13
- end
14
-
15
- public
16
-
17
- # @private
18
- def length
19
- @array.length
20
- end
21
-
22
- # @private
23
- def each
24
- lazy_load
25
- if block_given?
26
- @collection.each{ |o| yield(o) }
27
- else
28
- @collection.each
29
- end
30
- end
31
-
32
- # @private
33
- def method_missing(meth, *args, &blk)
34
- lazy_load
35
- @collection.send(meth, *args, &blk)
36
- end
37
-
38
- # @private
39
- def model
40
- return @model if defined?(@model)
41
- return (@model = options[:target]) if options[:target].is_a?(Class)
42
- name_string = options[:target].is_a?(Symbol) ? ActiveSupport::Inflector.classify(options[:target]) : options[:target]
43
- @model = name_string[/::/] ? Object.const_get?(name_string) : Resource.descendants.detect{ |d| ActiveSupport::Inflector.demodulize(d.name) == name_string }
44
- raise NameError, "#{name_string} is not a descendant of SurveyGizmo::Resource" unless @model
45
- @model
46
- end
47
-
48
-
49
- protected
50
- attr_accessor :options
51
-
52
- def lazy_load
53
- return if loaded?
54
- @collection = @array.map{|hash| load_object(hash) }
55
- mark_loaded
56
- end
57
-
58
- def load_object(obj_or_attributes)
59
- return obj_or_attributes if loaded?
60
- obj_or_attributes.is_a?(Hash) ? model.load(obj_or_attributes) : obj_or_attributes
61
- end
62
-
63
- def mark_loaded
64
- @loaded = true
65
- end
66
-
67
- def loaded?
68
- @loaded
69
- end
70
-
71
- end
72
- end