survey-gizmo-ruby 0.6.0 → 0.7.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.
- data/README.md +1 -1
- data/VERSION +1 -1
- data/lib/survey_gizmo/resource.rb +11 -1
- data/lib/survey_gizmo/survey_gizmo.rb +2 -0
- data/spec/resource_spec.rb +10 -8
- data/spec/support/spec_shared_api_object.rb +23 -5
- data/spec/support/spec_shared_object_with_errors.rb +1 -1
- metadata +19 -19
data/README.md
CHANGED
@@ -28,7 +28,7 @@ Integrate with the [Survey Gizmo API](http://developer.surveygizmo.com/resources
|
|
28
28
|
|
29
29
|
## Adding API Objects
|
30
30
|
|
31
|
-
Currently, the following API objects are included in the gem: `Survey`, `Question`, `Option`, `Page`. If you want to use something that isn't included you can easily write a class that handles it. Here's an example of the `SurveyGizmo::API::Survey` class:
|
31
|
+
Currently, the following API objects are included in the gem: `Survey`, `Question`, `Option`, `Page`, `Response`. If you want to use something that isn't included you can easily write a class that handles it. Here's an example of the `SurveyGizmo::API::Survey` class:
|
32
32
|
|
33
33
|
class Survey
|
34
34
|
# the base where most of the methods for handling the API are stored
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.0
|
@@ -52,6 +52,14 @@ module SurveyGizmo
|
|
52
52
|
resource
|
53
53
|
end
|
54
54
|
|
55
|
+
# Deleted the Resource from Survey Gizmo
|
56
|
+
# @param [Hash] conditions
|
57
|
+
# @return [Boolean]
|
58
|
+
def destroy(conditions)
|
59
|
+
response = Response.new SurveyGizmo.delete(handle_route(:delete, conditions))
|
60
|
+
response.ok?
|
61
|
+
end
|
62
|
+
|
55
63
|
# Define the path where a resource is located
|
56
64
|
# @param [String] path
|
57
65
|
# the path in Survey Gizmo for the resource
|
@@ -103,7 +111,9 @@ module SurveyGizmo
|
|
103
111
|
path = @paths[key]
|
104
112
|
raise "No routes defined for `#{key}` in #{self.name}" unless path
|
105
113
|
options = interp.last.is_a?(Hash) ? interp.pop : path.scan(/:(\w+)/).inject({}){|hash, k| hash.merge(k.to_sym => interp.shift) }
|
106
|
-
path.gsub(/:(\w+)/)
|
114
|
+
path.gsub(/:(\w+)/) do |m|
|
115
|
+
options[$1.to_sym].tap{ |result| raise(SurveyGizmo::URLError, "Missing parameters in request: `#{m}`") unless result }
|
116
|
+
end
|
107
117
|
end
|
108
118
|
end
|
109
119
|
|
data/spec/resource_spec.rb
CHANGED
@@ -11,7 +11,7 @@ describe "Survey Gizmo Resource" do
|
|
11
11
|
let(:create_attributes){ {:title => 'Spec', :test_id => 5} }
|
12
12
|
let(:get_attributes) { create_attributes.merge(:id => 1) }
|
13
13
|
let(:update_attributes){ {:title => 'Updated'} }
|
14
|
-
let(:first_params){ {:id => 1} }
|
14
|
+
let(:first_params){ {:id => 1, :test_id => 5} }
|
15
15
|
let(:uri_paths){
|
16
16
|
{
|
17
17
|
:get => '/test/1',
|
@@ -28,18 +28,20 @@ describe "Survey Gizmo Resource" do
|
|
28
28
|
|
29
29
|
it '#reload' do
|
30
30
|
stub_request(:get, /#{@base}/).to_return(json_response(true, get_attributes))
|
31
|
-
obj = described_class.new(
|
32
|
-
obj.attributes.reject{|k,v| v.blank? }.should ==
|
31
|
+
obj = described_class.new(get_attributes.merge(update_attributes))
|
32
|
+
obj.attributes.reject{|k,v| v.blank? }.should == get_attributes.merge(update_attributes)
|
33
33
|
obj.reload
|
34
34
|
obj.attributes.reject{|k,v| v.blank? }.should == get_attributes
|
35
35
|
end
|
36
36
|
|
37
37
|
it '#valid?'
|
38
|
-
|
39
|
-
it "should track descendants" do
|
40
|
-
SurveyGizmo::Resource.descendants.should include(SurveyGizmoSpec::ResourceTest)
|
41
|
-
end
|
42
38
|
|
39
|
+
it "should raise an error if params are missing" do
|
40
|
+
lambda {
|
41
|
+
SurveyGizmoSpec::ResourceTest.destroy(:test_id => 5)
|
42
|
+
}.should raise_error(SurveyGizmo::URLError, 'Missing parameters in request: `:id`')
|
43
|
+
end
|
44
|
+
|
43
45
|
it_should_behave_like 'an API object'
|
44
46
|
it_should_behave_like 'an object with errors'
|
45
47
|
end
|
@@ -65,7 +67,7 @@ describe "Survey Gizmo Resource" do
|
|
65
67
|
create_attributes.merge(:id => 1)
|
66
68
|
}
|
67
69
|
let(:update_attributes){ {:survey_id => 1234, :page_id => 1, :title => 'Updated'} }
|
68
|
-
let(:first_params){ {:id => 1, :survey_id => 1234} }
|
70
|
+
let(:first_params){ {:id => 1, :survey_id => 1234, :page_id => 1} }
|
69
71
|
let(:uri_paths){
|
70
72
|
{ :get => '/survey/1234/surveyquestion/1',
|
71
73
|
:create => '/survey/1234/surveypage/1/surveyquestion',
|
@@ -3,7 +3,12 @@ shared_examples_for 'an API object' do
|
|
3
3
|
SurveyGizmo.setup(:user => 'test@test.com', :password => 'password')
|
4
4
|
end
|
5
5
|
|
6
|
-
|
6
|
+
it "should be descendant of SurveyGizmo::Resource" do
|
7
|
+
SurveyGizmo::Resource.descendants.should include(described_class)
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
context "#create" do
|
7
12
|
it "should make a request" do
|
8
13
|
stub_api_call(:put)
|
9
14
|
described_class.create(create_attributes)
|
@@ -23,7 +28,7 @@ shared_examples_for 'an API object' do
|
|
23
28
|
end
|
24
29
|
end
|
25
30
|
|
26
|
-
context "get" do
|
31
|
+
context "#get" do
|
27
32
|
it "should make a request" do
|
28
33
|
stub_request(:get, /#{@base}/).to_return(json_response(true, get_attributes))
|
29
34
|
described_class.first(first_params)
|
@@ -42,7 +47,7 @@ shared_examples_for 'an API object' do
|
|
42
47
|
end
|
43
48
|
end
|
44
49
|
|
45
|
-
context "update" do
|
50
|
+
context "instance#update" do
|
46
51
|
before(:each) do
|
47
52
|
@obj = described_class.new(get_attributes)
|
48
53
|
@obj.__send__(:clean!)
|
@@ -73,7 +78,7 @@ shared_examples_for 'an API object' do
|
|
73
78
|
|
74
79
|
end
|
75
80
|
|
76
|
-
context "destroy" do
|
81
|
+
context "instance#destroy" do
|
77
82
|
before(:each) do
|
78
83
|
@obj = described_class.new(get_attributes)
|
79
84
|
@obj.__send__(:clean!)
|
@@ -103,7 +108,20 @@ shared_examples_for 'an API object' do
|
|
103
108
|
end
|
104
109
|
end
|
105
110
|
|
106
|
-
context '#
|
111
|
+
context '#destroy', :focused => true do
|
112
|
+
it "should make a request" do
|
113
|
+
stub_api_call(:delete)
|
114
|
+
described_class.destroy(first_params)
|
115
|
+
a_request(:delete, /#{@base}#{uri_paths[:delete]}/).should have_been_made
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should return result" do
|
119
|
+
stub_api_call(:delete)
|
120
|
+
described_class.destroy(first_params).should be_true
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
context 'instance#save' do
|
107
125
|
it "should call create on a new resource" do
|
108
126
|
stub_api_call(:put)
|
109
127
|
obj = described_class.new(create_attributes)
|
@@ -8,7 +8,7 @@ shared_examples_for 'an object with errors' do
|
|
8
8
|
|
9
9
|
context "class methods" do
|
10
10
|
it { described_class.first(get_attributes).should be_nil }
|
11
|
-
it { described_class.all(get_attributes).should be_empty }
|
11
|
+
it { described_class.all(get_attributes).should be_empty }
|
12
12
|
end
|
13
13
|
|
14
14
|
context "instance methods" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: survey-gizmo-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-03-02 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &70321870190520 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.0.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70321870190520
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: i18n
|
27
|
-
requirement: &
|
27
|
+
requirement: &70321870172640 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70321870172640
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: virtus
|
38
|
-
requirement: &
|
38
|
+
requirement: &70321870170640 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.0.5
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70321870170640
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: httparty
|
49
|
-
requirement: &
|
49
|
+
requirement: &70321870169380 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70321870169380
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: bluecloth
|
60
|
-
requirement: &
|
60
|
+
requirement: &70321870167280 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70321870167280
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: yard
|
71
|
-
requirement: &
|
71
|
+
requirement: &70321870160460 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.7.0
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70321870160460
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: bundler
|
82
|
-
requirement: &
|
82
|
+
requirement: &70321870158060 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 1.0.0
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70321870158060
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: jeweler
|
93
|
-
requirement: &
|
93
|
+
requirement: &70321870156640 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: 1.6.4
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70321870156640
|
102
102
|
description: ''
|
103
103
|
email: self@ripthejacker.com
|
104
104
|
executables: []
|
@@ -148,7 +148,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
148
148
|
version: '0'
|
149
149
|
segments:
|
150
150
|
- 0
|
151
|
-
hash:
|
151
|
+
hash: 746384856005912275
|
152
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
153
|
none: false
|
154
154
|
requirements:
|