the-city-admin 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. data/.gitignore +3 -0
  2. data/.rvmrc +1 -1
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +8 -14
  5. data/README.rdoc +58 -0
  6. data/{test_scripts → examples}/addresses.rb +0 -0
  7. data/{test_scripts → examples}/barcodes_checkins.rb +0 -0
  8. data/{test_scripts → examples}/city_keys.rb +0 -0
  9. data/{test_scripts → examples}/familes.rb +0 -0
  10. data/{test_scripts → examples}/groups.rb +0 -0
  11. data/{test_scripts → examples}/metrics.rb +0 -0
  12. data/{test_scripts → examples}/roles.rb +0 -0
  13. data/{test_scripts → examples}/skills.rb +0 -0
  14. data/{test_scripts → examples}/tags.rb +0 -0
  15. data/{test_scripts → examples}/terminology.rb +0 -0
  16. data/examples/thecity_headers.rb +49 -0
  17. data/{test_scripts → examples}/users.rb +0 -0
  18. data/{test_scripts → examples}/webhooks.rb +0 -0
  19. data/index.rb +17 -137
  20. data/lib/api/pledge.rb +40 -0
  21. data/lib/api/pledge_list.rb +74 -0
  22. data/lib/api/user_process_answer.rb +22 -0
  23. data/lib/api/user_process_answer_list.rb +64 -0
  24. data/lib/readers/address_list_reader.rb +1 -1
  25. data/lib/readers/address_reader.rb +1 -1
  26. data/lib/readers/api_reader.rb +4 -4
  27. data/lib/readers/checkin_list_reader.rb +1 -1
  28. data/lib/readers/checkin_reader.rb +1 -1
  29. data/lib/readers/family_reader.rb +1 -1
  30. data/lib/readers/group_address_list_reader.rb +1 -1
  31. data/lib/readers/group_checkin_list_reader.rb +1 -1
  32. data/lib/readers/group_event_attendance_list_reader.rb +1 -1
  33. data/lib/readers/group_export_list_reader.rb +1 -1
  34. data/lib/readers/group_invitation_list_reader.rb +1 -1
  35. data/lib/readers/group_list_reader.rb +3 -5
  36. data/lib/readers/group_reader.rb +1 -1
  37. data/lib/readers/group_role_list_reader.rb +1 -1
  38. data/lib/readers/group_tag_list_reader.rb +1 -1
  39. data/lib/readers/metric_list_reader.rb +1 -1
  40. data/lib/readers/metric_measurement_list_reader.rb +1 -1
  41. data/lib/readers/metric_measurement_reader.rb +1 -1
  42. data/lib/readers/metric_reader.rb +1 -1
  43. data/lib/readers/pledge_list_reader.rb +23 -0
  44. data/lib/readers/pledge_reader.rb +21 -0
  45. data/lib/readers/role_list_reader.rb +1 -1
  46. data/lib/readers/skill_list_reader.rb +1 -1
  47. data/lib/readers/skilled_user_id_list_reader.rb +1 -1
  48. data/lib/readers/skilled_user_list_reader.rb +1 -1
  49. data/lib/readers/tag_group_list_reader.rb +1 -1
  50. data/lib/readers/tag_list_reader.rb +1 -1
  51. data/lib/readers/tag_reader.rb +1 -1
  52. data/lib/readers/terminology_list_reader.rb +1 -1
  53. data/lib/readers/terminology_reader.rb +1 -1
  54. data/lib/readers/user_address_list_reader.rb +1 -1
  55. data/lib/readers/user_admin_privilege_list_reader.rb +1 -1
  56. data/lib/readers/user_count_reader.rb +1 -1
  57. data/lib/readers/user_family_list_reader.rb +1 -1
  58. data/lib/readers/user_invitation_list_reader.rb +1 -1
  59. data/lib/readers/user_list_reader.rb +1 -1
  60. data/lib/readers/user_note_list_reader.rb +1 -1
  61. data/lib/readers/user_process_answer_list_reader.rb +24 -0
  62. data/lib/readers/user_process_list_reader.rb +1 -1
  63. data/lib/readers/user_reader.rb +1 -1
  64. data/lib/readers/user_role_list_reader.rb +1 -1
  65. data/lib/readers/user_skill_list_reader.rb +1 -1
  66. data/lib/readers/web_hook_list_reader.rb +1 -1
  67. data/spec/api/user_process_answer_list_spec.rb +84 -0
  68. data/spec/factories/user_process_answer.rb +13 -0
  69. data/spec/factories/user_process_answer_list.rb +12 -0
  70. data/spec/spec_helper.rb +1 -0
  71. data/thecity_admin_api.gemspec +3 -3
  72. metadata +32 -20
  73. data/README +0 -1
  74. data/notes.txt +0 -21
  75. data/status.txt +0 -187
  76. data/thecity_headers.rb +0 -27
@@ -10,7 +10,7 @@ module TheCity
10
10
  def initialize(options = {}, cacher = nil)
11
11
  page = options[:page] || 1
12
12
  user_id = options[:user_id]
13
- @class_key = "users_#{user_id}_admin_privileges_#{page}"
13
+ #@class_key = "users_#{user_id}_admin_privileges_#{page}"
14
14
  @url_data_path = "/users/#{user_id}/admin_privileges"
15
15
  @url_data_params = {:page => page}
16
16
 
@@ -16,7 +16,7 @@ module TheCity
16
16
  #
17
17
  # UserCount.new({:filter => :created_in_the_last_7_Days})
18
18
  def initialize(options = {}, cacher = nil)
19
- @class_key = "users_count_#{options[:filter] || ''}"
19
+ #@class_key = "users_count_#{options[:filter] || ''}"
20
20
  @url_data_path = "/users/count"
21
21
 
22
22
  @url_data_params = {:filter => options[:filter] || ''}
@@ -10,7 +10,7 @@ module TheCity
10
10
  def initialize(options = {}, cacher = nil)
11
11
  page = options[:page] || 1
12
12
  user_id = options[:user_id]
13
- @class_key = "users_#{user_id}_family"
13
+ #@class_key = "users_#{user_id}_family"
14
14
  @url_data_path = "/users/#{user_id}/family"
15
15
 
16
16
  # The object to store and load the cache.
@@ -10,7 +10,7 @@ module TheCity
10
10
  def initialize(options = {}, cacher = nil)
11
11
  page = options[:page] || 1
12
12
  user_id = options[:user_id]
13
- @class_key = "users_#{user_id}_invitations_#{page}"
13
+ #@class_key = "users_#{user_id}_invitations_#{page}"
14
14
  @url_data_path = "/users/#{user_id}/invitations"
15
15
  @url_data_params = {:page => page}
16
16
 
@@ -11,7 +11,7 @@ module TheCity
11
11
  page = options[:page] || 1
12
12
  filter = options[:filter]
13
13
 
14
- @class_key = "user_list_#{page}_#{filter.to_s.downcase.gsub(' ','')}"
14
+ #@class_key = "user_list_#{page}_#{filter.to_s.downcase.gsub(' ','')}"
15
15
  @url_data_path = "/users"
16
16
  @url_data_params = {:page => page}
17
17
  @url_data_params.merge!({:filter => filter}) if filter
@@ -10,7 +10,7 @@ module TheCity
10
10
  def initialize(options = {}, cacher = nil)
11
11
  page = options[:page] || 1
12
12
  user_id = options[:user_id]
13
- @class_key = "users_#{user_id}_notes_#{page}"
13
+ #@class_key = "users_#{user_id}_notes_#{page}"
14
14
  @url_data_path = "/users/#{user_id}/notes"
15
15
  @url_data_params = {:page => page}
16
16
 
@@ -0,0 +1,24 @@
1
+ module TheCity
2
+
3
+ class UserProcessAnswerListReader < ApiReader
4
+
5
+ # Constructor.
6
+ #
7
+ # @param options A hash of options for requesting data from the server.
8
+ # :: user_id and process_id are required
9
+ # @param [CacheAdapter] cacher (optional) The cacher to be used to cache data.
10
+ def initialize(options = {}, cacher = nil)
11
+ page = options[:page] || 1
12
+ user_id = options[:user_id]
13
+ process_id = options[:process_id]
14
+ #@class_key = "users_#{user_id}_processes_#{page}"
15
+ @url_data_path = "/users/#{user_id}/processes/#{process_id}/answers"
16
+ @url_data_params = {:page => page}
17
+
18
+ # The object to store and load the cache.
19
+ @cacher = cacher unless cacher.nil?
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -10,7 +10,7 @@ module TheCity
10
10
  def initialize(options = {}, cacher = nil)
11
11
  page = options[:page] || 1
12
12
  user_id = options[:user_id]
13
- @class_key = "users_#{user_id}_processes_#{page}"
13
+ #@class_key = "users_#{user_id}_processes_#{page}"
14
14
  @url_data_path = "/users/#{user_id}/processes"
15
15
  @url_data_params = {:page => page}
16
16
 
@@ -9,7 +9,7 @@ module TheCity
9
9
  # 'include_custom_fields' => true/false. Default is false.
10
10
  # @param [CacheAdapter] cacher (optional) The cacher to be used to cache data.
11
11
  def initialize(user_id, options = {}, cacher = nil)
12
- @class_key = "users_#{user_id}"
12
+ #@class_key = "users_#{user_id}"
13
13
  @url_data_path = "/users/#{user_id}"
14
14
  @url_data_params = {:include_custom_fields => true}
15
15
 
@@ -10,7 +10,7 @@ module TheCity
10
10
  def initialize(options = {}, cacher = nil)
11
11
  page = options[:page] || 1
12
12
  user_id = options[:user_id]
13
- @class_key = "users_#{user_id}_roles_#{page}"
13
+ #@class_key = "users_#{user_id}_roles_#{page}"
14
14
  @url_data_path = "/users/#{user_id}/roles"
15
15
  @url_data_params = {:page => page}
16
16
 
@@ -10,7 +10,7 @@ module TheCity
10
10
  def initialize(options = {}, cacher = nil)
11
11
  page = options[:page] || 1
12
12
  user_id = options[:user_id]
13
- @class_key = "users_#{user_id}_skills_#{page}"
13
+ #@class_key = "users_#{user_id}_skills_#{page}"
14
14
  @url_data_path = "/users/#{user_id}/skills"
15
15
  @url_data_params = {:page => page}
16
16
 
@@ -8,7 +8,7 @@ module TheCity
8
8
  # @param [CacheAdapter] cacher (optional) The cacher to be used to cache data.
9
9
  def initialize(options = {}, cacher = nil)
10
10
  page = options[:page] || 1
11
- @class_key = "web_hooks_#{page}"
11
+ #@class_key = "web_hooks_#{page}"
12
12
  @url_data_path = "/webhooks"
13
13
  @url_data_params = {:page => page}
14
14
 
@@ -0,0 +1,84 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe 'UserProcessAnswerList' do
4
+
5
+ before do
6
+ simulate_connection_to_server
7
+ end
8
+
9
+ after do
10
+ end
11
+
12
+ it 'should pass if user process answer list attribute is not specified' do
13
+ user_id = process_id = 123
14
+ request_data = FactoryGirl.attributes_for(:user_process_answer_list, {
15
+ :total_entries => 1,
16
+ :total_pages => 1,
17
+ :answers => [FactoryGirl.attributes_for(:user_process_answer)]
18
+ }).to_json
19
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
20
+ answer_list = TheCity::UserProcessAnswerList.new({:user_id => user_id, :process_id => process_id})
21
+
22
+ answer = answer_list[0]
23
+ answer.question_id.should == 316
24
+ answer.question.should == "Do you like foo?"
25
+ answer.answer.should == "bar"
26
+ answer.answered_at.should == Time.now.to_date.to_s
27
+ end
28
+
29
+
30
+ it 'should pass if user process answer list is empty' do
31
+ user_id = process_id = 123
32
+ request_data = FactoryGirl.attributes_for(:user_process_answer_list, {
33
+ :total_entries => 1,
34
+ :total_pages => 1,
35
+ :answers => []
36
+ }).to_json
37
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
38
+ answer_list = TheCity::UserProcessAnswerList.new({:user_id => user_id, :process_id => process_id})
39
+
40
+ answer_list.empty?.should be_true
41
+ end
42
+
43
+
44
+ it 'should return a valid list of user process answers' do
45
+ user_id = process_id = 123
46
+ page = 2
47
+ request_data = FactoryGirl.attributes_for(:user_process_answer_list, {
48
+ :total_entries => 1,
49
+ :total_pages => 1,
50
+ :current_page => 2,
51
+ :answers => [FactoryGirl.attributes_for(:user_process_answer)]
52
+ }).to_json
53
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
54
+ answer_list = TheCity::UserProcessAnswerList.new({:user_id => user_id, :page => page})
55
+ answer_list.current_page.should == 2
56
+ answer_list.empty?.should be_false
57
+
58
+ answer = answer_list[0]
59
+ answer.question.should == "Do you like foo?"
60
+ end
61
+
62
+
63
+ it 'should iterate using *each* method' do
64
+ user_id = process_id = 123
65
+ request_data = FactoryGirl.attributes_for(:user_process_answer_list, {
66
+ :total_entries => 1,
67
+ :total_pages => 1,
68
+ :answers => [FactoryGirl.attributes_for(:user_process_answer)]
69
+ }).to_json
70
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
71
+ answer_list = TheCity::UserProcessAnswerList.new({:user_id => user_id})
72
+
73
+ answers = answer_list.map(&:answer)
74
+ answers.should == %w(bar)
75
+ end
76
+
77
+
78
+ it 'should iterate using *collect* method' do
79
+ # redundant test, we can trust Enumerable to do its thang
80
+ end
81
+
82
+ end
83
+
84
+
@@ -0,0 +1,13 @@
1
+ module TheCity
2
+ FactoryGirl.define do
3
+
4
+ factory :user_process_answer, :class => TheCity::UserProcessAnswer do
5
+ question_id 316
6
+ question "Do you like foo?"
7
+ answer "bar"
8
+ answered_at Date.today
9
+ required true
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ module TheCity
2
+ FactoryGirl.define do
3
+
4
+ factory :user_process_answer_list, :class => TheCity::UserProcessAnswerList do
5
+ total_entries 0
6
+ total_pages 0
7
+ per_page 15
8
+ current_page 1
9
+ end
10
+
11
+ end
12
+ end
data/spec/spec_helper.rb CHANGED
@@ -12,6 +12,7 @@ require File.expand_path( File.dirname(__FILE__) + '/../lib/the_city_admin.rb')
12
12
  require 'rubygems'
13
13
  require 'rspec'
14
14
  require 'ruby-debug'
15
+ require 'date'
15
16
 
16
17
  require 'factory_girl'
17
18
  Dir.glob(File.dirname(__FILE__) + "/factories/*").each { |f| require f }
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  PROJECT_GEM = 'the-city-admin'
3
- PROJECT_GEM_VERSION = '0.1.4'
3
+ PROJECT_GEM_VERSION = '0.1.5'
4
4
 
5
5
  s.name = PROJECT_GEM
6
6
  s.version = PROJECT_GEM_VERSION
@@ -12,8 +12,8 @@ Gem::Specification.new do |s|
12
12
  s.authors = ['Wes Hays']
13
13
  s.email = 'wes@onthecity.org'
14
14
 
15
- s.summary = 'Ruby gem/plugin to interact with The City Admin API (http://api.OnTheCity.org).'
16
- s.description = 'Ruby gem/plugin to interact with The City Admin API (http://api.OnTheCity.org).'
15
+ s.summary = 'Ruby gem/plugin to interact with The City Admin API (https://api.OnTheCity.org).'
16
+ s.description = 'Ruby gem/plugin to interact with The City Admin API (https://api.OnTheCity.org). Checkout the project on github for more detail.'
17
17
 
18
18
  s.add_dependency('typhoeus')
19
19
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: the-city-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-01 00:00:00.000000000 Z
12
+ date: 2012-10-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: typhoeus
@@ -27,7 +27,8 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
- description: Ruby gem/plugin to interact with The City Admin API (http://api.OnTheCity.org).
30
+ description: Ruby gem/plugin to interact with The City Admin API (https://api.OnTheCity.org).
31
+ Checkout the project on github for more detail.
31
32
  email: wes@onthecity.org
32
33
  executables: []
33
34
  extensions: []
@@ -43,8 +44,21 @@ files:
43
44
  - .yardoc/proxy_types
44
45
  - Gemfile
45
46
  - Gemfile.lock
46
- - README
47
+ - README.rdoc
47
48
  - Rakefile
49
+ - examples/addresses.rb
50
+ - examples/barcodes_checkins.rb
51
+ - examples/city_keys.rb
52
+ - examples/familes.rb
53
+ - examples/groups.rb
54
+ - examples/metrics.rb
55
+ - examples/roles.rb
56
+ - examples/skills.rb
57
+ - examples/tags.rb
58
+ - examples/terminology.rb
59
+ - examples/thecity_headers.rb
60
+ - examples/users.rb
61
+ - examples/webhooks.rb
48
62
  - index.rb
49
63
  - lib/api/address.rb
50
64
  - lib/api/address_list.rb
@@ -74,6 +88,8 @@ files:
74
88
  - lib/api/metric_list.rb
75
89
  - lib/api/metric_measurement.rb
76
90
  - lib/api/metric_measurement_list.rb
91
+ - lib/api/pledge.rb
92
+ - lib/api/pledge_list.rb
77
93
  - lib/api/role.rb
78
94
  - lib/api/role_list.rb
79
95
  - lib/api/skill.rb
@@ -100,6 +116,8 @@ files:
100
116
  - lib/api/user_note.rb
101
117
  - lib/api/user_note_list.rb
102
118
  - lib/api/user_process.rb
119
+ - lib/api/user_process_answer.rb
120
+ - lib/api/user_process_answer_list.rb
103
121
  - lib/api/user_process_list.rb
104
122
  - lib/api/user_role.rb
105
123
  - lib/api/user_role_list.rb
@@ -131,6 +149,8 @@ files:
131
149
  - lib/readers/metric_measurement_list_reader.rb
132
150
  - lib/readers/metric_measurement_reader.rb
133
151
  - lib/readers/metric_reader.rb
152
+ - lib/readers/pledge_list_reader.rb
153
+ - lib/readers/pledge_reader.rb
134
154
  - lib/readers/role_list_reader.rb
135
155
  - lib/readers/skill_list_reader.rb
136
156
  - lib/readers/skilled_user_id_list_reader.rb
@@ -147,6 +167,7 @@ files:
147
167
  - lib/readers/user_invitation_list_reader.rb
148
168
  - lib/readers/user_list_reader.rb
149
169
  - lib/readers/user_note_list_reader.rb
170
+ - lib/readers/user_process_answer_list_reader.rb
150
171
  - lib/readers/user_process_list_reader.rb
151
172
  - lib/readers/user_reader.rb
152
173
  - lib/readers/user_role_list_reader.rb
@@ -170,7 +191,6 @@ files:
170
191
  - lib/writers/user_skill_writer.rb
171
192
  - lib/writers/user_writer.rb
172
193
  - lib/writers/web_hook_writer.rb
173
- - notes.txt
174
194
  - spec/api/address_list_spec.rb
175
195
  - spec/api/address_spec.rb
176
196
  - spec/api/group_address_list_spec.rb
@@ -212,6 +232,7 @@ files:
212
232
  - spec/api/user_list_spec.rb
213
233
  - spec/api/user_note_list_spec.rb
214
234
  - spec/api/user_note_spec.rb
235
+ - spec/api/user_process_answer_list_spec.rb
215
236
  - spec/api/user_process_list_spec.rb
216
237
  - spec/api/user_process_spec.rb
217
238
  - spec/api/user_role_list_spec.rb
@@ -261,6 +282,8 @@ files:
261
282
  - spec/factories/user_note.rb
262
283
  - spec/factories/user_note_list.rb
263
284
  - spec/factories/user_process.rb
285
+ - spec/factories/user_process_answer.rb
286
+ - spec/factories/user_process_answer_list.rb
264
287
  - spec/factories/user_process_list.rb
265
288
  - spec/factories/user_role.rb
266
289
  - spec/factories/user_role_list.rb
@@ -274,21 +297,7 @@ files:
274
297
  - spec/writers/skill_writer_spec.rb
275
298
  - spec/writers/tag_writer_spec.rb
276
299
  - spec/writers/user_writer_spec.rb
277
- - status.txt
278
- - test_scripts/addresses.rb
279
- - test_scripts/barcodes_checkins.rb
280
- - test_scripts/city_keys.rb
281
- - test_scripts/familes.rb
282
- - test_scripts/groups.rb
283
- - test_scripts/metrics.rb
284
- - test_scripts/roles.rb
285
- - test_scripts/skills.rb
286
- - test_scripts/tags.rb
287
- - test_scripts/terminology.rb
288
- - test_scripts/users.rb
289
- - test_scripts/webhooks.rb
290
300
  - thecity_admin_api.gemspec
291
- - thecity_headers.rb
292
301
  homepage: https://github.com/thecity/thecity-admin-ruby
293
302
  licenses: []
294
303
  post_install_message:
@@ -312,7 +321,7 @@ rubyforge_project: Project on www.github.com
312
321
  rubygems_version: 1.8.24
313
322
  signing_key:
314
323
  specification_version: 3
315
- summary: Ruby gem/plugin to interact with The City Admin API (http://api.OnTheCity.org).
324
+ summary: Ruby gem/plugin to interact with The City Admin API (https://api.OnTheCity.org).
316
325
  test_files:
317
326
  - spec/api/address_list_spec.rb
318
327
  - spec/api/address_spec.rb
@@ -355,6 +364,7 @@ test_files:
355
364
  - spec/api/user_list_spec.rb
356
365
  - spec/api/user_note_list_spec.rb
357
366
  - spec/api/user_note_spec.rb
367
+ - spec/api/user_process_answer_list_spec.rb
358
368
  - spec/api/user_process_list_spec.rb
359
369
  - spec/api/user_process_spec.rb
360
370
  - spec/api/user_role_list_spec.rb
@@ -404,6 +414,8 @@ test_files:
404
414
  - spec/factories/user_note.rb
405
415
  - spec/factories/user_note_list.rb
406
416
  - spec/factories/user_process.rb
417
+ - spec/factories/user_process_answer.rb
418
+ - spec/factories/user_process_answer_list.rb
407
419
  - spec/factories/user_process_list.rb
408
420
  - spec/factories/user_role.rb
409
421
  - spec/factories/user_role_list.rb
data/README DELETED
@@ -1 +0,0 @@
1
- This Ruby project is an API wrapper for TheCity Admin API (OnTheCity.org)
data/notes.txt DELETED
@@ -1,21 +0,0 @@
1
- UserList
2
- - initialize
3
- - attributes...
4
- - Operations (ex. next_page returns the next UserList object)
5
- - Users
6
- - Load data
7
- - URL
8
- - Cache
9
- - File (JSON)
10
- - Database
11
- - Memcache
12
-
13
- User
14
- - attributes...
15
- - Crud operations
16
- - Load data
17
- - URL
18
- - Cache
19
- - File (JSON)
20
- - Database
21
- - Memcache