osm 1.2.15.dev.1 → 1.2.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG.md +224 -221
  3. data/lib/osm/badge.rb +204 -102
  4. data/spec/osm/badge_spec.rb +217 -137
  5. data/version.rb +1 -1
  6. metadata +4 -4
@@ -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
- :module_letter => 'a',
53
- :field => 1,
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.module_letter.should == 'a'
61
- requirement.field.should == 1
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(completion_criteria:{ modules: [
69
- {module_id: 2, module_letter: 'c'},
70
- {module_id: 10, module_letter: 'b'},
71
- {module_id: 1, module_letter: 'a'}
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(completion_criteria:{ modules: [
79
- {module_id: 2, module_letter: 'c', min_required: 5},
80
- {module_id: 10, module_letter: 'b', min_required: 4},
81
- {module_id: 1, module_letter: 'a', min_required: 3}
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(completion_criteria:{ modules: [
89
- {module_id: 2, module_letter: 'c'},
90
- {module_id: 10, module_letter: 'b'},
91
- {module_id: 1, module_letter: 'a'}
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 field" do
135
- b1 = Osm::Badge::Requirement.new(:badge => Osm::Badge.new(:name => 'A'), :field => 'a')
136
- b2 = Osm::Badge::Requirement.new(:badge => Osm::Badge.new(:name => 'B'), :field => 'a')
137
- b3 = Osm::Badge::Requirement.new(:badge => Osm::Badge.new(:name => 'B'), :field => '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(field: 1),
169
- Osm::Badge::Requirement.new(field: 2),
170
- Osm::Badge::Requirement.new(field: 3),
171
- Osm::Badge::Requirement.new(field: 4),
172
- Osm::Badge::Requirement.new(field: 5),
173
- Osm::Badge::Requirement.new(field: 6),
174
- Osm::Badge::Requirement.new(field: 7),
175
- Osm::Badge::Requirement.new(field: 8),
176
- Osm::Badge::Requirement.new(field: 9),
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(:module_letter=> 'a', :field => '1'),
199
- Osm::Badge::Requirement.new(:module_letter=> 'a', :field => '2'),
200
- Osm::Badge::Requirement.new(:module_letter=> 'b', :field => '3'),
201
- Osm::Badge::Requirement.new(:module_letter=> 'b', :field => '4'),
202
- Osm::Badge::Requirement.new(:module_letter=> 'c', :field => '5'),
203
- Osm::Badge::Requirement.new(:module_letter=> 'c', :field => '6'),
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
- :completion_criteria => {
206
- :modules => [
207
- { module_letter: 'a', module_id: 100 },
208
- { module_letter: 'b', module_id: 200 },
209
- { module_letter: 'c', module_id: 300 }
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(:module_letter=> 'a', :field => '1'),
223
- Osm::Badge::Requirement.new(:module_letter=> 'a', :field => '2'),
224
- Osm::Badge::Requirement.new(:module_letter=> 'b', :field => '3'),
225
- Osm::Badge::Requirement.new(:module_letter=> 'b', :field => '4'),
226
- Osm::Badge::Requirement.new(:module_letter=> 'c', :field => '5'),
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
- :completion_criteria => {
229
- :modules => [
230
- { module_letter: 'a', module_id: 1000, min_required: 1 },
231
- { module_letter: 'b', module_id: 2000, min_required: 2 },
232
- { module_letter: 'c', module_id: 3000, min_required: 1 }
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
- completion_criteria = {
321
+ badge = Osm::ActivityBadge.new(
259
322
  :min_modules_required => 0,
260
- :min_requirements_completed => 0,
323
+ :min_requirements_required => 0,
261
324
  :modules => [
262
- {module_id: 1, module_letter: 'a', min_required: 2},
263
- {module_id: 2, module_letter: 'b', min_required: 1},
264
- {module_id: 3, module_letter: 'c', min_required: 1},
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
- :fields_required => [],
268
- }
269
- badge = Osm::ActivityBadge.new(completion_criteria: completion_criteria)
270
- badge.requirements = [
271
- Osm::Badge::Requirement.new(badge: badge, module_letter: 'a', field: 10),
272
- Osm::Badge::Requirement.new(badge: badge, module_letter: 'a', field: 11),
273
- Osm::Badge::Requirement.new(badge: badge, module_letter: 'b', field: 20),
274
- Osm::Badge::Requirement.new(badge: badge, module_letter: 'b', field: 21),
275
- Osm::Badge::Requirement.new(badge: badge, module_letter: 'c', field: 30),
276
- Osm::Badge::Requirement.new(badge: badge, module_letter: 'c', field: 31),
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.completion_criteria = completion_criteria.merge({
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.completion_criteria = completion_criteria.merge({
303
- :min_requirements_completed => 2
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.completion_criteria = completion_criteria.merge({
319
- :requires => [['a'], ['b', 'c']]
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
- :completion_criteria => {
341
- :min_modules_required => 0,
342
- :min_requirements_completed => 0,
343
- :modules => [
344
- {module_id: 1, module_letter: 'a', min_required: 1},
345
- {module_id: 2, module_letter: 'b', min_required: 1},
346
- {module_id: 3, module_letter: 'c', min_required: 1},
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, module_letter: 'a', field: 10),
353
- Osm::Badge::Requirement.new(badge: badge, module_letter: 'a', field: 11),
354
- Osm::Badge::Requirement.new(badge: badge, module_letter: 'b', field: 20),
355
- Osm::Badge::Requirement.new(badge: badge, module_letter: 'b', field: 21),
356
- Osm::Badge::Requirement.new(badge: badge, module_letter: 'c', field: 30),
357
- Osm::Badge::Requirement.new(badge: badge, module_letter: 'c', field: 31),
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
- :completion_criteria => {:show_letters => false, :levels_column_id => 3000},
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
- :completion_criteria => {:show_letters => true},
497
+ :show_level_letters => true,
416
498
  :requirements => [
417
- Osm::Badge::Requirement.new(:module_letter => 'a', :field => 1000),
418
- Osm::Badge::Requirement.new(:module_letter => 'b', :field => 2000),
419
- Osm::Badge::Requirement.new(:module_letter => 'b', :field => 2001),
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], :completion_criteria => {:show_letters => false, :levels_column_id => 1000}),
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], :completion_criteria => {:show_letters => false, :levels_column_id => 1000}),
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
- :completion_criteria => {:show_letters => true},
534
+ :show_level_letters => true,
453
535
  :requirements => [
454
- Osm::Badge::Requirement.new(:module_letter => 'a', :field => 100),
455
- Osm::Badge::Requirement.new(:module_letter => 'b', :field => 200),
456
- Osm::Badge::Requirement.new(:module_letter => 'b', :field => 201),
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
- :completion_criteria => {:show_letters => false, :levels_column_id => 3000},
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.field.should == 2345
589
- requirement.module_letter.should == 'a'
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(:field => 2345, :editable => true),
680
- Osm::Badge::Requirement.new(:field => 6789, :editable => true),
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
  )