osm 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## Version 0.1.3
2
+
3
+ * Add get\_badge\_stock(api) to section
4
+
1
5
  ## Version 0.1.2
2
6
 
3
7
  * Bug fixes
data/lib/osm/section.rb CHANGED
@@ -184,6 +184,7 @@ module Osm
184
184
  return all_permissions
185
185
  end
186
186
 
187
+
187
188
  # Get the section's notepads
188
189
  # @param [Osm::Api] The api to use to make the request
189
190
  # @!macro options_get
@@ -207,6 +208,28 @@ module Osm
207
208
  return notepad
208
209
  end
209
210
 
211
+ # Get badge stock levels
212
+ # @param [Osm::Api] The api to use to make the request
213
+ # @param [Osm::Term, Fixnum, nil] section the term (or its ID) to get the stock levels for, passing nil causes the current term to be used
214
+ # @!macro options_get
215
+ # @return Hash
216
+ def get_badge_stock(api, term=nil, options={})
217
+ term_id = term.nil? ? Osm::Term.get_current_term_for_section(api, self).id : term.to_i
218
+ cache_key = ['badge_stock', id, term_id]
219
+
220
+ if !options[:no_cache] && self.class.cache_exist?(api, cache_key) && self.class.get_user_permissions(api, self)[:badge].include?(:read)
221
+ return self.class.cache_read(api, cache_key)
222
+ end
223
+
224
+ data = api.perform_query("challenges.php?action=getInitialBadges&type=core&sectionid=#{id}&section=#{type}&termid=#{term_id}")
225
+ data = (data['stock'] || {}).select{ |k,v| !k.eql?('sectionid') }.
226
+ inject({}){ |new_hash,(badge, level)| new_hash[badge] = level.to_i; new_hash }
227
+
228
+ self.class.cache_write(api, cache_key, data)
229
+ return data
230
+ end
231
+
232
+
210
233
  # Check if this section is one of the youth sections
211
234
  # @return [Boolean]
212
235
  def youth_section?
@@ -41,7 +41,7 @@ describe "Model" do
41
41
  Osm::Model.configure({})
42
42
  config = ModelTester.test_get_config
43
43
  config[:cache].should be_nil
44
- config[:ttl].should == 1800
44
+ config[:ttl].should == 600
45
45
  config[:prepend_to_key].should == 'OSMAPI'
46
46
  end
47
47
 
@@ -63,7 +63,7 @@ describe "Model" do
63
63
  end
64
64
 
65
65
  it "Writes" do
66
- OsmTest::Cache.should_receive('write').with('OSMAPI-osm-key', 'data', {:expires_in=>1800}) { true }
66
+ OsmTest::Cache.should_receive('write').with('OSMAPI-osm-key', 'data', {:expires_in=>600}) { true }
67
67
  ModelTester.cache('write', @api, 'key', 'data').should be_true
68
68
  end
69
69
 
@@ -123,7 +123,7 @@ describe "Model" do
123
123
 
124
124
  it "All Sections" do
125
125
  permissions = {1 => {:a => [:read, :write]}, 2 => {:a => [:read]}}
126
- OsmTest::Cache.should_receive('write').with('OSMAPI-osm-permissions-user_id', permissions, {:expires_in=>1800}) { true }
126
+ OsmTest::Cache.should_receive('write').with('OSMAPI-osm-permissions-user_id', permissions, {:expires_in=>600}) { true }
127
127
  ModelTester.set_user_permissions(@api, permissions)
128
128
  end
129
129
 
@@ -131,10 +131,10 @@ describe "Model" do
131
131
  permissions = {1 => {:a => [:read, :write]}, 2 => {:a => [:read]}}
132
132
  OsmTest::Cache.should_receive('exist?').with('OSMAPI-osm-permissions-user_id') { true }
133
133
  OsmTest::Cache.should_receive('read').with('OSMAPI-osm-permissions-user_id') { permissions }
134
- OsmTest::Cache.should_receive('write').with('OSMAPI-osm-permissions-user_id', permissions.merge(3 => {:a => [:read]}), {:expires_in=>1800}) { true }
134
+ OsmTest::Cache.should_receive('write').with('OSMAPI-osm-permissions-user_id', permissions.merge(3 => {:a => [:read]}), {:expires_in=>600}) { true }
135
135
  ModelTester.set_user_permissions(@api, 3, {:a => [:read]})
136
136
  end
137
137
 
138
138
  end
139
139
 
140
- end
140
+ end
@@ -122,6 +122,21 @@ describe "Section" do
122
122
  section.get_notepad(@api).should == 'Section 1'
123
123
  end
124
124
 
125
+ it "Fetch badge stock levels" do
126
+ badges_body = {
127
+ 'stock' => {
128
+ 'sectionid' => '1',
129
+ 'badge_1' => '1',
130
+ 'badge_2' => '2'
131
+ }
132
+ }
133
+ FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/challenges.php?action=getInitialBadges&type=core&sectionid=1&section=beavers&termid=2", :body => badges_body.to_json)
134
+
135
+ section = Osm::Section.get(@api, 1)
136
+ section.should_not be_nil
137
+ section.get_badge_stock(@api, 2).should == {'badge_1' => 1, 'badge_2' => 2}
138
+ end
139
+
125
140
  end
126
141
 
127
142
 
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Osm
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: osm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-21 00:00:00.000000000Z
12
+ date: 2012-10-22 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &83563540 !ruby/object:Gem::Requirement
16
+ requirement: &78033570 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.2'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *83563540
24
+ version_requirements: *78033570
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: httparty
27
- requirement: &83563250 !ruby/object:Gem::Requirement
27
+ requirement: &78033180 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0.9'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *83563250
35
+ version_requirements: *78033180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: active_attr
38
- requirement: &83562880 !ruby/object:Gem::Requirement
38
+ requirement: &78032730 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0.6'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *83562880
46
+ version_requirements: *78032730
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activemodel
49
- requirement: &83561580 !ruby/object:Gem::Requirement
49
+ requirement: &78032450 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '3.2'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *83561580
57
+ version_requirements: *78032450
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &83561350 !ruby/object:Gem::Requirement
60
+ requirement: &78032090 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0.9'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *83561350
68
+ version_requirements: *78032090
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &83561080 !ruby/object:Gem::Requirement
71
+ requirement: &78031770 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '2.11'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *83561080
79
+ version_requirements: *78031770
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: fakeweb
82
- requirement: &83560720 !ruby/object:Gem::Requirement
82
+ requirement: &78031150 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '1.3'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *83560720
90
+ version_requirements: *78031150
91
91
  description: Use the Online Scout Manager API (https://www.onlinescoutmanager.co.uk)
92
92
  to retrieve and save data.
93
93
  email:
@@ -149,12 +149,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
149
  - - ! '>='
150
150
  - !ruby/object:Gem::Version
151
151
  version: '0'
152
+ segments:
153
+ - 0
154
+ hash: -198994829
152
155
  required_rubygems_version: !ruby/object:Gem::Requirement
153
156
  none: false
154
157
  requirements:
155
158
  - - ! '>='
156
159
  - !ruby/object:Gem::Version
157
160
  version: '0'
161
+ segments:
162
+ - 0
163
+ hash: -198994829
158
164
  requirements: []
159
165
  rubyforge_project: osm
160
166
  rubygems_version: 1.8.10
@@ -162,4 +168,3 @@ signing_key:
162
168
  specification_version: 3
163
169
  summary: Use the Online Scout Manager API
164
170
  test_files: []
165
- has_rdoc: