badgeville_berlin 1.0.2 → 1.0.3
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.
- data/badgeville.gemspec +2 -4
- data/lib/badgeville_berlin/base_resource.rb +2 -2
- data/lib/badgeville_berlin/group.rb +1 -0
- data/lib/badgeville_berlin/leaderboard.rb +1 -0
- data/lib/badgeville_berlin/reward_definition.rb +1 -0
- data/lib/badgeville_berlin/version.rb +1 -1
- data/spec/use_case/readme_use_case_spec.rb +388 -294
- metadata +4 -51
data/badgeville.gemspec
CHANGED
@@ -10,7 +10,8 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.homepage = "https://github.com/badgeville/badgeville-ruby"
|
11
11
|
s.summary = %q{A Ruby wrapper for the Badgeville RESTful Berlin API.}
|
12
12
|
s.description = %q{This is an open source Ruby wrapper for interacting with the Badgeville RESTful Berlin API.}
|
13
|
-
|
13
|
+
s.license = 'MIT'
|
14
|
+
|
14
15
|
s.rubyforge_project = "badgeville_berlin"
|
15
16
|
|
16
17
|
s.files = `git ls-files`.split("\n")
|
@@ -26,9 +27,6 @@ Gem::Specification.new do |s|
|
|
26
27
|
s.add_development_dependency "rspec"
|
27
28
|
s.add_development_dependency "fakeweb"
|
28
29
|
s.add_development_dependency "factory_girl", '=2.4.0'
|
29
|
-
s.add_development_dependency "ZenTest"
|
30
|
-
s.add_development_dependency "autotest"
|
31
|
-
s.add_development_dependency "autotest-growl"
|
32
30
|
s.add_development_dependency "logger", ">=1.2.8"
|
33
31
|
|
34
32
|
s.add_runtime_dependency "activeresource", "~> 3.1"
|
@@ -80,13 +80,13 @@ module BadgevilleBerlin
|
|
80
80
|
@errors ||= BadgevilleBerlin::Errors.new(self)
|
81
81
|
end
|
82
82
|
|
83
|
-
# Overrides the ActiveResource
|
83
|
+
# Overrides the ActiveResource instance method in module Validations
|
84
84
|
# in order to load_remote_errors() for the case where the format is
|
85
85
|
# the custom BadgevilleJson format. Loads the set of remote errors into
|
86
86
|
# the object’s Errors collection based on the content-type of the
|
87
87
|
# error-block received.
|
88
88
|
#
|
89
|
-
# @param remote_errors errors from
|
89
|
+
# @param remote_errors errors from the remote server
|
90
90
|
# @param [Object] save_cache flag that directs the errors cache to be
|
91
91
|
# cleared by default
|
92
92
|
def load_remote_errors(remote_errors, save_cache = false ) #:nodoc:
|
@@ -1,315 +1,409 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module BadgevilleBerlin
|
4
|
-
describe "
|
4
|
+
describe "BadgevilleBerlin" do
|
5
5
|
before(:all) do
|
6
6
|
# Initializations
|
7
7
|
@rand1 = rand(5000)
|
8
8
|
@rand2 = rand(5000)
|
9
9
|
@my_network_id = '<my_network_id>'
|
10
|
-
|
10
|
+
|
11
11
|
# Set FakeWeb to allow a real connection to the Badgeville server as
|
12
12
|
# configured in spec_helper.rb
|
13
13
|
FakeWeb.allow_net_connect = true
|
14
14
|
|
15
15
|
# Configure the gem with the host site and the API Key
|
16
|
-
|
17
16
|
my_hostname = '<http://myhostname.com>'
|
18
17
|
my_api_key = '<my_api_key>'
|
19
|
-
|
18
|
+
|
20
19
|
Config.conf(:host_name => my_hostname, :api_key => my_api_key)
|
21
|
-
|
22
|
-
# Basic README: Create a new site
|
23
|
-
@new_site = Site.new(
|
24
|
-
:name => "My Website #{@rand1}",
|
25
|
-
:url => "mydomain#{@rand1}.com" ,
|
26
|
-
:network_id => @my_network_id )
|
27
|
-
@site_created = @new_site.save
|
28
|
-
|
29
|
-
# Basic README: Create a new user
|
30
|
-
@new_user = User.new(
|
31
|
-
:name => "visitor#{@rand1}",
|
32
|
-
:network_id => @my_network_id,
|
33
|
-
:email => "visitor#{@rand1}@emailserver.com",
|
34
|
-
:password => 'visitor_password' )
|
35
|
-
@user_created = @new_user.save
|
36
|
-
|
37
|
-
# Basic README: See error messages from the remote server
|
38
|
-
@new_user2 = User.new(
|
39
|
-
:name => "visitor#{@rand1}",
|
40
|
-
:network_id => @my_network_id,
|
41
|
-
:email => "visitor#{@rand1}@emailserver.com",
|
42
|
-
:password => 'visitor_password' )
|
43
|
-
@user_creation_failed = @new_user2.save
|
44
|
-
@attr_specific_err = @new_user2.errors[:email]
|
45
|
-
|
46
|
-
# Basic README: Create a player
|
47
|
-
# Basic README: Find existing players that match the given email
|
48
|
-
@new_player = Player.new(
|
49
|
-
:site_id => @new_site.id,
|
50
|
-
:user_id => @new_user.id ,
|
51
|
-
:display_name => "Visitor #{@rand1}" )
|
52
|
-
@player_created = @new_player.save
|
53
|
-
|
54
|
-
# Advanced README: Create an activity (register a behavior 'share') for the newly created player
|
55
|
-
@share_activity = Activity.new(
|
56
|
-
:verb => "share",
|
57
|
-
:player_id => @new_player.id )
|
58
|
-
@share_activity_created = @share_activity.save
|
59
|
-
|
60
|
-
# Advanced README: Create an activity definition to specify that a player will earn 4
|
61
|
-
# points each time they perform the "comment" behavior.
|
62
|
-
@new_activity_definition = ActivityDefinition.new(
|
63
|
-
:selector => {:verb => :comment},
|
64
|
-
:name => "A Cool Comment Behavior #{@rand1}",
|
65
|
-
:site_id => @new_site.id,
|
66
|
-
:adjustment => {:points => 3}
|
67
|
-
)
|
68
|
-
@new_activity_defn_created = @new_activity_definition.save
|
69
|
-
|
70
|
-
# Advanced README: Update the activity definition such that a player
|
71
|
-
# on your site will earn 3 points rather than 4 each time they
|
72
|
-
# perform the "comment" behavior.
|
73
|
-
@new_activity_definition.adjustment = {:points => 3}
|
74
|
-
@new_activity_defn_updated = @new_activity_definition.save
|
75
|
-
|
76
|
-
# Advanced README: Update the activity definition to include a rate
|
77
|
-
# limit in order to prevent players from gaming the system.
|
78
|
-
@new_activity_definition.enable_rate_limiting = true
|
79
|
-
@new_activity_definition.bucket_drain_rate = 180
|
80
|
-
@new_activity_definition.bucket_max_capacity = 25
|
81
|
-
@new_activity_defn_updated_again = @new_activity_definition.save
|
82
|
-
|
83
|
-
# Advanced README: Create a reward definition
|
84
|
-
@new_reward_defn = RewardDefinition.new(
|
85
|
-
:site_id => @new_site.id,
|
86
|
-
:name => 'Comment Rockstar',
|
87
|
-
:reward_template => '{"message":"Congrats, you are a Comment Rockstar!"}',
|
88
|
-
:components => '[{"comparator":{"$gte":1},"where":{"verb":"comment","player_id":"%player_id"},"command":"count"}]',
|
89
|
-
:active => true )
|
90
|
-
@new_reward_defn_created = @new_reward_defn.save
|
91
|
-
|
92
|
-
# Create a mission which includes this reward definition
|
93
|
-
@new_group = Group.new(
|
94
|
-
:site_id => @new_site.id,
|
95
|
-
:name => 'Comment Rockstar Mission'
|
96
|
-
)
|
97
|
-
@new_group_created = @new_group.save
|
98
|
-
|
99
|
-
# Advanced README: Register a player behavior (e.g. comment) for an
|
100
|
-
# existing player.
|
101
|
-
@comment_activity = Activity.new(
|
102
|
-
:verb => "comment",
|
103
|
-
:player_id => @new_player.id )
|
104
|
-
@comment_activity_created = @comment_activity.save
|
105
|
-
|
106
|
-
end
|
107
|
-
|
108
|
-
# CREATE Site
|
109
|
-
it "should have created a new site", :affects_bv_server => true do
|
110
|
-
@site_created.should == true
|
111
|
-
end
|
112
|
-
|
113
|
-
it "should have a new site with the name: My Website #{@rand1}", :affects_bv_server => true do
|
114
|
-
@new_site.name.should == "My Website #{@rand1}"
|
115
|
-
end
|
116
|
-
|
117
|
-
# CREATE User
|
118
|
-
it "should have created a new user", :affects_bv_server => true do
|
119
|
-
@user_created.should == true
|
120
|
-
end
|
121
|
-
|
122
|
-
it "should have a new user with the name: visitor#{@rand1}", :affects_bv_server => true do
|
123
|
-
@new_user.name.should == "visitor#{@rand1}"
|
124
|
-
end
|
125
|
-
|
126
|
-
# CREATE User: See remote errors
|
127
|
-
it "should produce an error message from the remote server", :affects_bv_server => true do
|
128
|
-
@new_user2.errors.messages.should == {:email=>["user email is already taken"]}
|
129
|
-
end
|
130
|
-
|
131
|
-
it "should produce anattribute-specific error message from the remote server", :affects_bv_server => true do
|
132
|
-
@attr_specific_err.should == ["user email is already taken"]
|
133
|
-
end
|
134
|
-
|
135
|
-
# CREATE Player
|
136
|
-
it "should have created a new player", :affects_bv_server => true do
|
137
|
-
@player_created.should == true
|
138
|
-
end
|
139
|
-
|
140
|
-
it "should have a new player with user ID for @new_user", :affects_bv_server => true do
|
141
|
-
@new_player.user_id.should == @new_user.id
|
142
|
-
end
|
143
|
-
|
144
|
-
# FIND Players by email (:all matches)
|
145
|
-
it "should return all players that match the email address as a collection", :affects_bv_server => true do
|
146
|
-
@existing_player = Player.find(:all, :params => {:email => "visitor#{@rand1}@emailserver.com"})
|
147
|
-
@existing_player.first.email.should == "visitor#{@rand1}@emailserver.com"
|
148
|
-
end
|
149
|
-
|
150
|
-
# FIND Player by email (:first match)
|
151
|
-
it "should return the first player that matches the email address as a single record", :affects_bv_server => true do
|
152
|
-
@existing_player = Player.find(:first, :params => {:email => "visitor#{@rand1}@emailserver.com"})
|
153
|
-
@existing_player.email.should == "visitor#{@rand1}@emailserver.com"
|
154
|
-
end
|
155
|
-
|
156
|
-
# FIND Player by email (:last match)
|
157
|
-
it "should return the first player that matches the email address as a single record", :affects_bv_server => true do
|
158
|
-
@existing_player = Player.find(:last, :params => {:email => "visitor#{@rand1}@emailserver.com"})
|
159
|
-
@existing_player.email.should == "visitor#{@rand1}@emailserver.com"
|
160
|
-
end
|
161
|
-
|
162
|
-
# CREATE Activity (share)
|
163
|
-
it "should have created a 1st activity", :affects_bv_server => true do
|
164
|
-
@share_activity_created.should == true
|
165
|
-
end
|
166
|
-
|
167
|
-
it "should have registered a new share activity", :affects_bv_server => true do
|
168
|
-
@share_activity.verb.should == "share"
|
169
|
-
end
|
170
|
-
|
171
|
-
# CREATE ActivityDefinition
|
172
|
-
it "should have created a new activity definition", :affects_bv_server => true do
|
173
|
-
@new_activity_defn_created.should == true
|
174
20
|
end
|
175
21
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
@
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
22
|
+
describe "README examples" do
|
23
|
+
before(:all) do
|
24
|
+
# Basic README: Create a new site
|
25
|
+
@new_site = Site.new(
|
26
|
+
:name => "My Website #{@rand1}",
|
27
|
+
:url => "mydomain#{@rand1}.com" ,
|
28
|
+
:network_id => @my_network_id )
|
29
|
+
@site_created = @new_site.save
|
30
|
+
|
31
|
+
# Basic README: Create a new user
|
32
|
+
@new_user = User.new(
|
33
|
+
:name => "visitor#{@rand1}",
|
34
|
+
:network_id => @my_network_id,
|
35
|
+
:email => "visitor#{@rand1}@emailserver.com",
|
36
|
+
:password => 'visitor_password' )
|
37
|
+
@user_created = @new_user.save
|
38
|
+
|
39
|
+
# Basic README: See error messages from the remote server
|
40
|
+
@new_user2 = User.new(
|
41
|
+
:name => "visitor#{@rand1}",
|
42
|
+
:network_id => @my_network_id,
|
43
|
+
:email => "visitor#{@rand1}@emailserver.com",
|
44
|
+
:password => 'visitor_password' )
|
45
|
+
@user_creation_failed = @new_user2.save
|
46
|
+
@attr_specific_err = @new_user2.errors[:email]
|
47
|
+
|
48
|
+
# Basic README: Create a player
|
49
|
+
# Basic README: Find existing players that match the given email
|
50
|
+
@new_player = Player.new(
|
51
|
+
:site_id => @new_site.id,
|
52
|
+
:user_id => @new_user.id ,
|
53
|
+
:display_name => "Visitor #{@rand1}" )
|
54
|
+
@player_created = @new_player.save
|
55
|
+
|
56
|
+
# Advanced README: Create an activity (register a behavior 'share') for the newly created player
|
57
|
+
@share_activity = Activity.new(
|
58
|
+
:verb => "share",
|
59
|
+
:player_id => @new_player.id )
|
60
|
+
@share_activity_created = @share_activity.save
|
61
|
+
|
62
|
+
# Advanced README: Create an activity definition to specify that a player will earn 4
|
63
|
+
# points each time they perform the "comment" behavior.
|
64
|
+
@new_activity_definition = ActivityDefinition.new(
|
65
|
+
:selector => {:verb => :comment},
|
66
|
+
:name => "A Cool Comment Behavior #{@rand1}",
|
67
|
+
:site_id => @new_site.id,
|
68
|
+
:adjustment => {:points => 3}
|
69
|
+
)
|
70
|
+
@new_activity_defn_created = @new_activity_definition.save
|
71
|
+
|
72
|
+
# Advanced README: Update the activity definition such that a player
|
73
|
+
# on your site will earn 3 points rather than 4 each time they
|
74
|
+
# perform the "comment" behavior.
|
75
|
+
@new_activity_definition.adjustment = {:points => 3}
|
76
|
+
@new_activity_defn_updated = @new_activity_definition.save
|
77
|
+
|
78
|
+
# Advanced README: Update the activity definition to include a rate
|
79
|
+
# limit in order to prevent players from gaming the system.
|
80
|
+
@new_activity_definition.enable_rate_limiting = true
|
81
|
+
@new_activity_definition.bucket_drain_rate = 180
|
82
|
+
@new_activity_definition.bucket_max_capacity = 25
|
83
|
+
@new_activity_defn_updated_again = @new_activity_definition.save
|
84
|
+
|
85
|
+
# Advanced README: Create a reward definition
|
86
|
+
@new_reward_defn = RewardDefinition.new(
|
87
|
+
:site_id => @new_site.id,
|
88
|
+
:name => 'Comment Rockstar',
|
89
|
+
:reward_template => '{"message":"Congrats, you are a Comment Rockstar!"}',
|
90
|
+
:components => '[{"comparator":{"$gte":1},"where":{"verb":"comment","player_id":"%player_id"},"command":"count"}]',
|
91
|
+
:active => true )
|
92
|
+
@new_reward_defn_created = @new_reward_defn.save
|
93
|
+
|
94
|
+
# Advanced README: Register a player behavior (e.g. comment) for an
|
95
|
+
# existing player.
|
96
|
+
@comment_activity = Activity.new(
|
97
|
+
:verb => "comment",
|
98
|
+
:player_id => @new_player.id )
|
99
|
+
@comment_activity_created = @comment_activity.save
|
100
|
+
end
|
101
|
+
|
102
|
+
# CREATE Site
|
103
|
+
it "should have created a new site", :affects_bv_server => true do
|
104
|
+
@site_created.should == true
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should have a new site with the name: My Website #{@rand1}", :affects_bv_server => true do
|
108
|
+
@new_site.name.should == "My Website #{@rand1}"
|
109
|
+
end
|
110
|
+
|
111
|
+
# CREATE User
|
112
|
+
it "should have created a new user", :affects_bv_server => true do
|
113
|
+
@user_created.should == true
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should have a new user with the name: visitor#{@rand1}", :affects_bv_server => true do
|
117
|
+
@new_user.name.should == "visitor#{@rand1}"
|
118
|
+
end
|
119
|
+
|
120
|
+
# CREATE User: See remote errors
|
121
|
+
it "should produce an error message from the remote server", :affects_bv_server => true do
|
122
|
+
@new_user2.errors.messages.should == {:email=>["user email is already taken"]}
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should produce anattribute-specific error message from the remote server", :affects_bv_server => true do
|
126
|
+
@attr_specific_err.should == ["user email is already taken"]
|
127
|
+
end
|
128
|
+
|
129
|
+
# CREATE Player
|
130
|
+
it "should have created a new player", :affects_bv_server => true do
|
131
|
+
@player_created.should == true
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should have a new player with user ID for @new_user", :affects_bv_server => true do
|
135
|
+
@new_player.user_id.should == @new_user.id
|
136
|
+
end
|
137
|
+
|
138
|
+
# FIND Players by email (:all matches)
|
139
|
+
it "should return all players that match the email address as a collection", :affects_bv_server => true do
|
140
|
+
@existing_player = Player.find(:all, :params => {:email => "visitor#{@rand1}@emailserver.com"})
|
141
|
+
@existing_player.first.email.should == "visitor#{@rand1}@emailserver.com"
|
142
|
+
end
|
143
|
+
|
144
|
+
# FIND Player by email (:first match)
|
145
|
+
it "should return the first player that matches the email address as a single record", :affects_bv_server => true do
|
146
|
+
@existing_player = Player.find(:first, :params => {:email => "visitor#{@rand1}@emailserver.com"})
|
147
|
+
@existing_player.email.should == "visitor#{@rand1}@emailserver.com"
|
148
|
+
end
|
149
|
+
|
150
|
+
# FIND Player by email (:last match)
|
151
|
+
it "should return the first player that matches the email address as a single record", :affects_bv_server => true do
|
152
|
+
@existing_player = Player.find(:last, :params => {:email => "visitor#{@rand1}@emailserver.com"})
|
153
|
+
@existing_player.email.should == "visitor#{@rand1}@emailserver.com"
|
154
|
+
end
|
155
|
+
|
156
|
+
# CREATE Activity (share)
|
157
|
+
it "should have created a 1st activity", :affects_bv_server => true do
|
158
|
+
@share_activity_created.should == true
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should have registered a new share activity", :affects_bv_server => true do
|
162
|
+
@share_activity.verb.should == "share"
|
163
|
+
end
|
164
|
+
|
165
|
+
# CREATE ActivityDefinition
|
166
|
+
it "should have created a new activity definition", :affects_bv_server => true do
|
167
|
+
@new_activity_defn_created.should == true
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should have a new activity definition for comment", :affects_bv_server => true do
|
171
|
+
@new_activity_definition.verb.should == "comment"
|
172
|
+
end
|
173
|
+
|
174
|
+
# CREATE Activity (comment)
|
175
|
+
it "should have created a 2nd activity", :affects_bv_server => true do
|
176
|
+
@comment_activity_created.should == true
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should have registered a new comment activity", :affects_bv_server => true do
|
180
|
+
@comment_activity.verb.should == "comment"
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should have added 3 points to the new player", :affects_bv_server => true do
|
184
|
+
@updated_player = Player.find(@new_player.id)
|
185
|
+
@updated_player.points_all.should == 3
|
186
|
+
end
|
187
|
+
|
188
|
+
it "should have added 1 reward to the new player", :affects_bv_server => true do
|
189
|
+
Reward.find(:all, :params => {:player_id => @new_player.id})[0].name.should == "Comment Rockstar"
|
190
|
+
end
|
191
|
+
|
192
|
+
# CREATE RewardDefinition
|
193
|
+
it "should have created a new reward definition", :affects_bv_server => true do
|
194
|
+
@new_reward_defn_created.should == true
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should have a new reward definition with the name 'Comment Rockstar'", :affects_bv_server => true do
|
198
|
+
@new_reward_defn.name.should == 'Comment Rockstar'
|
199
|
+
end
|
200
|
+
|
201
|
+
# UPDATE User
|
202
|
+
it "should update the user", :affects_bv_server => true do
|
203
|
+
# Basic README: Find the newly created user to update their email address
|
204
|
+
@user_found_by_id = User.find( @new_user.id )
|
205
|
+
@user_found_by_id.email = "visitor#{@rand2}@emailserver.com"
|
206
|
+
@user_updated = @user_found_by_id.save
|
207
|
+
|
208
|
+
User.find(@new_user.id).email.should == "visitor#{@rand2}@emailserver.com"
|
209
|
+
@user_updated.should == true
|
210
|
+
end
|
211
|
+
|
212
|
+
# UPDATE ActivityDefinition (points)
|
213
|
+
it "should have updated the activity definition a 1st time", :affects_bv_server => true do
|
214
|
+
@new_activity_defn_updated.should == true
|
215
|
+
end
|
216
|
+
|
217
|
+
it "should have updated the activity definition points for comment", :affects_bv_server => true do
|
218
|
+
@updated_activity_definition = ActivityDefinition.find(@new_activity_definition.id)
|
219
|
+
@updated_activity_definition.adjustment.should == {"points" => { "definition" => 3}}
|
220
|
+
@updated_activity_definition.selector.should == {"verb" => "comment"}
|
221
|
+
end
|
222
|
+
|
223
|
+
# UPDATE ActivityDefinition (rate-limiting)
|
224
|
+
it "should have updated the activity definition a 2nd time", :affects_bv_server => true do
|
225
|
+
@new_activity_defn_updated_again.should == true
|
226
|
+
end
|
227
|
+
|
228
|
+
it "should have updated the activity definition to enable rate limiting", :affects_bv_server => true do
|
229
|
+
@new_activity_definition.enable_rate_limiting.should == true
|
230
|
+
@new_activity_definition.bucket_drain_rate.should == 180
|
231
|
+
@new_activity_definition.bucket_max_capacity.should == 25
|
232
|
+
end
|
233
|
+
|
234
|
+
# UPDATE Player
|
235
|
+
it "should update the player with the display name \"Elite Player\"", :affects_bv_server => true do
|
236
|
+
@new_player.display_name = "Elite Player"
|
237
|
+
@new_player.save
|
238
|
+
Player.find(@new_player.id).display_name.should == "Elite Player"
|
239
|
+
end
|
240
|
+
|
241
|
+
it "should update picture_url on the player object", :affects_bv_server => true do
|
242
|
+
@new_player.picture_url = "http://i.imgur.com/OsbzX.png"
|
243
|
+
@new_player.save
|
244
|
+
Player.find(@new_player.id).picture_url.should == "http://i.imgur.com/OsbzX.png"
|
245
|
+
end
|
246
|
+
|
247
|
+
# UPDATE RewardDefinition
|
248
|
+
it "should update the reward definition with the name \"Comment Superstar\"", :affects_bv_server => true do
|
249
|
+
@new_reward_defn.name = "Comment Superstar"
|
250
|
+
@new_reward_defn.save
|
251
|
+
RewardDefinition.find(@new_reward_defn.id).name.should == "Comment Superstar"
|
252
|
+
end
|
253
|
+
|
254
|
+
# UPDATE Site
|
255
|
+
it "should update the site", :affects_bv_server => true do
|
256
|
+
@new_site.name = "New Site Name #{rand(5000)}"
|
257
|
+
@new_site.save
|
258
|
+
Site.find(@new_site.id).name.should == @new_site.name
|
259
|
+
end
|
260
|
+
|
261
|
+
# DELETE RewardDefinition
|
262
|
+
it "should have deleted a reward definition", :affects_bv_server => true do
|
263
|
+
# @new_reward_defn2 is not in the README
|
264
|
+
@new_reward_defn2 = RewardDefinition.new(
|
265
|
+
:site_id => @new_site.id,
|
266
|
+
:name => 'Blog Rockstar',
|
267
|
+
:reward_template => '{"message":"Congrats, you are a Blog Rockstar!"}',
|
268
|
+
:components => '[{"comparator":{"$gte":1},"where":{"verb":"blog","player_id":"%player_id"},"command":"count"}]',
|
269
|
+
:active => true )
|
270
|
+
@new_reward_defn2.save
|
271
|
+
|
272
|
+
RewardDefinition.delete(@new_reward_defn2.id)
|
273
|
+
lambda { RewardDefinition.find(@new_reward_defn2.id) }.should raise_error(ActiveResource::ResourceNotFound)
|
274
|
+
end
|
275
|
+
|
276
|
+
# DELETE ActivityDefinition
|
277
|
+
it "should have deleted an activity definition", :affects_bv_server => true do
|
278
|
+
ActivityDefinition.delete(@new_activity_definition.id)
|
279
|
+
lambda { ActivityDefinition.find(@new_activity_definition.id) }.should raise_error(ActiveResource::ResourceNotFound)
|
280
|
+
end
|
281
|
+
|
282
|
+
# DELETE Player
|
283
|
+
it "should have deleted a player", :affects_bv_server => true do
|
284
|
+
Player.delete(@new_player.id)
|
285
|
+
lambda { Player.find(@new_player.id) }.should raise_error(ActiveResource::ResourceNotFound)
|
286
|
+
end
|
287
|
+
|
288
|
+
# DELETE User
|
289
|
+
it "should have deleted a user", :affects_bv_server => true do
|
290
|
+
User.delete(@new_user.id)
|
291
|
+
lambda { User.find(@new_user.id) }.should raise_error(ActiveResource::ResourceNotFound)
|
292
|
+
end
|
293
|
+
|
294
|
+
# DELETE Site
|
295
|
+
it "should have deleted a site", :affects_bv_server => true do
|
296
|
+
Site.delete(@new_site.id)
|
297
|
+
lambda { Site.find(@new_site.id) }.should raise_error(ActiveResource::ResourceNotFound)
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
describe "non-README examples" do
|
302
|
+
before(:all) do
|
303
|
+
@site = Site.new(
|
304
|
+
:name => "My Website #{@rand1}",
|
305
|
+
:url => "mydomain#{@rand1}.com" ,
|
306
|
+
:network_id => @my_network_id)
|
307
|
+
@site.save
|
308
|
+
end
|
309
|
+
|
310
|
+
after(:all) do
|
311
|
+
Site.delete(@site.id)
|
312
|
+
end
|
313
|
+
|
314
|
+
describe "BadgevilleBerlin::RewardDefinition", :affects_bv_server => true do
|
315
|
+
before(:all) do
|
316
|
+
@new_rd = RewardDefinition.new(
|
317
|
+
:site_id => @site.id,
|
318
|
+
:name => 'High Rolla',
|
319
|
+
:reward_template => '{"message":"Congrats, you are a High Rolla!"}',
|
320
|
+
:components => '[{"comparator":{"$gte":1},"where":{"verb":"roll","player_id":"%player_id"},"command":"count"}]',
|
321
|
+
:active => true )
|
322
|
+
@new_rd_created = @new_rd.save
|
323
|
+
end
|
324
|
+
|
325
|
+
it 'should have created a reward definition with a components hash', :affects_bv_server => true do
|
326
|
+
RewardDefinition.find(@new_rd.id).components.should == @new_rd.components
|
327
|
+
end
|
328
|
+
|
329
|
+
it 'should update a reward definition adjustment' do
|
330
|
+
rd = RewardDefinition.find(@new_rd.id)
|
331
|
+
rd.adjustment = {:points => 10}
|
332
|
+
rd.save
|
333
|
+
RewardDefinition.find(rd.id).adjustment.should == {"points" => { "definition" => 10}}
|
334
|
+
end
|
335
|
+
|
336
|
+
it "should have deleted a reward definition", :affects_bv_server => true do
|
337
|
+
RewardDefinition.delete(@new_rd.id)
|
338
|
+
lambda { RewardDefinition.find(@new_rd.id)}.should raise_error(ActiveResource::ResourceNotFound)
|
339
|
+
end
|
340
|
+
|
341
|
+
end
|
342
|
+
|
343
|
+
describe "BadgevilleBerlin::Group", :affects_bv_server => true do
|
344
|
+
before(:all) do
|
345
|
+
@new_mission = Group.new(
|
346
|
+
:site_id => @site.id,
|
347
|
+
:name => 'Comment Rockstar Mission',
|
348
|
+
:adjustment => {:points => 10}
|
349
|
+
)
|
350
|
+
@new_mission_created = @new_mission.save
|
351
|
+
end
|
352
|
+
|
353
|
+
it "should parse correctly a group index call which includes rewards keyed under reward definitions", :affects_bv_server => true do
|
354
|
+
BadgevilleBerlinJsonFormat.stub!(:decode).and_return([JSON.parse(BadgevilleBerlin.response_json["valid_group_all"])])
|
355
|
+
response = Group.all
|
356
|
+
response.first.rewards.count.should == 2
|
357
|
+
end
|
358
|
+
|
359
|
+
# CREATE Group/Mission
|
360
|
+
it 'should have created mission with an adjustment', :affects_bv_server => true do
|
361
|
+
Group.find(@new_mission.id).adjustment.should == { 'points' => {'definition' => 10} }
|
362
|
+
end
|
363
|
+
|
364
|
+
# UPDATE Group/Mission
|
365
|
+
it 'should have updated a mission adjustment' do
|
366
|
+
mission = Group.find(@new_mission.id)
|
367
|
+
mission.adjustment = {:points => 15}
|
368
|
+
mission.save
|
369
|
+
Group.find(mission.id).adjustment.should == { 'points' => {'definition' => 15} }
|
370
|
+
end
|
371
|
+
|
372
|
+
# DELETE Group/Mission
|
373
|
+
it 'should have deleted a mission' do
|
374
|
+
Group.delete(@new_mission.id)
|
375
|
+
lambda { Group.find(@new_mission.id) }.should raise_error(ActiveResource::ResourceNotFound)
|
376
|
+
end
|
377
|
+
end
|
378
|
+
|
379
|
+
describe "BadgevilleBerlin::Leaderboard", :affects_bv_server => true do
|
380
|
+
before(:all) do
|
381
|
+
@new_leaderboard = Leaderboard.new(
|
382
|
+
:name => "Leaderboard #{@rand1}",
|
383
|
+
:selector => {"verb" => "comment"}
|
384
|
+
)
|
385
|
+
@new_lb_created = @new_leaderboard.save
|
386
|
+
end
|
387
|
+
|
388
|
+
# CREATE LEADERBOARD
|
389
|
+
it 'should have created a leaderboard with a selector', :affects_bv_server => true do
|
390
|
+
Leaderboard.find(@new_leaderboard.id).selector.should eq( {"verb" => "comment"} )
|
391
|
+
end
|
392
|
+
|
393
|
+
# UPDATE LEADERBOARD
|
394
|
+
it "should update a leaderboard selector", :affects_bv_server => true do
|
395
|
+
lb = Leaderboard.find(@new_leaderboard.id)
|
396
|
+
lb.selector = {"verb" => "blog"}
|
397
|
+
lb.save
|
398
|
+
Leaderboard.find(lb.id).selector.should eq( {"verb" => "blog"} )
|
399
|
+
end
|
400
|
+
|
401
|
+
# DELETE LEADERBOARD
|
402
|
+
it "should have deleted a leaderboard", :affects_bv_server => true do
|
403
|
+
Leaderboard.delete(@new_leaderboard.id)
|
404
|
+
lambda { Leaderboard.find(@new_leaderboard.id) }.should raise_error(ActiveResource::ResourceNotFound)
|
405
|
+
end
|
406
|
+
end
|
313
407
|
end
|
314
408
|
|
315
409
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: badgeville_berlin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2013-09-
|
15
|
+
date: 2013-09-18 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: ruby-debug19
|
@@ -94,54 +94,6 @@ dependencies:
|
|
94
94
|
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 2.4.0
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: ZenTest
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
|
-
requirements:
|
102
|
-
- - ! '>='
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: '0'
|
105
|
-
type: :development
|
106
|
-
prerelease: false
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
|
-
requirements:
|
110
|
-
- - ! '>='
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: '0'
|
113
|
-
- !ruby/object:Gem::Dependency
|
114
|
-
name: autotest
|
115
|
-
requirement: !ruby/object:Gem::Requirement
|
116
|
-
none: false
|
117
|
-
requirements:
|
118
|
-
- - ! '>='
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: '0'
|
121
|
-
type: :development
|
122
|
-
prerelease: false
|
123
|
-
version_requirements: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
|
-
requirements:
|
126
|
-
- - ! '>='
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
version: '0'
|
129
|
-
- !ruby/object:Gem::Dependency
|
130
|
-
name: autotest-growl
|
131
|
-
requirement: !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
|
-
requirements:
|
134
|
-
- - ! '>='
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
version: '0'
|
137
|
-
type: :development
|
138
|
-
prerelease: false
|
139
|
-
version_requirements: !ruby/object:Gem::Requirement
|
140
|
-
none: false
|
141
|
-
requirements:
|
142
|
-
- - ! '>='
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version: '0'
|
145
97
|
- !ruby/object:Gem::Dependency
|
146
98
|
name: logger
|
147
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -296,7 +248,8 @@ files:
|
|
296
248
|
- spec/unit/errors_spec.rb
|
297
249
|
- spec/use_case/readme_use_case_spec.rb
|
298
250
|
homepage: https://github.com/badgeville/badgeville-ruby
|
299
|
-
licenses:
|
251
|
+
licenses:
|
252
|
+
- MIT
|
300
253
|
post_install_message:
|
301
254
|
rdoc_options: []
|
302
255
|
require_paths:
|