osm 1.2.15.dev.1 → 1.2.15
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.
- checksums.yaml +8 -8
- data/CHANGELOG.md +224 -221
- data/lib/osm/badge.rb +204 -102
- data/spec/osm/badge_spec.rb +217 -137
- data/version.rb +1 -1
- metadata +4 -4
data/spec/osm/badge_spec.rb
CHANGED
@@ -18,6 +18,13 @@ describe "Badge" do
|
|
18
18
|
:levels => [1, 2, 3],
|
19
19
|
:requirement_notes => 'notes',
|
20
20
|
:requirements => [],
|
21
|
+
:modules => [],
|
22
|
+
:min_modules_required => 5,
|
23
|
+
:min_requirements_required => 6,
|
24
|
+
:add_columns_to_module => 7,
|
25
|
+
:level_requirement => 8,
|
26
|
+
:requires_modules => [['A'], ['B', 'C']],
|
27
|
+
:show_level_letters => true,
|
21
28
|
}
|
22
29
|
end
|
23
30
|
|
@@ -34,6 +41,13 @@ describe "Badge" do
|
|
34
41
|
badge.levels.should == [1, 2, 3]
|
35
42
|
badge.requirement_notes.should == 'notes'
|
36
43
|
badge.requirements.should == []
|
44
|
+
badge.modules.should == []
|
45
|
+
badge.min_modules_required.should == 5
|
46
|
+
badge.min_requirements_required.should == 6
|
47
|
+
badge.add_columns_to_module.should == 7
|
48
|
+
badge.level_requirement.should == 8
|
49
|
+
badge.requires_modules.should == [['A'], ['B', 'C']]
|
50
|
+
badge.show_level_letters.should == true
|
37
51
|
badge.valid?.should be_true
|
38
52
|
end
|
39
53
|
|
@@ -43,53 +57,95 @@ describe "Badge" do
|
|
43
57
|
badge.valid?.should be_true
|
44
58
|
end
|
45
59
|
|
60
|
+
it "Valid with nil for level_requirement" do
|
61
|
+
badge = Osm::Badge.new(@badge_options.merge(level_requirement: nil))
|
62
|
+
badge.level_requirement.should be_nil
|
63
|
+
badge.valid?.should be_true
|
64
|
+
end
|
65
|
+
|
66
|
+
it "Valid with nil for add_columns_to_module" do
|
67
|
+
badge = Osm::Badge.new(@badge_options.merge(add_columns_to_module: nil))
|
68
|
+
badge.add_columns_to_module.should be_nil
|
69
|
+
badge.valid?.should be_true
|
70
|
+
end
|
71
|
+
|
46
72
|
end
|
47
73
|
|
48
74
|
it "Create Requirement" do
|
75
|
+
m = Osm::Badge::RequirementModule.new
|
49
76
|
requirement = Osm::Badge::Requirement.new(
|
50
77
|
:name => 'name',
|
51
78
|
:description => 'description',
|
52
|
-
:
|
53
|
-
:
|
79
|
+
:mod => m,
|
80
|
+
:id => 1,
|
54
81
|
:editable => true,
|
55
82
|
:badge => Osm::Badge.new(:identifier => 'key'),
|
56
83
|
)
|
57
84
|
|
58
85
|
requirement.name.should == 'name'
|
59
86
|
requirement.description.should == 'description'
|
60
|
-
requirement.
|
61
|
-
requirement.
|
87
|
+
requirement.mod.should == m
|
88
|
+
requirement.id.should == 1
|
62
89
|
requirement.editable.should be_true
|
63
90
|
requirement.badge.identifier.should == 'key'
|
64
91
|
requirement.valid?.should be_true
|
65
92
|
end
|
66
93
|
|
94
|
+
it "Create RequirementModule" do
|
95
|
+
b = Osm::Badge.new
|
96
|
+
m = Osm::Badge::RequirementModule.new(
|
97
|
+
badge: b,
|
98
|
+
id: 567,
|
99
|
+
letter: 'a',
|
100
|
+
min_required: 1,
|
101
|
+
custom_columns: 2,
|
102
|
+
completed_into_column: 3,
|
103
|
+
numeric_into_column: 4,
|
104
|
+
add_column_id_to_numeric: 5,
|
105
|
+
)
|
106
|
+
|
107
|
+
m.badge.should == b
|
108
|
+
m.id.should == 567
|
109
|
+
m.letter.should == 'a'
|
110
|
+
m.min_required.should == 1
|
111
|
+
m.custom_columns.should == 2
|
112
|
+
m.completed_into_column.should == 3
|
113
|
+
m.numeric_into_column.should == 4
|
114
|
+
m.add_column_id_to_numeric.should == 5
|
115
|
+
m.valid?.should be_true
|
116
|
+
end
|
117
|
+
|
118
|
+
it "Works out if we add columns to this badge" do
|
119
|
+
Osm::Badge.new(add_columns_to_module: 123).add_columns?.should be_true
|
120
|
+
Osm::Badge.new(add_columns_to_module: nil).add_columns?.should be_false
|
121
|
+
end
|
122
|
+
|
67
123
|
it "Produces a map of module letter <-> module id" do
|
68
|
-
badge = Osm::Badge.new(
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
]
|
124
|
+
badge = Osm::Badge.new(modules: [
|
125
|
+
Osm::Badge::RequirementModule.new(id: 2, letter: 'c'),
|
126
|
+
Osm::Badge::RequirementModule.new(id: 10, letter: 'b'),
|
127
|
+
Osm::Badge::RequirementModule.new(id: 1, letter: 'a'),
|
128
|
+
])
|
73
129
|
|
74
130
|
badge.module_map.should == {1=>'a', 10=>'b', 2=>'c', 'a'=>1, 'b'=>10, 'c'=>2}
|
75
131
|
end
|
76
132
|
|
77
133
|
it "Gets the number of requirements needed per module" do
|
78
|
-
badge = Osm::Badge.new(
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
]
|
134
|
+
badge = Osm::Badge.new(modules: [
|
135
|
+
Osm::Badge::RequirementModule.new(id: 2, letter: 'c', min_required: 5),
|
136
|
+
Osm::Badge::RequirementModule.new(id: 10, letter: 'b', min_required: 4),
|
137
|
+
Osm::Badge::RequirementModule.new(id: 1, letter: 'a', min_required: 3),
|
138
|
+
])
|
83
139
|
|
84
140
|
badge.needed_per_module.should == {'a'=>3, 'b'=>4, 'c'=>5, 2=>5, 10=>4, 1=>3}
|
85
141
|
end
|
86
142
|
|
87
143
|
it "Produces a list of modules" do
|
88
|
-
badge = Osm::Badge.new(
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
]
|
144
|
+
badge = Osm::Badge.new(modules: [
|
145
|
+
Osm::Badge::RequirementModule.new(id: 2, letter: 'c'),
|
146
|
+
Osm::Badge::RequirementModule.new(id: 10, letter: 'b'),
|
147
|
+
Osm::Badge::RequirementModule.new(id: 1, letter: 'a'),
|
148
|
+
])
|
93
149
|
|
94
150
|
badge.module_letters.should == ['a', 'b', 'c']
|
95
151
|
badge.module_ids.should == [1, 2, 10]
|
@@ -131,14 +187,23 @@ describe "Badge" do
|
|
131
187
|
badges.sort.should == [b1, b2, b3, b4]
|
132
188
|
end
|
133
189
|
|
134
|
-
it "Compare badge requirements by badge then
|
135
|
-
b1 = Osm::Badge::Requirement.new(:badge => Osm::Badge.new(:name => 'A'), :
|
136
|
-
b2 = Osm::Badge::Requirement.new(:badge => Osm::Badge.new(:name => 'B'), :
|
137
|
-
b3 = Osm::Badge::Requirement.new(:badge => Osm::Badge.new(:name => 'B'), :
|
190
|
+
it "Compare badge requirements by badge then id" do
|
191
|
+
b1 = Osm::Badge::Requirement.new(:badge => Osm::Badge.new(:name => 'A'), :id => 1)
|
192
|
+
b2 = Osm::Badge::Requirement.new(:badge => Osm::Badge.new(:name => 'B'), :id => 1)
|
193
|
+
b3 = Osm::Badge::Requirement.new(:badge => Osm::Badge.new(:name => 'B'), :id => 2)
|
138
194
|
badges = [b3, b1, b2]
|
139
195
|
badges.sort.should == [b1, b2, b3]
|
140
196
|
end
|
141
197
|
|
198
|
+
it "Compare badge requirement modules by badge then letter then id" do
|
199
|
+
b1 = Osm::Badge::RequirementModule.new(:badge => Osm::Badge.new(:name => 'A'), :letter => 'a', :id => 1)
|
200
|
+
b2 = Osm::Badge::RequirementModule.new(:badge => Osm::Badge.new(:name => 'B'), :letter => 'a', :id => 1)
|
201
|
+
b3 = Osm::Badge::RequirementModule.new(:badge => Osm::Badge.new(:name => 'B'), :letter => 'b', :id => 1)
|
202
|
+
b4 = Osm::Badge::RequirementModule.new(:badge => Osm::Badge.new(:name => 'B'), :letter => 'b', :id => 2)
|
203
|
+
badges = [b3, b4, b1, b2]
|
204
|
+
badges.sort.should == [b1, b2, b3, b4]
|
205
|
+
end
|
206
|
+
|
142
207
|
it "Compare badge data by badge, section_id then member_id" do
|
143
208
|
b1 = Osm::Badge::Data.new(:badge => Osm::Badge.new(:name => 'A'), :section_id => 1, :member_id => 1)
|
144
209
|
b2 = Osm::Badge::Data.new(:badge => Osm::Badge.new(:name => 'B'), :section_id => 1, :member_id => 1)
|
@@ -165,15 +230,15 @@ describe "Badge" do
|
|
165
230
|
data = Osm::Badge::Data.new(
|
166
231
|
:badge => Osm::Badge.new(
|
167
232
|
:requirements => [
|
168
|
-
Osm::Badge::Requirement.new(
|
169
|
-
Osm::Badge::Requirement.new(
|
170
|
-
Osm::Badge::Requirement.new(
|
171
|
-
Osm::Badge::Requirement.new(
|
172
|
-
Osm::Badge::Requirement.new(
|
173
|
-
Osm::Badge::Requirement.new(
|
174
|
-
Osm::Badge::Requirement.new(
|
175
|
-
Osm::Badge::Requirement.new(
|
176
|
-
Osm::Badge::Requirement.new(
|
233
|
+
Osm::Badge::Requirement.new(id: 1),
|
234
|
+
Osm::Badge::Requirement.new(id: 2),
|
235
|
+
Osm::Badge::Requirement.new(id: 3),
|
236
|
+
Osm::Badge::Requirement.new(id: 4),
|
237
|
+
Osm::Badge::Requirement.new(id: 5),
|
238
|
+
Osm::Badge::Requirement.new(id: 6),
|
239
|
+
Osm::Badge::Requirement.new(id: 7),
|
240
|
+
Osm::Badge::Requirement.new(id: 8),
|
241
|
+
Osm::Badge::Requirement.new(id: 9),
|
177
242
|
]
|
178
243
|
),
|
179
244
|
:requirements => {
|
@@ -195,19 +260,18 @@ describe "Badge" do
|
|
195
260
|
badge = Osm::Badge.new(
|
196
261
|
:needed_from_section => {'a' => 1, 'b' => 2},
|
197
262
|
:requirements => [
|
198
|
-
Osm::Badge::Requirement.new(:
|
199
|
-
Osm::Badge::Requirement.new(:
|
200
|
-
Osm::Badge::Requirement.new(:
|
201
|
-
Osm::Badge::Requirement.new(:
|
202
|
-
Osm::Badge::Requirement.new(:
|
203
|
-
Osm::Badge::Requirement.new(:
|
263
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter=> 'a', :id => 100), :id => 1),
|
264
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter=> 'a', :id => 100), :id => 2),
|
265
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter=> 'b', :id => 200), :id => 3),
|
266
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter=> 'b', :id => 200), :id => 4),
|
267
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter=> 'c', :id => 300), :id => 5),
|
268
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter=> 'c', :id => 300), :id => 6),
|
204
269
|
],
|
205
|
-
:
|
206
|
-
:
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
]}
|
270
|
+
:modules => [
|
271
|
+
Osm::Badge::RequirementModule.new(letter: 'a', id: 100),
|
272
|
+
Osm::Badge::RequirementModule.new(letter: 'b', id: 200),
|
273
|
+
Osm::Badge::RequirementModule.new(letter: 'c', id: 300),
|
274
|
+
]
|
211
275
|
)
|
212
276
|
data = Osm::Badge::Data.new(
|
213
277
|
:badge => badge,
|
@@ -219,18 +283,17 @@ describe "Badge" do
|
|
219
283
|
it "Get modules met for a member" do
|
220
284
|
badge = Osm::Badge.new(
|
221
285
|
:requirements => [
|
222
|
-
Osm::Badge::Requirement.new(:
|
223
|
-
Osm::Badge::Requirement.new(:
|
224
|
-
Osm::Badge::Requirement.new(:
|
225
|
-
Osm::Badge::Requirement.new(:
|
226
|
-
Osm::Badge::Requirement.new(:
|
286
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter=> 'a', :id => 1000), :id => 1),
|
287
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter=> 'a', :id => 1000), :id => 2),
|
288
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter=> 'b', :id => 2000), :id => 3),
|
289
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter=> 'b', :id => 2000), :id => 4),
|
290
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter=> 'c', :id => 3000), :id => 5),
|
227
291
|
],
|
228
|
-
:
|
229
|
-
:
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
]}
|
292
|
+
:modules => [
|
293
|
+
Osm::Badge::RequirementModule.new(letter: 'a', id: 1000, min_required: 1 ),
|
294
|
+
Osm::Badge::RequirementModule.new(letter: 'b', id: 2000, min_required: 2 ),
|
295
|
+
Osm::Badge::RequirementModule.new(letter: 'c', id: 3000, min_required: 1 )
|
296
|
+
]
|
234
297
|
)
|
235
298
|
data = Osm::Badge::Data.new(
|
236
299
|
:badge => badge,
|
@@ -255,27 +318,25 @@ describe "Badge" do
|
|
255
318
|
end
|
256
319
|
|
257
320
|
it "Non staged" do
|
258
|
-
|
321
|
+
badge = Osm::ActivityBadge.new(
|
259
322
|
:min_modules_required => 0,
|
260
|
-
:
|
323
|
+
:min_requirements_required => 0,
|
261
324
|
:modules => [
|
262
|
-
|
263
|
-
|
264
|
-
|
325
|
+
Osm::Badge::RequirementModule.new(id: 1, letter: 'a', min_required: 2),
|
326
|
+
Osm::Badge::RequirementModule.new(id: 2, letter: 'b', min_required: 1),
|
327
|
+
Osm::Badge::RequirementModule.new(id: 3, letter: 'c', min_required: 1),
|
265
328
|
],
|
266
329
|
:badges_required => [],
|
267
|
-
:
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
]
|
278
|
-
|
330
|
+
:other_requirements_required => [],
|
331
|
+
:requirements => [
|
332
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'a', id: 1), id: 10),
|
333
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'a', id: 1), id: 11),
|
334
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'b', id: 2), id: 20),
|
335
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'b', id: 2), id: 21),
|
336
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'c', id: 3), id: 30),
|
337
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'c', id: 3), id: 31),
|
338
|
+
],
|
339
|
+
)
|
279
340
|
|
280
341
|
data = Osm::Badge::Data.new(:due => 1, :awarded => 1, :badge => badge)
|
281
342
|
data.earnt?.should be_false
|
@@ -286,9 +347,7 @@ describe "Badge" do
|
|
286
347
|
|
287
348
|
# Number of modules required
|
288
349
|
this_badge = badge.clone
|
289
|
-
this_badge.
|
290
|
-
:min_modules_required => 2
|
291
|
-
})
|
350
|
+
this_badge.min_modules_required = 2
|
292
351
|
|
293
352
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 11=>'y', 20=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
294
353
|
data.earnt?.should be_true
|
@@ -299,9 +358,8 @@ describe "Badge" do
|
|
299
358
|
|
300
359
|
# Number of requirements needed
|
301
360
|
this_badge = badge.clone
|
302
|
-
this_badge.
|
303
|
-
|
304
|
-
})
|
361
|
+
this_badge.min_modules_required = 0
|
362
|
+
this_badge.min_requirements_required = 2
|
305
363
|
|
306
364
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 11=>'y', 20=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
307
365
|
data.earnt?.should be_true
|
@@ -315,9 +373,8 @@ describe "Badge" do
|
|
315
373
|
|
316
374
|
# Module combinations
|
317
375
|
this_badge = badge.clone
|
318
|
-
this_badge.
|
319
|
-
|
320
|
-
})
|
376
|
+
this_badge.requires_modules = [['a'], ['b', 'c']]
|
377
|
+
|
321
378
|
data = Osm::Badge::Data.new(:requirements => {10=>'x', 11=>'x', 20=>'x', 30=>'x'}, :due => 0, :awarded => 0, :badge => this_badge)
|
322
379
|
data.earnt?.should be_false
|
323
380
|
|
@@ -329,6 +386,32 @@ describe "Badge" do
|
|
329
386
|
|
330
387
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 11=>'y', 20=>'x', 30=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
331
388
|
data.earnt?.should be_true
|
389
|
+
|
390
|
+
# Requirements from another badge
|
391
|
+
this_badge = badge.clone
|
392
|
+
this_badge.min_modules_required = 0
|
393
|
+
this_badge.min_requirements_required = 1
|
394
|
+
this_badge.requires_modules = nil
|
395
|
+
# Simply met
|
396
|
+
this_badge.other_requirements_required = [{id: 100, min: 0}]
|
397
|
+
data = Osm::Badge::Data.new(:requirements => {10=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
398
|
+
data.earnt?.should be_true # Assume met if not in requirements Hash
|
399
|
+
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'x'}, :due => 0, :awarded => 0, :badge => this_badge)
|
400
|
+
data.earnt?.should be_false
|
401
|
+
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
402
|
+
data.earnt?.should be_true
|
403
|
+
# Minimum value
|
404
|
+
this_badge.other_requirements_required = [{id: 100, min: 2}]
|
405
|
+
data = Osm::Badge::Data.new(:requirements => {10=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
406
|
+
data.earnt?.should be_true # Assume met if not in requirements Hash
|
407
|
+
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'x'}, :due => 0, :awarded => 0, :badge => this_badge)
|
408
|
+
data.earnt?.should be_false
|
409
|
+
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'1'}, :due => 0, :awarded => 0, :badge => this_badge)
|
410
|
+
data.earnt?.should be_false
|
411
|
+
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'2'}, :due => 0, :awarded => 0, :badge => this_badge)
|
412
|
+
data.earnt?.should be_true
|
413
|
+
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'3'}, :due => 0, :awarded => 0, :badge => this_badge)
|
414
|
+
data.earnt?.should be_true
|
332
415
|
end
|
333
416
|
end
|
334
417
|
|
@@ -337,24 +420,22 @@ describe "Badge" do
|
|
337
420
|
it "Staged (activity)" do
|
338
421
|
badge = Osm::StagedBadge.new(
|
339
422
|
:levels => [0, 1, 2, 3],
|
340
|
-
:
|
341
|
-
|
342
|
-
|
343
|
-
:
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
:show_letters => true,
|
349
|
-
}
|
423
|
+
:min_modules_required => 0,
|
424
|
+
:min_requirements_completed => 0,
|
425
|
+
:modules => [
|
426
|
+
Osm::Badge::RequirementModule.new(id: 1, letter: 'a', min_required: 1),
|
427
|
+
Osm::Badge::RequirementModule.new(id: 2, letter: 'b', min_required: 1),
|
428
|
+
Osm::Badge::RequirementModule.new(id: 3, letter: 'c', min_required: 1),
|
429
|
+
],
|
430
|
+
:show_level_letters => true,
|
350
431
|
)
|
351
432
|
badge.requirements = [
|
352
|
-
Osm::Badge::Requirement.new(badge: badge,
|
353
|
-
Osm::Badge::Requirement.new(badge: badge,
|
354
|
-
Osm::Badge::Requirement.new(badge: badge,
|
355
|
-
Osm::Badge::Requirement.new(badge: badge,
|
356
|
-
Osm::Badge::Requirement.new(badge: badge,
|
357
|
-
Osm::Badge::Requirement.new(badge: badge,
|
433
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'a', id: 1), id: 10),
|
434
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'a', id: 1), id: 11),
|
435
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'b', id: 2), id: 20),
|
436
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'b', id: 2), id: 21),
|
437
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'c', id: 3), id: 30),
|
438
|
+
Osm::Badge::Requirement.new(badge: badge, mod: Osm::Badge::RequirementModule.new(letter: 'c', id: 3), id: 31),
|
358
439
|
]
|
359
440
|
|
360
441
|
requirements = {10=>'',11=>'',20=>'',21=>'',30=>'',31=>''}
|
@@ -381,7 +462,8 @@ describe "Badge" do
|
|
381
462
|
it "Staged (count)" do
|
382
463
|
badge = Osm::StagedBadge.new(
|
383
464
|
:levels => [0,1,2,3,4,5,10,15,20],
|
384
|
-
:
|
465
|
+
:show_level_letters => false,
|
466
|
+
:level_requirement => 3000,
|
385
467
|
:requirements => []
|
386
468
|
)
|
387
469
|
|
@@ -412,11 +494,11 @@ describe "Badge" do
|
|
412
494
|
Osm::Badge::Data.new(
|
413
495
|
:badge => Osm::StagedBadge.new(
|
414
496
|
:levels => [0,1,2],
|
415
|
-
:
|
497
|
+
:show_level_letters => true,
|
416
498
|
:requirements => [
|
417
|
-
Osm::Badge::Requirement.new(:
|
418
|
-
Osm::Badge::Requirement.new(:
|
419
|
-
Osm::Badge::Requirement.new(:
|
499
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter => 'a'), :id => 1000),
|
500
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter => 'b'), :id => 2000),
|
501
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter => 'b'), :id => 2001),
|
420
502
|
]
|
421
503
|
),
|
422
504
|
:requirements => {1000 => 'Yes', 2000 => 'Yes', 2001 => ''},
|
@@ -425,13 +507,13 @@ describe "Badge" do
|
|
425
507
|
|
426
508
|
# Staged Count Badge
|
427
509
|
Osm::Badge::Data.new(
|
428
|
-
:badge => Osm::StagedBadge.new(:levels => [0,1,2,3,4,5,10,15,20], :
|
510
|
+
:badge => Osm::StagedBadge.new(:levels => [0,1,2,3,4,5,10,15,20], :show_level_letters => false, :level_requirement => 1000),
|
429
511
|
:requirements => {1000 => 5, 2000 => '5', 3000 => ''},
|
430
512
|
:due => 5,
|
431
513
|
:awarded => 4,
|
432
514
|
).started?.should be_false # Finished lvl 5 & not started lvl 10
|
433
515
|
Osm::Badge::Data.new(
|
434
|
-
:badge => Osm::StagedBadge.new(:levels => [0,1,2,3,4,5,10,15,20], :
|
516
|
+
:badge => Osm::StagedBadge.new(:levels => [0,1,2,3,4,5,10,15,20], :show_level_letters => false, :level_requirement => 1000),
|
435
517
|
:requirements => {1000 => 6, 2000 => '6', 3000 => ''},
|
436
518
|
:due => 5,
|
437
519
|
:awarded => 3,
|
@@ -449,11 +531,11 @@ describe "Badge" do
|
|
449
531
|
# Staged Activity
|
450
532
|
staged_activity = Osm::StagedBadge.new(
|
451
533
|
:levels => [0,1,2],
|
452
|
-
:
|
534
|
+
:show_level_letters => true,
|
453
535
|
:requirements => [
|
454
|
-
Osm::Badge::Requirement.new(:
|
455
|
-
Osm::Badge::Requirement.new(:
|
456
|
-
Osm::Badge::Requirement.new(:
|
536
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter => 'a'), :id => 100),
|
537
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter => 'b'), :id => 200),
|
538
|
+
Osm::Badge::Requirement.new(mod: Osm::Badge::RequirementModule.new(:letter => 'b'), :id => 201),
|
457
539
|
]
|
458
540
|
)
|
459
541
|
|
@@ -477,7 +559,8 @@ describe "Badge" do
|
|
477
559
|
# Staged count
|
478
560
|
staged_count = Osm::StagedBadge.new(
|
479
561
|
:levels => [0,1,2,3,4,5,10,15,20],
|
480
|
-
:
|
562
|
+
:show_level_letters => false,
|
563
|
+
:level_requirement => 3000,
|
481
564
|
:requirements => []
|
482
565
|
)
|
483
566
|
|
@@ -507,7 +590,7 @@ describe "Badge" do
|
|
507
590
|
'badge_identifier' => '123_0',
|
508
591
|
'badge_order' => '4',
|
509
592
|
'badge_version' => '0',
|
510
|
-
'config' => '{"numModulesRequired":1}',
|
593
|
+
'config' => '{"numModulesRequired":1,"shownumbers":true}',
|
511
594
|
'description' => 'b_req_notes',
|
512
595
|
'group_name' => '',
|
513
596
|
'lastupdated' => '2014-09-14 02:32:05',
|
@@ -581,38 +664,35 @@ describe "Badge" do
|
|
581
664
|
badge.user_id.should == 0
|
582
665
|
badge.sharing.should == :default_locked
|
583
666
|
badge.requirements.size.should == 1
|
667
|
+
badge.min_modules_required.should == 1
|
668
|
+
badge.min_requirements_required.should == 0
|
669
|
+
badge.add_columns_to_module.should == nil
|
670
|
+
badge.level_requirement.should == nil
|
671
|
+
badge.requires_modules.should == nil
|
672
|
+
badge.other_requirements_required.should == []
|
673
|
+
badge.badges_required.should == []
|
674
|
+
badge.show_level_letters.should == true
|
584
675
|
badge.valid?.should be_true
|
676
|
+
badge.modules.size.should == 1
|
677
|
+
m = badge.modules[0]
|
678
|
+
m.badge.id.should == 123
|
679
|
+
m.badge.version.should == 0
|
680
|
+
m.id.should == 234
|
681
|
+
m.letter.should == 'a'
|
682
|
+
m.min_required.should == 0
|
683
|
+
m.custom_columns.should == 0
|
684
|
+
m.completed_into_column.should == nil
|
685
|
+
m.numeric_into_column.should == nil
|
686
|
+
m.add_column_id_to_numeric.should == nil
|
687
|
+
m.valid?.should be_true
|
585
688
|
requirement = badge.requirements[0]
|
586
689
|
requirement.name.should == 'r_name'
|
587
690
|
requirement.description.should == 'r_description'
|
588
|
-
requirement.
|
589
|
-
requirement.
|
691
|
+
requirement.id.should == 2345
|
692
|
+
requirement.mod.should == m
|
590
693
|
requirement.editable.should be_true
|
591
694
|
requirement.badge.should == badge
|
592
695
|
requirement.valid?.should be_true
|
593
|
-
badge.completion_criteria.should == {
|
594
|
-
:min_modules_required => 1,
|
595
|
-
:fields_required => [],
|
596
|
-
:badges_required => [],
|
597
|
-
:min_requirements_completed => 0,
|
598
|
-
:requires => nil,
|
599
|
-
:add_columns_to_module => nil,
|
600
|
-
:levels_column => nil,
|
601
|
-
:show_letters => false,
|
602
|
-
:modules => [
|
603
|
-
{
|
604
|
-
:badge_id => 123,
|
605
|
-
:badge_version => 0,
|
606
|
-
:module_id => 234,
|
607
|
-
:module_letter => 'a',
|
608
|
-
:min_required => 0,
|
609
|
-
:custom_columns => 0,
|
610
|
-
:completed_into_column => nil,
|
611
|
-
:numeric_into_column => nil,
|
612
|
-
:add_column_id_to_numeric => nil,
|
613
|
-
}
|
614
|
-
]
|
615
|
-
}
|
616
696
|
end
|
617
697
|
end
|
618
698
|
|
@@ -676,8 +756,8 @@ describe "Badge" do
|
|
676
756
|
:id => 123,
|
677
757
|
:version => 0,
|
678
758
|
:requirements => [
|
679
|
-
Osm::Badge::Requirement.new(:
|
680
|
-
Osm::Badge::Requirement.new(:
|
759
|
+
Osm::Badge::Requirement.new(:id => 2345, :editable => true),
|
760
|
+
Osm::Badge::Requirement.new(:id => 6789, :editable => true),
|
681
761
|
]),
|
682
762
|
:due => 0,
|
683
763
|
)
|