survey-gizmo-ruby 1.0.5 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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