coach4rb 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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