osm 1.2.15 → 1.2.16
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 +10 -0
- data/lib/osm.rb +12 -1
- data/lib/osm/model.rb +2 -17
- data/lib/osm/section.rb +41 -0
- data/spec/osm/section_spec.rb +108 -0
- data/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ODIwM2UyMGRkZWZiZmMxN2Y5M2VhODlkZDgyZDhjY2Y2YzRhYjYyZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZmQ1OWJlOWUyMDUzNWFiMzk5MGJjYmYwMzAxOWNjMWU3ZTdiMTRiOQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NGUxNWIzNmE4MjlkMWQ1OTVhOTY2YTU3Y2VkMWZkYzZiMjFmZjk5Yzc1M2Qx
|
10
|
+
ZmRkZjU5YjA3MjNjYTQ3ZTFiMmEzYzkwOWRiYTc3YzhjNmRiOGE1YWQyZDc0
|
11
|
+
NDY3MWZkOTUwZjkwNTgyODk4MDY5Y2U3YzAzNGM5N2UwZDY5NDM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZjE4OWI0YzNjZTliMTc2NzAwN2Y4N2JmOGQ4ZGNmYjA2OTJhMWJkMGNlZWU5
|
14
|
+
OTYxNjVhYTE5ZThjYjJhYWVmNjlmMWI1ZWQ3Yjg5ZWM5ZmQ0MGFkOTQ4ZTA1
|
15
|
+
YjE0NDlkOTdiYmY2MzhhNTYwZDRjMTZhZjU4MjZmYTJiYmYwOTY=
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## Version 1.2.16
|
2
|
+
|
3
|
+
* Osm::Section gains instance methods:
|
4
|
+
* bronze?
|
5
|
+
* silver?
|
6
|
+
* gold?
|
7
|
+
* gold_plus?
|
8
|
+
* subscription_at_least?(level)
|
9
|
+
* Osm::SUBSCRIPTION_LEVEL_NAMES is now a Hash not an Array
|
10
|
+
|
1
11
|
## Version 1.2.15
|
2
12
|
|
3
13
|
* Add support for census and giftaid link generation for members
|
data/lib/osm.rb
CHANGED
@@ -36,7 +36,18 @@ module Osm
|
|
36
36
|
OSM_TIME_REGEX = /\A(?:[0-1][0-9]|2[0-3]):[0-5][0-9]\Z/
|
37
37
|
OSM_DATE_REGEX_UNANCHORED = /(?:[1-9]\d{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1]))|(?:(?:0?[1-9]|[1-2][0-9]|3[0-1])\/(?:0?[1-9]|1[0-2])\/(?:\d{2}|[1-9]\d{3}))/
|
38
38
|
OSM_DATE_REGEX = /\A#{Osm::OSM_DATE_REGEX_UNANCHORED.to_s}\Z/
|
39
|
-
|
39
|
+
subscription_level_names = {
|
40
|
+
1 => 'Bronze',
|
41
|
+
:bronze => 'Bronze',
|
42
|
+
2 => 'Silver',
|
43
|
+
:silver => 'Silver',
|
44
|
+
3 => 'Gold',
|
45
|
+
:gold => 'Gold',
|
46
|
+
4 => 'Gold+',
|
47
|
+
:gold_plus => 'Gold+',
|
48
|
+
}
|
49
|
+
subscription_level_names.default = 'Unknown'
|
50
|
+
SUBSCRIPTION_LEVEL_NAMES = subscription_level_names
|
40
51
|
SUBSCRIPTION_LEVELS = [nil, :bronze, :silver, :gold, :gold_plus]
|
41
52
|
end
|
42
53
|
|
data/lib/osm/model.rb
CHANGED
@@ -209,23 +209,8 @@ module Osm
|
|
209
209
|
# @raise [Osm::Forbidden] If the Section does not have the required OSM Subscription (or higher)
|
210
210
|
def self.require_subscription(api, level, section, options={})
|
211
211
|
section = Osm::Section.get(api, section, options) unless section.is_a?(Osm::Section)
|
212
|
-
if
|
213
|
-
|
214
|
-
when :bronze
|
215
|
-
level = 1
|
216
|
-
when :silver
|
217
|
-
level = 2
|
218
|
-
when :gold
|
219
|
-
level = 3
|
220
|
-
when :gold_plus
|
221
|
-
level = 4
|
222
|
-
else
|
223
|
-
level = 0
|
224
|
-
end
|
225
|
-
end
|
226
|
-
if section.nil? || section.subscription_level < level
|
227
|
-
level_name = Osm::SUBSCRIPTION_LEVEL_NAMES[level] || level
|
228
|
-
raise Osm::Forbidden, "Insufficent OSM subscription level (#{level_name} required for #{section.name})."
|
212
|
+
if section.nil? || !section.subscription_at_least?(level)
|
213
|
+
raise Osm::Forbidden, "Insufficent OSM subscription level (#{Osm::SUBSCRIPTION_LEVEL_NAMES[level]} required for #{section.name})."
|
229
214
|
end
|
230
215
|
end
|
231
216
|
|
data/lib/osm/section.rb
CHANGED
@@ -376,6 +376,47 @@ module Osm
|
|
376
376
|
Osm::SUBSCRIPTION_LEVEL_NAMES[subscription_level]
|
377
377
|
end
|
378
378
|
|
379
|
+
# Check if the section has a subscription of a given level (or higher)
|
380
|
+
# @param level [Fixnum, Symbol] the subscription level required
|
381
|
+
# @return [Boolean] Whether the section has a subscription of level (or higher)
|
382
|
+
def subscription_at_least?(level)
|
383
|
+
if level.is_a?(Symbol) # Convert to Fixnum
|
384
|
+
case level
|
385
|
+
when :bronze
|
386
|
+
level = 1
|
387
|
+
when :silver
|
388
|
+
level = 2
|
389
|
+
when :gold
|
390
|
+
level = 3
|
391
|
+
when :gold_plus
|
392
|
+
level = 4
|
393
|
+
else
|
394
|
+
level = 0
|
395
|
+
end
|
396
|
+
end
|
397
|
+
|
398
|
+
return subscription_level >= level
|
399
|
+
end
|
400
|
+
|
401
|
+
# @!method bronze?
|
402
|
+
# Check if this has a Bronze level subscription
|
403
|
+
# @return (Boolean)
|
404
|
+
# @!method silver?
|
405
|
+
# Check if this has a Silver level subscription
|
406
|
+
# @return (Boolean)
|
407
|
+
# @!method gold?
|
408
|
+
# Check if this has a Gold level subscription
|
409
|
+
# @return (Boolean)
|
410
|
+
# @!method gold_plus?
|
411
|
+
# Check if this has a Gold+ level subscription
|
412
|
+
# @return (Boolean)
|
413
|
+
Osm::SUBSCRIPTION_LEVELS[1..-1].each_with_index do |attribute, index|
|
414
|
+
define_method "#{attribute}?" do
|
415
|
+
subscription_level == (index + 1)
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
419
|
+
|
379
420
|
# Compare Section based on group_name type (age order), then name
|
380
421
|
def <=>(another)
|
381
422
|
result = self.group_name <=> another.try(:group_name)
|
data/spec/osm/section_spec.rb
CHANGED
@@ -295,6 +295,114 @@ describe "Section" do
|
|
295
295
|
end
|
296
296
|
end
|
297
297
|
|
298
|
+
describe "Corretly works out the subscription level" do
|
299
|
+
|
300
|
+
it "Bronze" do
|
301
|
+
section = Osm::Section.new(subscription_level: 1)
|
302
|
+
section.bronze?.should == true
|
303
|
+
section.silver?.should == false
|
304
|
+
section.gold?.should == false
|
305
|
+
section.gold_plus?.should == false
|
306
|
+
end
|
307
|
+
|
308
|
+
it "Silver" do
|
309
|
+
section = Osm::Section.new(subscription_level: 2)
|
310
|
+
section.bronze?.should == false
|
311
|
+
section.silver?.should == true
|
312
|
+
section.gold?.should == false
|
313
|
+
section.gold_plus?.should == false
|
314
|
+
end
|
315
|
+
|
316
|
+
it "Gold" do
|
317
|
+
section = Osm::Section.new(subscription_level: 3)
|
318
|
+
section.bronze?.should == false
|
319
|
+
section.silver?.should == false
|
320
|
+
section.gold?.should == true
|
321
|
+
section.gold_plus?.should == false
|
322
|
+
end
|
323
|
+
|
324
|
+
it "Gold+" do
|
325
|
+
section = Osm::Section.new(subscription_level: 4)
|
326
|
+
section.bronze?.should == false
|
327
|
+
section.silver?.should == false
|
328
|
+
section.gold?.should == false
|
329
|
+
section.gold_plus?.should == true
|
330
|
+
end
|
331
|
+
|
332
|
+
it "Unknown" do
|
333
|
+
section = Osm::Section.new(subscription_level: 0)
|
334
|
+
section.bronze?.should == false
|
335
|
+
section.silver?.should == false
|
336
|
+
section.gold?.should == false
|
337
|
+
section.gold_plus?.should == false
|
338
|
+
end
|
339
|
+
|
340
|
+
end # describe
|
341
|
+
|
342
|
+
describe "Correctly works out if a section has a subscription of at least" do
|
343
|
+
|
344
|
+
it "Bronze" do
|
345
|
+
section = Osm::Section.new(subscription_level: 1)
|
346
|
+
section.subscription_at_least?(:bronze).should == true
|
347
|
+
section.subscription_at_least?(:silver).should == false
|
348
|
+
section.subscription_at_least?(:gold).should == false
|
349
|
+
section.subscription_at_least?(:gold_plus).should == false
|
350
|
+
section.subscription_at_least?(1).should == true
|
351
|
+
section.subscription_at_least?(2).should == false
|
352
|
+
section.subscription_at_least?(3).should == false
|
353
|
+
section.subscription_at_least?(4).should == false
|
354
|
+
end
|
355
|
+
|
356
|
+
it "Silver" do
|
357
|
+
section = Osm::Section.new(subscription_level: 2)
|
358
|
+
section.subscription_at_least?(:bronze).should == true
|
359
|
+
section.subscription_at_least?(:silver).should == true
|
360
|
+
section.subscription_at_least?(:gold).should == false
|
361
|
+
section.subscription_at_least?(:gold_plus).should == false
|
362
|
+
section.subscription_at_least?(1).should == true
|
363
|
+
section.subscription_at_least?(2).should == true
|
364
|
+
section.subscription_at_least?(3).should == false
|
365
|
+
section.subscription_at_least?(4).should == false
|
366
|
+
end
|
367
|
+
|
368
|
+
it "Gold" do
|
369
|
+
section = Osm::Section.new(subscription_level: 3)
|
370
|
+
section.subscription_at_least?(:bronze).should == true
|
371
|
+
section.subscription_at_least?(:silver).should == true
|
372
|
+
section.subscription_at_least?(:gold).should == true
|
373
|
+
section.subscription_at_least?(:gold_plus).should == false
|
374
|
+
section.subscription_at_least?(1).should == true
|
375
|
+
section.subscription_at_least?(2).should == true
|
376
|
+
section.subscription_at_least?(3).should == true
|
377
|
+
section.subscription_at_least?(4).should == false
|
378
|
+
end
|
379
|
+
|
380
|
+
it "Gold+" do
|
381
|
+
section = Osm::Section.new(subscription_level: 4)
|
382
|
+
section.subscription_at_least?(:bronze).should == true
|
383
|
+
section.subscription_at_least?(:silver).should == true
|
384
|
+
section.subscription_at_least?(:gold).should == true
|
385
|
+
section.subscription_at_least?(:gold_plus).should == true
|
386
|
+
section.subscription_at_least?(1).should == true
|
387
|
+
section.subscription_at_least?(2).should == true
|
388
|
+
section.subscription_at_least?(3).should == true
|
389
|
+
section.subscription_at_least?(4).should == true
|
390
|
+
end
|
391
|
+
|
392
|
+
it "Unknown" do
|
393
|
+
section = Osm::Section.new(subscription_level: 0)
|
394
|
+
section.subscription_at_least?(:bronze).should == false
|
395
|
+
section.subscription_at_least?(:silver).should == false
|
396
|
+
section.subscription_at_least?(:gold).should == false
|
397
|
+
section.subscription_at_least?(:gold_plus).should == false
|
398
|
+
section.subscription_at_least?(1).should == false
|
399
|
+
section.subscription_at_least?(2).should == false
|
400
|
+
section.subscription_at_least?(3).should == false
|
401
|
+
section.subscription_at_least?(4).should == false
|
402
|
+
end
|
403
|
+
|
404
|
+
end # describe
|
405
|
+
|
298
406
|
end
|
299
407
|
|
300
408
|
|
data/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: osm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Gauld
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|