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.
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
  )