osm 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## Version 1.0.1
2
+
3
+ * Fix Osm::Term date helping methods when term contains nil dates
4
+ * Fix fetching event attendance when no attendance has been set for any members
5
+ * Osm::Api exposes the debug option as a psudo class attribute
6
+
1
7
  ## Version 1.0.0
2
8
 
3
9
  * SMS text messages:
data/README.md CHANGED
@@ -32,7 +32,7 @@ Use the [Online Scout Manager](https://www.onlinescoutmanager.co.uk) API.
32
32
  Add to your Gemfile and run the `bundle` command to install it.
33
33
 
34
34
  ```ruby
35
- gem 'osm', '~> 1.0.0'
35
+ gem 'osm', '~> 1.0'
36
36
  ```
37
37
 
38
38
  Configure the gem during the initalization of the app (e.g. if using rails then config/initializers/osm.rb would look like):
data/lib/osm/api.rb CHANGED
@@ -50,6 +50,19 @@ module Osm
50
50
  nil
51
51
  end
52
52
 
53
+ # Configure the debug option
54
+ # @param [Boolean] debug whether to display debugging information
55
+ # @return nil
56
+ def self.debug=(debug)
57
+ @@debug = !!debug
58
+ end
59
+
60
+ # The debug option
61
+ # @return Boolean whether debugging output is enabled
62
+ def self.debug
63
+ @@debug
64
+ end
65
+
53
66
  # Initialize a new API connection
54
67
  # @param [String] user_id OSM userid of the user to act as (get this by using the authorize method)
55
68
  # @param [String] secret OSM secret of the user to act as (get this by using the authorize method)
data/lib/osm/event.rb CHANGED
@@ -256,7 +256,7 @@ module Osm
256
256
  end
257
257
 
258
258
  data = api.perform_query("events.php?action=getEventAttendance&eventid=#{id}&sectionid=#{section_id}&termid=#{term_id}")
259
- data = data['items']
259
+ data = data['items'] || []
260
260
 
261
261
  payment_values = {
262
262
  'Manual' => :manual,
data/lib/osm/term.rb CHANGED
@@ -187,6 +187,7 @@ module Osm
187
187
  # @param [Date] date
188
188
  # @return [Boolean] if the term is completly before the passed date
189
189
  def before?(date)
190
+ return false if finish.nil?
190
191
  return finish < date.to_date
191
192
  end
192
193
 
@@ -194,24 +195,29 @@ module Osm
194
195
  # @param [Date] date
195
196
  # @return [Boolean] if the term is completly after the passed date
196
197
  def after?(date)
198
+ return false if start.nil?
197
199
  return start > date.to_date
198
200
  end
199
201
 
200
202
  # Determine if the term is in the future
201
203
  # @return [Boolean] if the term starts after today
202
204
  def future?
205
+ return false if start.nil?
203
206
  return start > Date.today
204
207
  end
205
208
 
206
209
  # Determine if the term is in the past
207
210
  # @return [Boolean] if the term finished before today
208
211
  def past?
212
+ return false if finish.nil?
209
213
  return finish < Date.today
210
214
  end
211
215
 
212
216
  # Determine if the term is current
213
217
  # @return [Boolean] if the term started before today and finishes after today
214
218
  def current?
219
+ return false if start.nil?
220
+ return false if finish.nil?
215
221
  return (start <= Date.today) && (finish >= Date.today)
216
222
  end
217
223
 
@@ -219,6 +225,8 @@ module Osm
219
225
  # @param [Date] date The date to test
220
226
  # @return [Boolean] if the term started before the date and finishes after the date
221
227
  def contains_date?(date)
228
+ return false if start.nil?
229
+ return false if finish.nil?
222
230
  return (start <= date) && (finish >= date)
223
231
  end
224
232
 
data/spec/osm/api_spec.rb CHANGED
@@ -25,6 +25,14 @@ describe "API" do
25
25
  expect{ Osm::Api.configure(@CONFIGURATION[:api].merge(:ogm => @CONFIGURATION[:api][:ogm].select{ |k,v| (k != :name)})) }.to raise_error(ArgumentError, ':ogm must contain a key :name')
26
26
  end
27
27
 
28
+ it "Exposes the debug option seperatly too" do
29
+ Osm::Api.debug.should be_false
30
+ Osm::Api.debug = true
31
+ Osm::Api.debug.should be_true
32
+ Osm::Api.debug = false
33
+ Osm::Api.debug.should be_false
34
+ end
35
+
28
36
 
29
37
  it "Raises errors on bad arguments to create" do
30
38
  # Both userid and secret must be passed
@@ -680,7 +680,6 @@ describe "Event" do
680
680
  FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/events.php?action=getEventAttendance&eventid=2&sectionid=1&termid=3", :body => attendance_body.to_json)
681
681
 
682
682
  event = Osm::Event.new(:id => 2, :section_id => 1)
683
- event.should_not be_nil
684
683
  attendance = event.get_attendance(@api, 3)
685
684
  attendance.is_a?(Array).should be_true
686
685
  ea = attendance[0]
@@ -699,6 +698,19 @@ describe "Event" do
699
698
  ea.row.should == 0
700
699
  end
701
700
 
701
+ it "Get attendance (no items)" do
702
+ attendance_body = {
703
+ 'identifier' => 'scoutid',
704
+ 'eventid' => '2',
705
+ }
706
+
707
+ FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/events.php?action=getEventAttendance&eventid=2&sectionid=1&termid=3", :body => attendance_body.to_json)
708
+
709
+ event = Osm::Event.new(:id => 2, :section_id => 1)
710
+ attendance = event.get_attendance(@api, 3)
711
+ attendance.should == []
712
+ end
713
+
702
714
  it "Update attendance (succeded)" do
703
715
  ea = Osm::Event::Attendance.new(:row => 0, :member_id => 4, :fields => {1 => 'old value', 2 => 'another old value'}, :event => Osm::Event.new(:id => 2, :section_id => 1))
704
716
 
@@ -108,6 +108,16 @@ describe "Term" do
108
108
  term3.contains_date?(Date.today).should == false
109
109
  end
110
110
 
111
+ it "Date helpers return false for nil dates" do
112
+ term = Osm::Term.new
113
+ term.before?(Date.today).should be_false
114
+ term.after?(Date.today).should be_false
115
+ term.past?.should be_false
116
+ term.future?.should be_false
117
+ term.current?.should be_false
118
+ term.contains_date?(Date.today).should be_false
119
+ end
120
+
111
121
 
112
122
  describe "Using the API" do
113
123
 
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Osm
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
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: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-07 00:00:00.000000000 Z
12
+ date: 2013-04-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport