the-city-admin 0.1.0 → 0.1.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.
Files changed (135) hide show
  1. data/.autotest +9 -0
  2. data/.gitignore +4 -0
  3. data/.rspec +2 -0
  4. data/.rvmrc +1 -0
  5. data/.yardoc/checksums +50 -0
  6. data/.yardoc/object_types +0 -0
  7. data/.yardoc/objects/root.dat +0 -0
  8. data/.yardoc/proxy_types +0 -0
  9. data/Gemfile +11 -0
  10. data/Gemfile.lock +51 -0
  11. data/README +1 -0
  12. data/Rakefile +32 -0
  13. data/index.rb +123 -0
  14. data/lib/common.rb +163 -72
  15. data/lib/the_city_admin.rb +2 -2
  16. data/notes.txt +21 -0
  17. data/spec/api/address_list_spec.rb +0 -0
  18. data/spec/api/address_spec.rb +0 -0
  19. data/spec/api/group_address_list_spec.rb +93 -0
  20. data/spec/api/group_address_spec.rb +19 -0
  21. data/spec/api/group_checkin_list_spec.rb +93 -0
  22. data/spec/api/group_event_attendance_list_spec.rb +93 -0
  23. data/spec/api/group_export_spec.rb +19 -0
  24. data/spec/api/group_invitation_list_spec.rb +23 -0
  25. data/spec/api/group_invitation_spec.rb +19 -0
  26. data/spec/api/group_list_spec.rb +23 -0
  27. data/spec/api/group_role_list_spec.rb +23 -0
  28. data/spec/api/group_role_spec.rb +19 -0
  29. data/spec/api/group_spec.rb +19 -0
  30. data/spec/api/group_tag_list_spec.rb +23 -0
  31. data/spec/api/group_tag_spec.rb +19 -0
  32. data/spec/api/metric_list_spec.rb +22 -0
  33. data/spec/api/metric_measurement_list_spec.rb +23 -0
  34. data/spec/api/metric_measurement_spec.rb +19 -0
  35. data/spec/api/metric_spec.rb +19 -0
  36. data/spec/api/role_list_spec.rb +75 -0
  37. data/spec/api/role_spec.rb +19 -0
  38. data/spec/api/skill_list_spec.rb +76 -0
  39. data/spec/api/skilled_user_id_list_spec.rb +82 -0
  40. data/spec/api/skilled_user_list_spec.rb +82 -0
  41. data/spec/api/tag_group_list_spec.rb +72 -0
  42. data/spec/api/tag_list_spec.rb +77 -0
  43. data/spec/api/tag_spec.rb +19 -0
  44. data/spec/api/terminology_list_spec.rb +75 -0
  45. data/spec/api/terminology_spec.rb +19 -0
  46. data/spec/api/user_address_list_spec.rb +92 -0
  47. data/spec/api/user_address_spec.rb +19 -0
  48. data/spec/api/user_admin_privilege_list_spec.rb +94 -0
  49. data/spec/api/user_admin_privilege_spec.rb +19 -0
  50. data/spec/api/user_barcode_spec.rb +19 -0
  51. data/spec/api/user_family_list_spec.rb +91 -0
  52. data/spec/api/user_family_member_spec.rb +19 -0
  53. data/spec/api/user_invitation_list_spec.rb +91 -0
  54. data/spec/api/user_invitation_spec.rb +19 -0
  55. data/spec/api/user_list_spec.rb +76 -0
  56. data/spec/api/user_note_list_spec.rb +91 -0
  57. data/spec/api/user_note_spec.rb +19 -0
  58. data/spec/api/user_process_list_spec.rb +90 -0
  59. data/spec/api/user_process_spec.rb +19 -0
  60. data/spec/api/user_role_list_spec.rb +92 -0
  61. data/spec/api/user_role_spec.rb +18 -0
  62. data/spec/api/user_skill_list_spec.rb +91 -0
  63. data/spec/api/user_skill_spec.rb +19 -0
  64. data/spec/api/user_spec.rb +37 -0
  65. data/spec/api/web_hook_list_spec.rb +75 -0
  66. data/spec/api/web_hook_spec.rb +19 -0
  67. data/spec/factories/address.rb +21 -0
  68. data/spec/factories/address_list.rb +13 -0
  69. data/spec/factories/checkin.rb +35 -0
  70. data/spec/factories/checkin_list.rb +13 -0
  71. data/spec/factories/group.rb +30 -0
  72. data/spec/factories/group_address.rb +21 -0
  73. data/spec/factories/group_address_list.rb +13 -0
  74. data/spec/factories/group_checkin.rb +35 -0
  75. data/spec/factories/group_checkin_list.rb +13 -0
  76. data/spec/factories/group_event_attendance.rb +19 -0
  77. data/spec/factories/group_event_attendance_list.rb +13 -0
  78. data/spec/factories/group_export.rb +16 -0
  79. data/spec/factories/group_export_list.rb +13 -0
  80. data/spec/factories/group_role.rb +19 -0
  81. data/spec/factories/group_tag.rb +12 -0
  82. data/spec/factories/role.rb +22 -0
  83. data/spec/factories/role_list.rb +13 -0
  84. data/spec/factories/skill.rb +13 -0
  85. data/spec/factories/skill_list.rb +13 -0
  86. data/spec/factories/skilled_user_id_list.rb +13 -0
  87. data/spec/factories/skilled_user_list.rb +13 -0
  88. data/spec/factories/tag.rb +13 -0
  89. data/spec/factories/tag_group_list.rb +13 -0
  90. data/spec/factories/tag_list.rb +13 -0
  91. data/spec/factories/terminology.rb +10 -0
  92. data/spec/factories/terminology_list.rb +13 -0
  93. data/spec/factories/user.rb +51 -0
  94. data/spec/factories/user_address.rb +19 -0
  95. data/spec/factories/user_address_list.rb +13 -0
  96. data/spec/factories/user_admin_privilege.rb +11 -0
  97. data/spec/factories/user_admin_privilege_list.rb +13 -0
  98. data/spec/factories/user_barcode.rb +15 -0
  99. data/spec/factories/user_family_list.rb +13 -0
  100. data/spec/factories/user_family_member.rb +28 -0
  101. data/spec/factories/user_invitation.rb +16 -0
  102. data/spec/factories/user_invitation_list.rb +13 -0
  103. data/spec/factories/user_list.rb +13 -0
  104. data/spec/factories/user_note.rb +28 -0
  105. data/spec/factories/user_note_list.rb +13 -0
  106. data/spec/factories/user_process.rb +11 -0
  107. data/spec/factories/user_process_list.rb +13 -0
  108. data/spec/factories/user_role.rb +17 -0
  109. data/spec/factories/user_role_list.rb +13 -0
  110. data/spec/factories/user_skill.rb +10 -0
  111. data/spec/factories/user_skill_list.rb +13 -0
  112. data/spec/factories/web_hook.rb +12 -0
  113. data/spec/factories/web_hook_list.rb +13 -0
  114. data/spec/functional/the_city_admin_spec.rb +20 -0
  115. data/spec/readers/user_reader_spec.rb +7 -0
  116. data/spec/spec_helper.rb +31 -0
  117. data/spec/writers/skill_writer_spec.rb +0 -0
  118. data/spec/writers/tag_writer_spec.rb +80 -0
  119. data/spec/writers/user_writer_spec.rb +80 -0
  120. data/status.txt +187 -0
  121. data/test_scripts/addresses.rb +36 -0
  122. data/test_scripts/barcodes_checkins.rb +45 -0
  123. data/test_scripts/city_keys.rb +6 -0
  124. data/test_scripts/familes.rb +83 -0
  125. data/test_scripts/groups.rb +124 -0
  126. data/test_scripts/metrics.rb +72 -0
  127. data/test_scripts/roles.rb +94 -0
  128. data/test_scripts/skills.rb +55 -0
  129. data/test_scripts/tags.rb +71 -0
  130. data/test_scripts/terminology.rb +62 -0
  131. data/test_scripts/users.rb +325 -0
  132. data/test_scripts/webhooks.rb +57 -0
  133. data/thecity_admin_api.gemspec +39 -0
  134. data/thecity_headers.rb +27 -0
  135. metadata +238 -3
@@ -1,7 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'openssl'
3
3
  require 'cgi'
4
- require 'Base64'
4
+ require 'base64'
5
5
  require 'openssl'
6
6
  require 'net/http'
7
7
  require 'net/https'
@@ -9,7 +9,7 @@ require 'typhoeus'
9
9
  require 'json'
10
10
 
11
11
 
12
- TCA_ENV = 'development'
12
+ TCA_ENV = 'development' unless defined?(TCA_ENV)
13
13
  #TCA_ENV = 'staging'
14
14
 
15
15
  # The path to the lib directory.
data/notes.txt ADDED
@@ -0,0 +1,21 @@
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
File without changes
File without changes
@@ -0,0 +1,93 @@
1
+ require File.join(Dir.pwd, 'spec', 'spec_helper')
2
+
3
+ describe 'GroupAddressList' do
4
+
5
+ before do
6
+ simulate_connection_to_server
7
+ end
8
+
9
+ after do
10
+
11
+ end
12
+
13
+
14
+ it 'should pass if group address list attribute is not specifed' do
15
+ group_id = 123
16
+ request_data = FactoryGirl.attributes_for(:group_address_list, {
17
+ :total_entries => 1,
18
+ :total_pages => 1,
19
+ :addresses => [FactoryGirl.attributes_for(:group_address)]
20
+ }).to_json
21
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
22
+ address_list = TheCity::GroupAddressList.new({:group_id => group_id})
23
+
24
+ address = address_list[0]
25
+ address.city.should == "Sammamish"
26
+ end
27
+
28
+
29
+ it 'should pass if group address list is empty' do
30
+ group_id = 123
31
+ page = 2
32
+ request_data = FactoryGirl.attributes_for(:group_address_list, {
33
+ :total_entries => 1,
34
+ :total_pages => 1,
35
+ :addresses => []
36
+ }).to_json
37
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
38
+ address_list = TheCity::GroupAddressList.new({:group_id => group_id})
39
+
40
+ address_list.empty?.should be_true
41
+ end
42
+
43
+
44
+ it 'should return a valid list of group addresses' do
45
+ group_id = 123
46
+ page = 2
47
+ request_data = FactoryGirl.attributes_for(:group_address_list, {
48
+ :total_entries => 1,
49
+ :total_pages => 1,
50
+ :addresses => [FactoryGirl.attributes_for(:group_address)]
51
+ }).to_json
52
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
53
+ address_list = TheCity::GroupAddressList.new({:group_id => group_id, :page => 2})
54
+
55
+ address = address_list[0]
56
+ address.city.should == "Sammamish"
57
+ end
58
+
59
+
60
+ it 'should iterate using *each* method' do
61
+ group_id = 123
62
+ request_data = FactoryGirl.attributes_for(:group_address_list, {
63
+ :total_entries => 1,
64
+ :total_pages => 1,
65
+ :addresses => [FactoryGirl.attributes_for(:group_address)]
66
+ }).to_json
67
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
68
+ address_list = TheCity::GroupAddressList.new({:group_id => group_id})
69
+
70
+ addresses = []
71
+ address_list.each { |address| addresses << address.city }
72
+ addresses.should == ["Sammamish"]
73
+ end
74
+
75
+
76
+ it 'should iterate using *collect* method' do
77
+ group_id = 123
78
+ request_data = FactoryGirl.attributes_for(:group_address_list, {
79
+ :total_entries => 1,
80
+ :total_pages => 1,
81
+ :addresses => [FactoryGirl.attributes_for(:group_address)]
82
+ }).to_json
83
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
84
+ address_list = TheCity::GroupAddressList.new({:group_id => group_id})
85
+
86
+ addresses = address_list.collect { |address| address.city }
87
+ addresses.should == ["Sammamish"]
88
+ end
89
+
90
+
91
+ end
92
+
93
+
@@ -0,0 +1,19 @@
1
+ require File.join(Dir.pwd, 'spec', 'spec_helper')
2
+
3
+ describe 'GroupAddress' do
4
+
5
+ before do
6
+ simulate_connection_to_server
7
+ end
8
+
9
+ after do
10
+
11
+ end
12
+
13
+
14
+ it 'should pass if ....'
15
+
16
+
17
+ end
18
+
19
+
@@ -0,0 +1,93 @@
1
+ require File.join(Dir.pwd, 'spec', 'spec_helper')
2
+
3
+ describe 'GroupCheckinList' do
4
+
5
+ before do
6
+ simulate_connection_to_server
7
+ end
8
+
9
+ after do
10
+
11
+ end
12
+
13
+
14
+ it 'should pass if group checkin list attribute is not specifed' do
15
+ group_id = 123
16
+ request_data = FactoryGirl.attributes_for(:group_checkin_list, {
17
+ :total_entries => 1,
18
+ :total_pages => 1,
19
+ :checkins => [FactoryGirl.attributes_for(:group_checkin)]
20
+ }).to_json
21
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
22
+ checkin_list = TheCity::GroupCheckinList.new({:group_id => group_id})
23
+
24
+ checkin = checkin_list[0]
25
+ checkin.parent_group_name.should == "Ballard Childrens ministry"
26
+ end
27
+
28
+
29
+ it 'should pass if group checkin list is empty' do
30
+ group_id = 123
31
+ page = 2
32
+ request_data = FactoryGirl.attributes_for(:group_checkin_list, {
33
+ :total_entries => 1,
34
+ :total_pages => 1,
35
+ :checkins => []
36
+ }).to_json
37
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
38
+ checkin_list = TheCity::GroupCheckinList.new({:group_id => group_id})
39
+
40
+ checkin_list.empty?.should be_true
41
+ end
42
+
43
+
44
+ it 'should return a valid list of group checkins' do
45
+ group_id = 123
46
+ page = 2
47
+ request_data = FactoryGirl.attributes_for(:group_checkin_list, {
48
+ :total_entries => 1,
49
+ :total_pages => 1,
50
+ :checkins => [FactoryGirl.attributes_for(:group_checkin)]
51
+ }).to_json
52
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
53
+ checkin_list = TheCity::GroupCheckinList.new({:group_id => group_id, :page => 2})
54
+
55
+ checkin = checkin_list[0]
56
+ checkin.parent_group_name.should == "Ballard Childrens ministry"
57
+ end
58
+
59
+
60
+ it 'should iterate using *each* method' do
61
+ group_id = 123
62
+ request_data = FactoryGirl.attributes_for(:group_checkin_list, {
63
+ :total_entries => 1,
64
+ :total_pages => 1,
65
+ :checkins => [FactoryGirl.attributes_for(:group_checkin)]
66
+ }).to_json
67
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
68
+ checkin_list = TheCity::GroupCheckinList.new({:group_id => group_id})
69
+
70
+ checkins = []
71
+ checkin_list.each { |checkin| checkins << checkin.parent_group_name }
72
+ checkins.should == ["Ballard Childrens ministry"]
73
+ end
74
+
75
+
76
+ it 'should iterate using *collect* method' do
77
+ group_id = 123
78
+ request_data = FactoryGirl.attributes_for(:group_checkin_list, {
79
+ :total_entries => 1,
80
+ :total_pages => 1,
81
+ :checkins => [FactoryGirl.attributes_for(:group_checkin)]
82
+ }).to_json
83
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
84
+ checkin_list = TheCity::GroupCheckinList.new({:group_id => group_id})
85
+
86
+ checkins = checkin_list.collect { |checkin| checkin.parent_group_name }
87
+ checkins.should == ["Ballard Childrens ministry"]
88
+ end
89
+
90
+
91
+ end
92
+
93
+
@@ -0,0 +1,93 @@
1
+ require File.join(Dir.pwd, 'spec', 'spec_helper')
2
+
3
+ describe 'GroupEventAttendanceList' do
4
+
5
+ before do
6
+ simulate_connection_to_server
7
+ end
8
+
9
+ after do
10
+
11
+ end
12
+
13
+
14
+ it 'should pass if group event attendance list attribute is not specifed' do
15
+ group_id = 123
16
+ request_data = FactoryGirl.attributes_for(:group_event_attendance_list, {
17
+ :total_entries => 1,
18
+ :total_pages => 1,
19
+ :event_attendances => [FactoryGirl.attributes_for(:group_event_attendance)]
20
+ }).to_json
21
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
22
+ attendance_list = TheCity::GroupEventAttendanceList.new({:group_id => group_id})
23
+
24
+ attendance = attendance_list[0]
25
+ attendance.user.should == "Johnny Smith"
26
+ end
27
+
28
+
29
+ it 'should pass if group checkin list is empty' do
30
+ group_id = 123
31
+ page = 2
32
+ request_data = FactoryGirl.attributes_for(:group_event_attendance_list, {
33
+ :total_entries => 1,
34
+ :total_pages => 1,
35
+ :event_attendances => []
36
+ }).to_json
37
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
38
+ attendance_list = TheCity::GroupEventAttendanceList.new({:group_id => group_id})
39
+
40
+ attendance_list.empty?.should be_true
41
+ end
42
+
43
+
44
+ it 'should return a valid list of group event attendances' do
45
+ group_id = 123
46
+ page = 2
47
+ request_data = FactoryGirl.attributes_for(:group_event_attendance_list, {
48
+ :total_entries => 1,
49
+ :total_pages => 1,
50
+ :event_attendances => [FactoryGirl.attributes_for(:group_event_attendance)]
51
+ }).to_json
52
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
53
+ attendance_list = TheCity::GroupEventAttendanceList.new({:group_id => group_id, :page => 2})
54
+
55
+ attendance = attendance_list[0]
56
+ attendance.user.should == "Johnny Smith"
57
+ end
58
+
59
+
60
+ it 'should iterate using *each* method' do
61
+ group_id = 123
62
+ request_data = FactoryGirl.attributes_for(:group_event_attendance_list, {
63
+ :total_entries => 1,
64
+ :total_pages => 1,
65
+ :event_attendances => [FactoryGirl.attributes_for(:group_event_attendance)]
66
+ }).to_json
67
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
68
+ attendance_list = TheCity::GroupEventAttendanceList.new({:group_id => group_id})
69
+
70
+ attendances = []
71
+ attendance_list.each { |attendance| attendances << attendance.user }
72
+ attendances.should == ["Johnny Smith"]
73
+ end
74
+
75
+
76
+ it 'should iterate using *collect* method' do
77
+ group_id = 123
78
+ request_data = FactoryGirl.attributes_for(:group_event_attendance_list, {
79
+ :total_entries => 1,
80
+ :total_pages => 1,
81
+ :event_attendances => [FactoryGirl.attributes_for(:group_event_attendance)]
82
+ }).to_json
83
+ TheCity.stub(:admin_request).and_return( TheCityResponse.new(200, request_data) )
84
+ attendance_list = TheCity::GroupEventAttendanceList.new({:group_id => group_id})
85
+
86
+ attendances = attendance_list.collect { |attendance| attendance.user }
87
+ attendances.should == ["Johnny Smith"]
88
+ end
89
+
90
+
91
+ end
92
+
93
+
@@ -0,0 +1,19 @@
1
+ require File.join(Dir.pwd, 'spec', 'spec_helper')
2
+
3
+ describe 'GroupExport' do
4
+
5
+ before do
6
+ simulate_connection_to_server
7
+ end
8
+
9
+ after do
10
+
11
+ end
12
+
13
+
14
+ it 'should pass if ....'
15
+
16
+
17
+ end
18
+
19
+
@@ -0,0 +1,23 @@
1
+ require File.join(Dir.pwd, 'spec', 'spec_helper')
2
+
3
+ describe 'GroupInvitationList' do
4
+
5
+ before do
6
+ simulate_connection_to_server
7
+ end
8
+
9
+ after do
10
+
11
+ end
12
+
13
+
14
+ it 'should pass if group invitation list attribute is not specifed'
15
+ it 'should pass if group invitation list is empty'
16
+ it 'should return a valid list of group invitations'
17
+ it 'should iterate using *each* method'
18
+ it 'should iterate using *collect* method'
19
+
20
+
21
+ end
22
+
23
+
@@ -0,0 +1,19 @@
1
+ require File.join(Dir.pwd, 'spec', 'spec_helper')
2
+
3
+ describe 'GroupInvitation' do
4
+
5
+ before do
6
+ simulate_connection_to_server
7
+ end
8
+
9
+ after do
10
+
11
+ end
12
+
13
+
14
+ it 'should pass if ....'
15
+
16
+
17
+ end
18
+
19
+
@@ -0,0 +1,23 @@
1
+ require File.join(Dir.pwd, 'spec', 'spec_helper')
2
+
3
+ describe 'GroupList' do
4
+
5
+ before do
6
+ simulate_connection_to_server
7
+ end
8
+
9
+ after do
10
+
11
+ end
12
+
13
+
14
+ it 'should pass if group list attribute is not specifed'
15
+ it 'should pass if group list is empty'
16
+ it 'should return a valid list of groups'
17
+ it 'should iterate using *each* method'
18
+ it 'should iterate using *collect* method'
19
+
20
+
21
+ end
22
+
23
+
@@ -0,0 +1,23 @@
1
+ require File.join(Dir.pwd, 'spec', 'spec_helper')
2
+
3
+ describe 'GroupRoleList' do
4
+
5
+ before do
6
+ simulate_connection_to_server
7
+ end
8
+
9
+ after do
10
+
11
+ end
12
+
13
+
14
+ it 'should pass if group role list attribute is not specifed'
15
+ it 'should pass if group role list is empty'
16
+ it 'should return a valid list of group roles'
17
+ it 'should iterate using *each* method'
18
+ it 'should iterate using *collect* method'
19
+
20
+
21
+ end
22
+
23
+