chimpanzee 0.0.1
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 +7 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/Guardfile +25 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +8 -0
- data/chimpanzee.gemspec +32 -0
- data/lib/chimpanzee.rb +26 -0
- data/lib/chimpanzee/api2.rb +32 -0
- data/lib/chimpanzee/api2/api_caller.rb +76 -0
- data/lib/chimpanzee/api2/collectors.rb +8 -0
- data/lib/chimpanzee/api2/missing_method.rb +10 -0
- data/lib/chimpanzee/api2/surveys.rb +124 -0
- data/lib/chimpanzee/api2/user.rb +7 -0
- data/lib/chimpanzee/configuration.rb +11 -0
- data/lib/chimpanzee/exceptions.rb +4 -0
- data/lib/chimpanzee/version.rb +3 -0
- data/test/chimpanzee/api2/api_caller_test.rb +45 -0
- data/test/chimpanzee/api2/collectors_test.rb +21 -0
- data/test/chimpanzee/api2/surveys_test.rb +28 -0
- data/test/chimpanzee/api2/user_test.rb +20 -0
- data/test/chimpanzee/api2_test.rb +23 -0
- data/test/chimpanzee/configuration_test.rb +18 -0
- data/test/chimpanzee_test.rb +30 -0
- data/test/support/configure_chimpanzee.rb +9 -0
- data/test/test_helper.rb +19 -0
- metadata +219 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b0516672dd2273303e50c721922002b9756129fc
|
4
|
+
data.tar.gz: 5fe6722aa270e72388e0c217fd3722a115e54058
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: adf84d6e7c1bc695f88d1596a40fc273a8153cc906b87a58e9f70ecb70c661c072ca9b8b8e4796a2af36d2bec2d6989a9b8f4c20a2dd9cd490d7837a2fed6586
|
7
|
+
data.tar.gz: 981c7d1b70385dc340fe2c0433bc794180a3418c57a254c01a08b2f6f281d5bc57bb0aeb318dcdda0a7543bcd16775da90504da241e25ffab2a1faa275f985ac
|
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
guard :minitest do
|
2
|
+
# with Minitest::Unit
|
3
|
+
watch(%r{^test/(.*)\/?(.*)_test\.rb$})
|
4
|
+
watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}#{m[2]}_test.rb" }
|
5
|
+
watch(%r{^test/test_helper\.rb$}) { 'test' }
|
6
|
+
|
7
|
+
# with Minitest::Spec
|
8
|
+
# watch(%r{^spec/(.*)_spec\.rb$})
|
9
|
+
# watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
10
|
+
# watch(%r{^spec/spec_helper\.rb$}) { 'spec' }
|
11
|
+
|
12
|
+
# Rails 4
|
13
|
+
# watch(%r{^app/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
|
14
|
+
# watch(%r{^app/controllers/application_controller\.rb$}) { 'test/controllers' }
|
15
|
+
# watch(%r{^app/controllers/(.+)_controller\.rb$}) { |m| "test/integration/#{m[1]}_test.rb" }
|
16
|
+
# watch(%r{^app/views/(.+)_mailer/.+}) { |m| "test/mailers/#{m[1]}_mailer_test.rb" }
|
17
|
+
# watch(%r{^lib/(.+)\.rb$}) { |m| "test/lib/#{m[1]}_test.rb" }
|
18
|
+
# watch(%r{^test/.+_test\.rb$})
|
19
|
+
# watch(%r{^test/test_helper\.rb$}) { 'test' }
|
20
|
+
|
21
|
+
# Rails < 4
|
22
|
+
# watch(%r{^app/controllers/(.*)\.rb$}) { |m| "test/functional/#{m[1]}_test.rb" }
|
23
|
+
# watch(%r{^app/helpers/(.*)\.rb$}) { |m| "test/helpers/#{m[1]}_test.rb" }
|
24
|
+
# watch(%r{^app/models/(.*)\.rb$}) { |m| "test/unit/#{m[1]}_test.rb" }
|
25
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Maciej Litwiniuk
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Chimpanzee
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'chimpanzee'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install chimpanzee
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it ( https://github.com/[my-github-username]/chimpanzee/fork )
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/chimpanzee.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'chimpanzee/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "chimpanzee"
|
8
|
+
spec.version = Chimpanzee::VERSION
|
9
|
+
spec.authors = ["Maciej Litwiniuk"]
|
10
|
+
spec.email = ["maciej@litwiniuk.net"]
|
11
|
+
spec.summary = %q{API wrapper for surveymonkey.net}
|
12
|
+
spec.description = %q{Simple API wrapper for surveymonkey.net API version 2.0}
|
13
|
+
spec.homepage = "https://github.com/prograils/chimpanzee"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "minitest"
|
24
|
+
spec.add_development_dependency "guard"
|
25
|
+
spec.add_development_dependency "guard-minitest"
|
26
|
+
spec.add_development_dependency "pry"
|
27
|
+
spec.add_development_dependency "pry-remote"
|
28
|
+
spec.add_development_dependency "pry-nav"
|
29
|
+
spec.add_development_dependency "fakeweb", ["~> 1.3"]
|
30
|
+
spec.add_runtime_dependency "httparty", ["~> 0.13.0"]
|
31
|
+
|
32
|
+
end
|
data/lib/chimpanzee.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require "chimpanzee/api2"
|
2
|
+
require "chimpanzee/configuration"
|
3
|
+
require "chimpanzee/exceptions"
|
4
|
+
require "chimpanzee/version"
|
5
|
+
|
6
|
+
module Chimpanzee
|
7
|
+
class << self
|
8
|
+
attr_writer :configuration
|
9
|
+
attr_writer :api
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.configuration
|
13
|
+
return @configuration if @configuration
|
14
|
+
self.configuration = Configuration.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.configure
|
18
|
+
yield(configuration)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.api
|
22
|
+
return @api if @api
|
23
|
+
self.api = Chimpanzee::Api2
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Chimpanzee
|
2
|
+
module Api2
|
3
|
+
autoload :ApiCaller, 'chimpanzee/api2/api_caller'
|
4
|
+
autoload :Collectors, 'chimpanzee/api2/collectors'
|
5
|
+
autoload :MissingMethod, 'chimpanzee/api2/missing_method'
|
6
|
+
autoload :Surveys, 'chimpanzee/api2/surveys'
|
7
|
+
autoload :User, 'chimpanzee/api2/user'
|
8
|
+
class << self
|
9
|
+
attr_writer :api_caller
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
def self.surveys
|
14
|
+
@surveys ||= Api2::Surveys.new
|
15
|
+
end
|
16
|
+
def self.user
|
17
|
+
@user ||= Api2::User.new
|
18
|
+
end
|
19
|
+
def self.collectors
|
20
|
+
@collectors ||= Api2::Collectors.new
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.api_caller
|
24
|
+
return @api_caller if @api_caller
|
25
|
+
self.api_caller = ApiCaller.new
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.get_api_caller(*args)
|
29
|
+
self.api_caller.get_api_caller(*args)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
module Chimpanzee
|
3
|
+
module Api2
|
4
|
+
class ApiCaller
|
5
|
+
include HTTParty
|
6
|
+
base_uri Chimpanzee.configuration.surveymonkey_host
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
config = Chimpanzee.configuration
|
10
|
+
if not config.api_key
|
11
|
+
raise Chimpanzee::InvalidConfigException
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def method_missing(method, *args, &block)
|
16
|
+
response = nil
|
17
|
+
response = build_query(method, *args)
|
18
|
+
begin
|
19
|
+
JSON.parse(response.body)
|
20
|
+
rescue
|
21
|
+
nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def get_access_token(client_id, client_secret, redirect_uri, code)
|
26
|
+
opts = {
|
27
|
+
body: {
|
28
|
+
client_secret: client_secret,
|
29
|
+
code: code,
|
30
|
+
client_id: client_id,
|
31
|
+
grant_type: 'authorization_code',
|
32
|
+
redirect_uri: redirect_uri
|
33
|
+
},
|
34
|
+
query: {
|
35
|
+
api_key: Chimpanzee.configuration.api_key
|
36
|
+
}
|
37
|
+
}
|
38
|
+
response = self.class.post '/oauth/token', opts
|
39
|
+
Rails.logger.info response
|
40
|
+
Rails.logger.info response.body
|
41
|
+
begin
|
42
|
+
JSON.parse(response.body)
|
43
|
+
rescue
|
44
|
+
nil
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
def build_query(method, *args)
|
50
|
+
url = build_url(method)
|
51
|
+
options = build_options(args.is_a?(Array) && args.first.is_a?(Hash) ? args.first : {})
|
52
|
+
self.class.post url, options
|
53
|
+
end
|
54
|
+
|
55
|
+
def build_options(args={})
|
56
|
+
{
|
57
|
+
headers: {
|
58
|
+
'Content-Type'=> 'application/json',
|
59
|
+
'Authorization'=> "bearer #{Chimpanzee.configuration.access_token}"
|
60
|
+
},
|
61
|
+
query: {
|
62
|
+
api_key: Chimpanzee.configuration.api_key
|
63
|
+
}.merge(args),
|
64
|
+
body: {
|
65
|
+
}.merge(args).to_json
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
69
|
+
def build_url(method)
|
70
|
+
url = ['/v2']
|
71
|
+
url << method.to_s.split('_', 2)
|
72
|
+
url.flatten.join('/')
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
module Chimpanzee
|
2
|
+
module Api2
|
3
|
+
class Surveys
|
4
|
+
|
5
|
+
include MissingMethod
|
6
|
+
|
7
|
+
def export_survey_responses_to_csv_array(survey_id, survey=nil)
|
8
|
+
survey_id = survey_id.to_s
|
9
|
+
survey ||= get_survey_details survey_id: survey_id
|
10
|
+
respondents = get_respondent_list survey_id: survey_id,
|
11
|
+
fields: ['date_start', 'date_modified']
|
12
|
+
respondents = extract_respondents(respondents)
|
13
|
+
questions = map_questions(survey)
|
14
|
+
answers = map_answers(survey)
|
15
|
+
responses = get_responses_in_batches(survey_id, respondents.keys)
|
16
|
+
responses = map_responses(responses, answers)
|
17
|
+
build_csv_array(questions, answers, responses, respondents)
|
18
|
+
end
|
19
|
+
|
20
|
+
## builds CSV array ready to be exported to ie. Excel
|
21
|
+
## First row acts as title row
|
22
|
+
def build_csv_array(questions, answers, responses, respondents)
|
23
|
+
csv_array = []
|
24
|
+
if questions
|
25
|
+
title_row = []
|
26
|
+
respondents_order = []
|
27
|
+
respondents_fields = respondents.values.first
|
28
|
+
if respondents_fields && !respondents_fields.empty?
|
29
|
+
respondents_fields.keys.each{|k| respondents_order << k }
|
30
|
+
questions_order = []
|
31
|
+
title_row.concat respondents_order
|
32
|
+
questions.each.each do |key, q|
|
33
|
+
title_row << q
|
34
|
+
questions_order << key
|
35
|
+
end
|
36
|
+
csv_array << title_row
|
37
|
+
responses.each do |key, response|
|
38
|
+
row = []
|
39
|
+
respondents_order.each do |k|
|
40
|
+
row << respondents[key][k]
|
41
|
+
end
|
42
|
+
questions_order.each do |qid|
|
43
|
+
row << (response[qid] || []).join(", ")
|
44
|
+
end
|
45
|
+
csv_array << row
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
csv_array
|
50
|
+
end
|
51
|
+
|
52
|
+
## Create more readable structure with responses
|
53
|
+
## Hash - key -> respondent id, value: hash with key of question_id
|
54
|
+
## Anwers are array of texts
|
55
|
+
def map_responses(responses_raw, answers)
|
56
|
+
responses = {}
|
57
|
+
if responses_raw && responses_raw['data'].present?
|
58
|
+
responses_raw['data'].each do |response|
|
59
|
+
if response && response['questions']
|
60
|
+
response_hash = {}
|
61
|
+
response['questions'].each do |question|
|
62
|
+
answer_array = []
|
63
|
+
question['answers'].each do |answer|
|
64
|
+
answer_array << (answer['text'] || answers[answer['col']])
|
65
|
+
end
|
66
|
+
response_hash[question['question_id']] = answer_array
|
67
|
+
end
|
68
|
+
responses[response['respondent_id']] = response_hash
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
responses
|
73
|
+
end
|
74
|
+
|
75
|
+
def extract_respondents(respondents)
|
76
|
+
respondents_hash = {}
|
77
|
+
if respondents && respondents['data'].present? && respondents['data']['respondents'].present?
|
78
|
+
respondents['data']['respondents'].each do |respondent|
|
79
|
+
respondents_hash[respondent['respondent_id']] = respondent
|
80
|
+
end
|
81
|
+
end
|
82
|
+
respondents_hash
|
83
|
+
end
|
84
|
+
|
85
|
+
def map_questions(survey)
|
86
|
+
questions = {}
|
87
|
+
if survey && survey['data'].present? && survey['data']['pages'].present?
|
88
|
+
survey['data']['pages'].each do |page|
|
89
|
+
page['questions'].each do |question|
|
90
|
+
questions[question['question_id']] = question['heading']
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
questions
|
95
|
+
end
|
96
|
+
|
97
|
+
def map_answers(survey)
|
98
|
+
answers = {}
|
99
|
+
if survey && survey['data'].present? && survey['data']['pages'].present?
|
100
|
+
survey['data']['pages'].each do |page|
|
101
|
+
page['questions'].each do |question|
|
102
|
+
question['answers'].each do |answer|
|
103
|
+
answers[answer['answer_id']] = answer['weight'] || answer['text']
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
answers
|
109
|
+
end
|
110
|
+
|
111
|
+
## SurveyMonkey API allows fetching max of 100 responses per request
|
112
|
+
def get_responses_in_batches(survey_id, respondent_ids)
|
113
|
+
ret = { 'data' => [] }
|
114
|
+
while respondent_ids.count > 0
|
115
|
+
respondent_ids_batch = respondent_ids.shift(100)
|
116
|
+
responses = get_responses survey_id: survey_id,
|
117
|
+
respondent_ids: respondent_ids_batch
|
118
|
+
ret['data'].concat responses['data'] if responses
|
119
|
+
end
|
120
|
+
ret
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Chimpanzee
|
4
|
+
module Api2
|
5
|
+
describe ApiCaller do
|
6
|
+
describe ".initialize" do
|
7
|
+
it "should raise error if api_key is not set" do
|
8
|
+
old = Chimpanzee.configuration.api_key
|
9
|
+
Chimpanzee.configuration.api_key = nil
|
10
|
+
Proc.new do
|
11
|
+
ApiCaller.new
|
12
|
+
end.must_raise Chimpanzee::InvalidConfigException
|
13
|
+
Chimpanzee.configuration.api_key = old
|
14
|
+
end
|
15
|
+
it "should raise error if access_token is not set" do
|
16
|
+
old = Chimpanzee.configuration.access_token
|
17
|
+
Chimpanzee.configuration.access_token = nil
|
18
|
+
Proc.new do
|
19
|
+
ApiCaller.new
|
20
|
+
end.must_raise Chimpanzee::InvalidConfigException
|
21
|
+
Chimpanzee.configuration.access_token = old
|
22
|
+
end
|
23
|
+
end
|
24
|
+
describe "with valid api key" do
|
25
|
+
before do
|
26
|
+
configure_chimpanzee
|
27
|
+
end
|
28
|
+
|
29
|
+
it "build url with given parameters" do
|
30
|
+
a = ApiCaller.new
|
31
|
+
url = a.build_url 'surveys_get_survey_list'
|
32
|
+
url.must_equal "/v2/surveys/get_survey_list"
|
33
|
+
end
|
34
|
+
|
35
|
+
it "calls get_survey_list and gets the result" do
|
36
|
+
FakeWeb.register_uri(:post, "https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=#{Chimpanzee.configuration.api_key}", body: '{"status":0,"data":{"surveys":[{"survey_id":"123456"}],"page":1,"page_size":1000}}')
|
37
|
+
a = ApiCaller.new
|
38
|
+
resp = a.surveys_get_survey_list
|
39
|
+
resp.is_a?(Hash).must_equal true
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Chimpanzee
|
4
|
+
module Api2
|
5
|
+
describe Collectors do
|
6
|
+
before do
|
7
|
+
configure_chimpanzee
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should transfer method call to Api2 class" do
|
11
|
+
mock_obj = Minitest::Mock.new
|
12
|
+
@api.api_caller = mock_obj
|
13
|
+
mock_obj.expect('user_get_user_details', [])
|
14
|
+
@api.user.get_user_details
|
15
|
+
mock_obj.verify
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Chimpanzee
|
4
|
+
module Api2
|
5
|
+
describe Surveys do
|
6
|
+
before do
|
7
|
+
configure_chimpanzee
|
8
|
+
@api.api_caller = nil
|
9
|
+
end
|
10
|
+
|
11
|
+
after do
|
12
|
+
@api.api_caller = nil
|
13
|
+
end
|
14
|
+
|
15
|
+
it "must transfer method call to Api2 class" do
|
16
|
+
mock_obj = Minitest::Mock.new
|
17
|
+
@api.api_caller = mock_obj
|
18
|
+
mock_obj.expect('surveys_get_survey_list', [])
|
19
|
+
@api.surveys.get_survey_list
|
20
|
+
mock_obj.verify
|
21
|
+
end
|
22
|
+
|
23
|
+
it "must export survey to array" do
|
24
|
+
s = Surveys.new
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Chimpanzee
|
4
|
+
module Api2
|
5
|
+
describe User do
|
6
|
+
before do
|
7
|
+
configure_chimpanzee
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should transfer method call to Api2 class" do
|
11
|
+
mock_obj = Minitest::Mock.new
|
12
|
+
@api.api_caller = mock_obj
|
13
|
+
mock_obj.expect('user_get_user_details', [])
|
14
|
+
@api.user.get_user_details
|
15
|
+
mock_obj.verify
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Chimpanzee
|
4
|
+
describe Api2 do
|
5
|
+
describe "with valid api key" do
|
6
|
+
before do
|
7
|
+
configure_chimpanzee
|
8
|
+
end
|
9
|
+
it "should return surveys object" do
|
10
|
+
Chimpanzee::Api2.surveys.class.must_equal Api2::Surveys
|
11
|
+
end
|
12
|
+
it "should return user object" do
|
13
|
+
Chimpanzee::Api2.user.class.must_equal Api2::User
|
14
|
+
end
|
15
|
+
it "should return collectors object" do
|
16
|
+
Chimpanzee::Api2.collectors.class.must_equal Api2::Collectors
|
17
|
+
end
|
18
|
+
it "should return api_caller object" do
|
19
|
+
Chimpanzee::Api2.api_caller.class.must_equal Api2::ApiCaller
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Chimpanzee
|
4
|
+
describe Configuration do
|
5
|
+
it "should has surveymonkes host already set" do
|
6
|
+
configuration = Configuration.new
|
7
|
+
configuration.surveymonkey_host.must_equal 'https://api.surveymonkey.net'
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should allow changing config values" do
|
11
|
+
configuration = Configuration.new
|
12
|
+
configuration.surveymonkey_host = 'http://google.com'
|
13
|
+
configuration.api_key = 'foobar'
|
14
|
+
configuration.surveymonkey_host.must_equal 'http://google.com'
|
15
|
+
configuration.api_key.must_equal 'foobar'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
describe Chimpanzee do
|
4
|
+
describe "#configuration" do
|
5
|
+
it 'should return configuration' do
|
6
|
+
c = Chimpanzee.configuration
|
7
|
+
c.class.must_equal Chimpanzee::Configuration
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "#configure" do
|
12
|
+
before do
|
13
|
+
Chimpanzee.configure do |c|
|
14
|
+
c.api_key = 'test'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should properly set values in block' do
|
19
|
+
config = Chimpanzee.configuration
|
20
|
+
config.api_key.must_equal 'test'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#api" do
|
25
|
+
it 'should return api object' do
|
26
|
+
c = Chimpanzee.api
|
27
|
+
c.must_equal Chimpanzee::Api2
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
module ConfigureChimpanzee
|
2
|
+
def configure_chimpanzee
|
3
|
+
Chimpanzee.configure do |c|
|
4
|
+
c.api_key = ENV['CHIMPANZEE_API_KEY'] || ENV['API_KEY'] || "test"
|
5
|
+
c.access_token = ENV['CHIMPANZEE_ACCESS_TOKEN'] || ENV['ACCESS_TOKEN'] || "test"
|
6
|
+
end
|
7
|
+
@api = Chimpanzee.api
|
8
|
+
end
|
9
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minitest/unit'
|
3
|
+
require 'minitest/pride'
|
4
|
+
|
5
|
+
require 'chimpanzee'
|
6
|
+
require 'fakeweb'
|
7
|
+
|
8
|
+
## support files
|
9
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
10
|
+
|
11
|
+
class MiniTest::Spec
|
12
|
+
include ConfigureChimpanzee
|
13
|
+
before do
|
14
|
+
FakeWeb.clean_registry
|
15
|
+
end
|
16
|
+
after do
|
17
|
+
FakeWeb.clean_registry
|
18
|
+
end
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,219 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: chimpanzee
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Maciej Litwiniuk
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard-minitest
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry-remote
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry-nav
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: fakeweb
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.3'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.3'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: httparty
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 0.13.0
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.13.0
|
153
|
+
description: Simple API wrapper for surveymonkey.net API version 2.0
|
154
|
+
email:
|
155
|
+
- maciej@litwiniuk.net
|
156
|
+
executables: []
|
157
|
+
extensions: []
|
158
|
+
extra_rdoc_files: []
|
159
|
+
files:
|
160
|
+
- ".gitignore"
|
161
|
+
- Gemfile
|
162
|
+
- Guardfile
|
163
|
+
- LICENSE.txt
|
164
|
+
- README.md
|
165
|
+
- Rakefile
|
166
|
+
- chimpanzee.gemspec
|
167
|
+
- lib/chimpanzee.rb
|
168
|
+
- lib/chimpanzee/api2.rb
|
169
|
+
- lib/chimpanzee/api2/api_caller.rb
|
170
|
+
- lib/chimpanzee/api2/collectors.rb
|
171
|
+
- lib/chimpanzee/api2/missing_method.rb
|
172
|
+
- lib/chimpanzee/api2/surveys.rb
|
173
|
+
- lib/chimpanzee/api2/user.rb
|
174
|
+
- lib/chimpanzee/configuration.rb
|
175
|
+
- lib/chimpanzee/exceptions.rb
|
176
|
+
- lib/chimpanzee/version.rb
|
177
|
+
- test/chimpanzee/api2/api_caller_test.rb
|
178
|
+
- test/chimpanzee/api2/collectors_test.rb
|
179
|
+
- test/chimpanzee/api2/surveys_test.rb
|
180
|
+
- test/chimpanzee/api2/user_test.rb
|
181
|
+
- test/chimpanzee/api2_test.rb
|
182
|
+
- test/chimpanzee/configuration_test.rb
|
183
|
+
- test/chimpanzee_test.rb
|
184
|
+
- test/support/configure_chimpanzee.rb
|
185
|
+
- test/test_helper.rb
|
186
|
+
homepage: https://github.com/prograils/chimpanzee
|
187
|
+
licenses:
|
188
|
+
- MIT
|
189
|
+
metadata: {}
|
190
|
+
post_install_message:
|
191
|
+
rdoc_options: []
|
192
|
+
require_paths:
|
193
|
+
- lib
|
194
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - ">="
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
199
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - ">="
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: '0'
|
204
|
+
requirements: []
|
205
|
+
rubyforge_project:
|
206
|
+
rubygems_version: 2.4.5
|
207
|
+
signing_key:
|
208
|
+
specification_version: 4
|
209
|
+
summary: API wrapper for surveymonkey.net
|
210
|
+
test_files:
|
211
|
+
- test/chimpanzee/api2/api_caller_test.rb
|
212
|
+
- test/chimpanzee/api2/collectors_test.rb
|
213
|
+
- test/chimpanzee/api2/surveys_test.rb
|
214
|
+
- test/chimpanzee/api2/user_test.rb
|
215
|
+
- test/chimpanzee/api2_test.rb
|
216
|
+
- test/chimpanzee/configuration_test.rb
|
217
|
+
- test/chimpanzee_test.rb
|
218
|
+
- test/support/configure_chimpanzee.rb
|
219
|
+
- test/test_helper.rb
|