coach4rb 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.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +31 -0
  6. data/Rakefile +8 -0
  7. data/coach4rb.gemspec +29 -0
  8. data/lib/coach4rb.rb +64 -0
  9. data/lib/coach4rb/builder.rb +142 -0
  10. data/lib/coach4rb/client.rb +116 -0
  11. data/lib/coach4rb/coach.rb +836 -0
  12. data/lib/coach4rb/json_response_parser.rb +11 -0
  13. data/lib/coach4rb/mixin/as_hash.rb +34 -0
  14. data/lib/coach4rb/mixin/auto_constructor.rb +71 -0
  15. data/lib/coach4rb/mixin/basic_auth.rb +23 -0
  16. data/lib/coach4rb/mixin/iterable.rb +40 -0
  17. data/lib/coach4rb/mixin/track_reader.rb +24 -0
  18. data/lib/coach4rb/mixin/track_writer.rb +19 -0
  19. data/lib/coach4rb/privacy.rb +11 -0
  20. data/lib/coach4rb/proxy.rb +143 -0
  21. data/lib/coach4rb/resource/entity.rb +47 -0
  22. data/lib/coach4rb/resource/entry.rb +126 -0
  23. data/lib/coach4rb/resource/page.rb +74 -0
  24. data/lib/coach4rb/resource/partnership.rb +37 -0
  25. data/lib/coach4rb/resource/sport.rb +19 -0
  26. data/lib/coach4rb/resource/subscription.rb +47 -0
  27. data/lib/coach4rb/resource/user.rb +49 -0
  28. data/lib/coach4rb/response_parser.rb +11 -0
  29. data/lib/coach4rb/version.rb +3 -0
  30. data/test/test_access_proxy.rb +58 -0
  31. data/test/test_client.rb +41 -0
  32. data/test/test_coach_client.rb +21 -0
  33. data/test/test_coach_entry.rb +141 -0
  34. data/test/test_coach_partnership.rb +115 -0
  35. data/test/test_coach_subscription.rb +110 -0
  36. data/test/test_coach_user.rb +191 -0
  37. data/test/test_entity.rb +63 -0
  38. data/test/test_entry_resource.rb +36 -0
  39. data/test/test_helper.rb +3 -0
  40. data/test/test_page.rb +82 -0
  41. data/test/test_partnership_resource.rb +69 -0
  42. data/test/test_sport_resource.rb +33 -0
  43. data/test/test_subscription_resource.rb +74 -0
  44. data/test/test_user_resource.rb +104 -0
  45. data/tools/.keep +0 -0
  46. metadata +190 -0
@@ -0,0 +1,115 @@
1
+ require 'test/test_helper'
2
+
3
+ class TestCoachPartnership < MiniTest::Test
4
+
5
+ def setup
6
+ @coach = Coach4rb.configure(
7
+ scheme: 'http',
8
+ host: 'diufvm31.unifr.ch',
9
+ port: 8090,
10
+ path: '/CyberCoachServer/resources',
11
+ debug: true
12
+ )
13
+ end
14
+
15
+
16
+ def test_should_create_partnership
17
+ proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
18
+ assert proxy.create_partnership('arueedlinger','wanze2')
19
+ end
20
+
21
+
22
+ def test_should_create_and_delete_partnership
23
+ proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
24
+ partnership = proxy.create_partnership('arueedlinger','wantsomemoney')
25
+ assert partnership
26
+ sleep 2
27
+ assert proxy.delete_partnership(partnership)
28
+ end
29
+
30
+
31
+ def test_should_breakup_between_users
32
+ proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
33
+ partnership = proxy.create_partnership('arueedlinger','wantsomemoney')
34
+ assert partnership
35
+ sleep 2
36
+ assert proxy.breakup_between('arueedlinger', 'wantsomemoney')
37
+ end
38
+
39
+
40
+ def test_get_partnership_details_of_a_user
41
+ user = @coach.user 'arueedlinger'
42
+ partnerships = user.partnerships.map { |p| @coach.partnership_by_uri p.uri }
43
+ partnerships.each do |p|
44
+ assert p
45
+ assert p.first_user.username
46
+ assert p.first_user.uri
47
+ assert p.second_user.username
48
+ assert p.first_user.uri
49
+ end
50
+ end
51
+
52
+
53
+ def test_should_get_a_partnership
54
+ partnership = @coach.partnership 'mikeshiva', 'arueedlinger'
55
+ assert partnership
56
+ assert partnership.uri
57
+ assert partnership.first_user_confirmed
58
+ assert partnership.second_user_confirmed
59
+ assert partnership.first_user
60
+ assert partnership.second_user
61
+ first_user = @coach.user_by_uri partnership.first_user[:uri]
62
+ assert_equal 'mikeshiva', first_user.username
63
+ end
64
+
65
+
66
+
67
+ def test_should_get_a_partnership_by_its_uri
68
+ partnership = @coach.partnership_by_uri '/CyberCoachServer/resources/partnerships/arueedlinger;asarteam5/'
69
+ assert partnership
70
+ assert partnership.uri
71
+ assert partnership.first_user_confirmed
72
+ assert partnership.second_user_confirmed
73
+ assert partnership.first_user
74
+ assert partnership.second_user
75
+ end
76
+
77
+
78
+
79
+ def test_should_get_partnerships
80
+ partnerships = @coach.partnerships
81
+ assert partnerships
82
+ assert_equal 5, partnerships.size
83
+
84
+ partnerships = @coach.partnerships {}
85
+ assert partnerships
86
+ assert_equal 5, partnerships.size
87
+
88
+ partnerships = @coach.partnerships query: {start: 0, size: 10}
89
+ assert partnerships
90
+ assert_equal 10, partnerships.size
91
+ assert_equal 0, partnerships.start
92
+ assert_equal 10, partnerships.end
93
+
94
+ 10.times do |i|
95
+ assert partnerships[i]
96
+ end
97
+ end
98
+
99
+
100
+
101
+ def test_should_get_10_partnerships
102
+ partnerships = @coach.partnerships query: {start: 0, size: 10}
103
+ assert partnerships.items
104
+ assert_equal 10, partnerships.size
105
+ 10.times do |i|
106
+ assert partnerships[i]
107
+ assert partnerships[i].is_a? Coach4rb::Resource::Partnership
108
+ end
109
+
110
+ first_partnership = partnerships.first
111
+ assert first_partnership
112
+ assert first_partnership.is_a? Coach4rb::Resource::Partnership
113
+ end
114
+
115
+ end
@@ -0,0 +1,110 @@
1
+ require 'test/test_helper'
2
+
3
+ class TestSubscriptionCoach < MiniTest::Test
4
+
5
+ def setup
6
+ @coach = Coach4rb.configure(
7
+ scheme: 'http',
8
+ host: 'diufvm31.unifr.ch',
9
+ port: 8090,
10
+ path: '/CyberCoachServer/resources',
11
+ debug: true
12
+ )
13
+ end
14
+
15
+
16
+ def test_should_subscribe_a_user_to_running
17
+ proxy = Coach4rb::Proxy::Access.new 'wantsomemoney', 'test', @coach
18
+ user = @coach.user 'wantsomemoney'
19
+
20
+ subscription = proxy.subscribe(user, 'running') do |subscription|
21
+ subscription.public_visible = Coach4rb::Privacy::Public
22
+ end
23
+ assert subscription
24
+ end
25
+
26
+ def test_should_subscribe_partnership_to_running
27
+ proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
28
+ partnership = @coach.partnership 'arueedlinger', 'asarteam5'
29
+ assert proxy.subscribe(partnership, :running)
30
+ end
31
+
32
+
33
+ def test_should_subscribe_and_unsubscribe_a_user_to_boxing
34
+ proxy = Coach4rb::Proxy::Access.new 'wantsomemoney', 'test', @coach
35
+ user = @coach.user 'wantsomemoney'
36
+
37
+ subscription = proxy.subscribe(user, :boxing) do |subscription|
38
+ subscription.public_visible = Coach4rb::Privacy::Public
39
+ end
40
+ assert subscription
41
+
42
+ sleep 2
43
+ assert proxy.unsubscribe(user, :boxing)
44
+ end
45
+
46
+
47
+ def test_should_subscribe_and_unsubscribe_a_partnership_to_boxing
48
+ proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
49
+ partnership = @coach.partnership 'arueedlinger', 'asarteam5'
50
+ assert proxy.subscribe(partnership, :running)
51
+
52
+ subscription = proxy.subscribe(partnership, :boxing)
53
+ assert subscription
54
+ sleep 20
55
+ assert proxy.unsubscribe(partnership, :boxing)
56
+ end
57
+
58
+
59
+
60
+ def test_should_subscribe_and_unsubscribe_a_user_to_soccer
61
+ proxy = Coach4rb::Proxy::Access.new 'wantsomemoney', 'test', @coach
62
+ user = @coach.user 'wantsomemoney'
63
+
64
+ assert proxy.subscribe(user, :soccer)
65
+ sleep 2
66
+ assert proxy.unsubscribe(user, :soccer)
67
+ end
68
+
69
+
70
+ def test_should_subscribe_and_unsubscribe_a_user_to_cycling
71
+ proxy = Coach4rb::Proxy::Access.new 'wantsomemoney', 'test', @coach
72
+ user = @coach.user 'wantsomemoney'
73
+
74
+ subscription = proxy.subscribe(user, :cycling)
75
+ sleep 2
76
+ assert subscription
77
+ assert proxy.delete_subscription(subscription)
78
+ end
79
+
80
+
81
+ def test_should_get_subscription
82
+ subscription = @coach.subscription 'newuser4', 'running', {}
83
+ assert subscription
84
+ #subscription = @coach.subscription 'newuser4','newuser5', 'running', {}
85
+ assert subscription
86
+ subscription = @coach.subscription 'newuser4', 'running'
87
+ assert subscription
88
+ #subscription = @coach.subscription 'newuser4','newuser5', 'running'
89
+ subscription = @coach.subscription_by_uri '/CyberCoachServer/resources/users/newuser4/'
90
+ assert subscription
91
+ subscription = @coach.subscription subscription
92
+ assert subscription
93
+ end
94
+
95
+
96
+ def test_should_get_subscription_entries
97
+ subscription = @coach.subscription 'arueedlinger', 'running', query: {start: 1, size: 10}
98
+ assert subscription
99
+ assert_equal 10, subscription.entries.size
100
+ end
101
+
102
+
103
+ def test_should_get_entry_from_subscription
104
+ subscription = @coach.subscription 'arueedlinger', 'running', query: {start: 0, size: 10}
105
+ subscription.entries.each do |entry|
106
+ assert @coach.entry(entry)
107
+ end
108
+ end
109
+
110
+ end
@@ -0,0 +1,191 @@
1
+ require 'test/test_helper'
2
+
3
+ class TestUserCoach < MiniTest::Test
4
+
5
+ def setup
6
+ @coach = Coach4rb.configure(
7
+ scheme: 'http',
8
+ host: 'diufvm31.unifr.ch',
9
+ port: 8090,
10
+ path: '/CyberCoachServer/resources',
11
+ debug: true
12
+ )
13
+ end
14
+
15
+
16
+ def test_should_get_a_user_by_its_username
17
+ user = @coach.user 'arueedlinger'
18
+ assert user
19
+ assert user.is_a? Coach4rb::Resource::User
20
+ assert_equal 'arueedlinger', user.username
21
+ end
22
+
23
+
24
+
25
+ def test_should_get_user_by_its_resource_object
26
+ user = @coach.user 'arueedlinger'
27
+ assert_equal 'arueedlinger', user.username
28
+ user = @coach.user user
29
+ assert_equal 'arueedlinger', user.username
30
+ end
31
+
32
+
33
+
34
+ def test_should_get_a_user_by_its_uri
35
+ user = @coach.user_by_uri '/CyberCoachServer/resources/users/arueedlinger'
36
+ assert user
37
+ assert user.is_a? Coach4rb::Resource::User
38
+ assert_equal 'arueedlinger', user.username
39
+ end
40
+
41
+
42
+
43
+ def test_should_get_user_details
44
+ users = @coach.users
45
+ users = users.map { |u| @coach.user u.username }
46
+ users.each do |user|
47
+ refute_nil user.email
48
+ refute_nil user.username
49
+ refute_nil user.real_name
50
+ refute_nil user.created
51
+ end
52
+ end
53
+
54
+
55
+
56
+ def test_should_get_some_users
57
+ users = @coach.users
58
+ assert users
59
+ assert_equal 5, users.size
60
+
61
+ users = @coach.users {}
62
+ assert users
63
+ assert_equal 5, users.size
64
+
65
+ users = @coach.users query: {start: 0, size: 10}
66
+ assert users
67
+ assert_equal 10, users.size
68
+ assert_equal 0, users.start
69
+ assert_equal 10, users.end
70
+
71
+ assert users.is_a? Coach4rb::Resource::Page
72
+ users.each do |user|
73
+ assert user.is_a? Coach4rb::Resource::Entity
74
+ assert user.uri
75
+ fetched_user = @coach.user user.username
76
+ assert fetched_user.is_a? Coach4rb::Resource::User
77
+ end
78
+ end
79
+
80
+
81
+
82
+ def test_should_get_10_users
83
+ users = @coach.users query: {start: 0, size: 10}
84
+ assert_equal 10, users.size
85
+ 10.times do |i|
86
+ assert users[i]
87
+ assert users[i].is_a? Coach4rb::Resource::User
88
+ end
89
+
90
+ first_user = users.first
91
+ assert first_user
92
+ assert first_user.is_a? Coach4rb::Resource::User
93
+ end
94
+
95
+
96
+
97
+ def test_username_should_not_be_available
98
+ refute @coach.username_available? 'arueedlinger'
99
+ end
100
+
101
+
102
+ def test_username_should_be_available
103
+ assert @coach.username_available? 'arueedlinger1111111'
104
+ end
105
+
106
+
107
+ def test_user_should_exist
108
+ assert @coach.user_exists?('arueedlinger')
109
+ end
110
+
111
+
112
+ def test_user_should_not_exist
113
+ refute @coach.user_exists?('arueedlinger1111111')
114
+ end
115
+
116
+
117
+
118
+ def test_should_authenticate_user
119
+ assert @coach.authenticate('arueedlinger','test')
120
+ end
121
+
122
+
123
+ def test_should_not_authenticate_user
124
+ refute @coach.authenticate('arueedlinger','sajdhjkasdjka')
125
+ end
126
+
127
+
128
+ def test_should_create_a_user
129
+ @coach.create_user do |user|
130
+ user.real_name = 'the hoff'
131
+ user.username = 'wantsomemoney' + DateTime.now.to_time.to_i.to_s
132
+ user.password = 'test'
133
+ user.email = 'test@test.com'
134
+ user.public_visible = Coach4rb::Privacy::Public
135
+ end
136
+ end
137
+
138
+
139
+ def test_should_create_and_delete_user
140
+ username = 'wantsomemoney' + DateTime.now.to_time.to_i.to_s
141
+ proxy = Coach4rb::Proxy::Access.new(username,'test', @coach)
142
+ user = proxy.create_user do |user|
143
+ user.real_name = 'the hoff'
144
+ user.username = username
145
+ user.password = 'test'
146
+ user.email = 'test@test.com'
147
+ user.public_visible = Coach4rb::Privacy::Public
148
+ end
149
+ assert user
150
+ assert_equal username, user.username
151
+ sleep 2
152
+
153
+ assert proxy.delete_user(username)
154
+
155
+ end
156
+
157
+
158
+ def test_should_update_a_user
159
+ proxy = Coach4rb::Proxy::Access.new 'wantsomemoney', 'test', @coach
160
+
161
+ before_update_user = @coach.user 'wantsomemoney'
162
+ assert_equal '007!!!', before_update_user.real_name
163
+
164
+ @coach.user 'wantsomemoney'
165
+ result = proxy.update_user(before_update_user) do |user|
166
+ user.real_name = 'James Bond!'
167
+ end
168
+
169
+ after_update_user = @coach.user 'wantsomemoney'
170
+ assert_equal 'James Bond!', after_update_user.real_name
171
+
172
+ @coach.user 'wantsomemoney'
173
+ result = proxy.update_user(after_update_user) do |user|
174
+ user.real_name = '007!!!'
175
+ end
176
+ updated_user = @coach.user 'wantsomemoney'
177
+ assert_equal '007!!!', updated_user.real_name
178
+ end
179
+
180
+
181
+ def test_should_update_a_user_by_its_uri
182
+ proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
183
+ user = @coach.user 'arueedlinger'
184
+ user = proxy.update_user(user.uri) do |user|
185
+ user.real_name = 'Alex Rueedlinger'
186
+ end
187
+ assert_equal 'Alex Rueedlinger', user.real_name
188
+ end
189
+
190
+
191
+ end
@@ -0,0 +1,63 @@
1
+ require 'test/test_helper'
2
+
3
+ class TestEntity < MiniTest::Test
4
+
5
+ def setup
6
+ @user_hash = {
7
+ :uri => "/CyberCoachServer/resources/users/arueedlinger/",
8
+ :links =>
9
+ [{:href => "/CyberCoachServer/resources/users/arueedlinger/?start=5&size=5",
10
+ :description => "next"}],
11
+ :username => "arueedlinger",
12
+ :password => "*",
13
+ :realname => "Alexander Rueedlinger 2",
14
+ :email => "a.rueedlinger@gmail.com",
15
+ :datecreated => 1413590323000,
16
+ :publicvisible => 2,
17
+ :partnerships =>
18
+ [{:uri => "/CyberCoachServer/resources/partnerships/arueedlinger;asarteam5/",
19
+ :id => 291},
20
+ {:uri => "/CyberCoachServer/resources/partnerships/arueedlinger;asarteam4/",
21
+ :id => 292},
22
+ {:uri => "/CyberCoachServer/resources/partnerships/arueedlinger;asarteam3/",
23
+ :id => 337},
24
+ {:uri => "/CyberCoachServer/resources/partnerships/arueedlinger;asarteam2/",
25
+ :id => 345},
26
+ {:uri => "/CyberCoachServer/resources/partnerships/mikeshiva;arueedlinger/",
27
+ :id => 372}],
28
+ :subscriptions =>
29
+ [{:uri => "/CyberCoachServer/resources/users/arueedlinger/Running/", :id => 227},
30
+ {:uri => "/CyberCoachServer/resources/users/arueedlinger/Boxing/", :id => 228},
31
+ {:uri => "/CyberCoachServer/resources/users/arueedlinger/Soccer/", :id => 229},
32
+ {:uri => "/CyberCoachServer/resources/users/arueedlinger/Cycling/",
33
+ :id => 230}]
34
+ }
35
+ end
36
+
37
+
38
+ def test_should_create_entity_resource
39
+ resource = Coach4rb::Resource::Entity.from_coach @user_hash
40
+ assert_equal @user_hash[:uri], resource.uri
41
+ assert_equal @user_hash[:username], resource[:username]
42
+ end
43
+
44
+
45
+ def test_should_have_hash_like_access
46
+ resource = Coach4rb::Resource::Page.from_coach @user_hash
47
+ assert_equal @user_hash[:uri], resource[:uri]
48
+ assert_equal @user_hash[:username], resource[:username]
49
+ end
50
+
51
+
52
+ def test_should_iterate_over_properties
53
+ resource = Coach4rb::Resource::Entity.from_coach @user_hash
54
+ @user_hash.each do |key, value|
55
+ if key == :datecreated
56
+ assert_equal value, resource[key]
57
+ else
58
+ assert_equal value, resource[key]
59
+ end
60
+ end
61
+ end
62
+
63
+ end