osm 0.1.12 → 0.1.13

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## Version 0.1.13
2
+
3
+ * Add attendance limit attributes to Event:
4
+ * attendance\_limit - Fixnum, 0 = no limit
5
+ * attendance\_limit\_includes\_leaders Boolean
6
+ * Add limited\_attendance? method to Event
7
+ * Add setting of a section's notepad
8
+ * Add updating of Activity
9
+ * Add grouping\_name attribute to Member
10
+
1
11
  ## Version 0.1.12
2
12
 
3
13
  * Attribute Section.myscout\_email\_address\_send defaults to an empty String
data/README.md CHANGED
@@ -100,6 +100,7 @@ however it should be noted that when the OSM API adds a feature it can be diffic
100
100
  * Terms
101
101
 
102
102
  ### Update
103
+ * Activity
103
104
  * Evening
104
105
  * Event
105
106
  * Event Attendance
@@ -133,10 +134,9 @@ however it should be noted that when the OSM API adds a feature it can be diffic
133
134
  * Retreive [issue 21]
134
135
  * Update [issue 22]
135
136
  * Retrieve details for each badge (stock, short column names etc.) [issue 20]
136
- * Update Activity
137
- * Gift aid (Everything)
138
- * Finances (Everything)
139
137
  * SMS:
140
138
  * Retreival of delivery reports
141
139
  * Sending a message
140
+ * Gift aid (Everything)
141
+ * Finances (Everything)
142
142
  * MyScout (Everything) (Maybe)
data/lib/osm/activity.rb CHANGED
@@ -58,8 +58,8 @@ module Osm
58
58
  attribute :location
59
59
  attribute :shared, :type => Integer
60
60
  attribute :rating, :type => Integer
61
- attribute :editable, :type => Boolean
62
- attribute :deletable, :type => Boolean
61
+ attribute :editable, :type => Boolean, :default => true
62
+ attribute :deletable, :type => Boolean, :default => true
63
63
  attribute :used, :type => Integer
64
64
  attribute :versions, :default => []
65
65
  attribute :sections, :default => []
@@ -72,13 +72,13 @@ module Osm
72
72
  :sections, :tags, :files, :badges
73
73
 
74
74
  validates_numericality_of :id, :only_integer=>true, :greater_than=>0
75
- validates_numericality_of :version, :only_integer=>true, :greater_than_or_equal_to=>0
76
- validates_numericality_of :group_id, :only_integer=>true, :greater_than=>0
77
- validates_numericality_of :user_id, :only_integer=>true, :greater_than=>0
75
+ validates_numericality_of :version, :only_integer=>true, :greater_than_or_equal_to=>0, :allow_nil=>true
76
+ validates_numericality_of :group_id, :only_integer=>true, :greater_than=>0, :allow_nil=>true
77
+ validates_numericality_of :user_id, :only_integer=>true, :greater_than=>0, :allow_nil=>true
78
78
  validates_numericality_of :running_time, :only_integer=>true, :greater_than_or_equal_to=>0
79
- validates_numericality_of :shared, :only_integer=>true, :greater_than_or_equal_to=>0
80
- validates_numericality_of :rating, :only_integer=>true
81
- validates_numericality_of :used, :only_integer=>true
79
+ validates_numericality_of :shared, :only_integer=>true, :greater_than_or_equal_to=>0, :allow_nil=>true
80
+ validates_numericality_of :rating, :only_integer=>true, :allow_nil=>true
81
+ validates_numericality_of :used, :only_integer=>true, :allow_nil=>true
82
82
  validates_presence_of :title
83
83
  validates_presence_of :description
84
84
  validates_presence_of :resources
@@ -179,10 +179,10 @@ module Osm
179
179
 
180
180
  # Add this activity to the programme in OSM
181
181
  # @param [Osm::Api] api The api to use to make the request
182
- # @param [Osm::Section, Fixnum] activity The Section (or it's ID) to add the Activity to
182
+ # @param [Osm::Section, Fixnum] section The Section (or it's ID) to add the Activity to
183
183
  # @param [Date, DateTime] date The date of the Evening to add the Activity to (OSM will create the Evening if it doesn't already exist)
184
184
  # @param [String] notes The notes which should appear for this Activity on this Evening
185
- # @return [Boolean] Whether the activity ws successfully added
185
+ # @return [Boolean] Whether the activity was successfully added
186
186
  def add_to_programme(api, section, date, notes="")
187
187
  data = api.perform_query("programme.php?action=addActivityToProgramme", {
188
188
  'meetingdate' => date.strftime(Osm::OSM_DATE_FORMAT),
@@ -194,6 +194,34 @@ module Osm
194
194
  return (data == {'result'=>0})
195
195
  end
196
196
 
197
+ # Update this activity in OSM
198
+ # @param [Osm::Api] api The api to use to make the request
199
+ # @param [Osm::Section, Fixnum] section The Section (or it's ID)
200
+ # @param [Boolean] secret_update Whether this is a secret update
201
+ # @return [Boolean] Whether the activity was successfully added
202
+ def update(api, section, secret_update=false)
203
+ raise ObjectIsInvalid, 'activity is invalid' unless valid?
204
+
205
+ data = api.perform_query("programme.php?action=update", {
206
+ 'title' => title,
207
+ 'description' => description,
208
+ 'resources' => resources,
209
+ 'instructions' => instructions,
210
+ 'id' => id,
211
+ 'files' => files.map{|f| f.id }.join(','),
212
+ 'time' => running_time.to_s,
213
+ 'location' => location,
214
+ 'sections' => sections.to_json,
215
+ 'tags' => tags.to_json,
216
+ 'links' => badges.map{ |b| {'activityid'=>b.activity_id.to_s, 'section'=>b.section_type, 'badgetype'=>b.type, 'badge'=>b.badge, 'columnname'=>b.requirement, 'label'=>b.label}}.to_json,
217
+ 'shared' => shared,
218
+ 'sectionid' => section.to_i,
219
+ 'secretEdit' => secret_update,
220
+ })
221
+
222
+ return (data == {'result'=>true})
223
+ end
224
+
197
225
 
198
226
  private
199
227
  class File
data/lib/osm/event.rb CHANGED
@@ -36,6 +36,10 @@ module Osm
36
36
  # @return [Boolean] whether parent's can change their child's details
37
37
  # @!attribute [rw] reminders
38
38
  # @return [Boolean] whether email reminders are sent for the event
39
+ # @!attribute [rw] attendance_limit
40
+ # @return [Fixnum] the maximum number of people who can attend the event (0 = no limit)
41
+ # @!attendance [rw] attendance_limit_includes_leaders
42
+ # @return [Boolean] whether the attendance limit includes leaders
39
43
 
40
44
  attribute :id, :type => Integer
41
45
  attribute :section_id, :type => Integer
@@ -52,17 +56,21 @@ module Osm
52
56
  attribute :confirm_by_date, :type => Date
53
57
  attribute :allow_changes, :type => Boolean, :default => false
54
58
  attribute :reminders, :type => Boolean, :default => true
59
+ attribute :attendance_limit, :type => Integer, :default => 0
60
+ attribute :attendance_limit_includes_leaders, :type => Boolean, :default => false
55
61
 
56
62
  attr_accessible :id, :section_id, :name, :start, :finish, :cost, :location, :notes, :archived,
57
- :fields, :columns, :notepad, :public_notepad,
58
- :confirm_by_date, :allow_changes, :reminders
63
+ :fields, :columns, :notepad, :public_notepad, :confirm_by_date, :allow_changes,
64
+ :reminders, :attendance_limit, :attendance_limit_includes_leaders
59
65
 
60
66
  validates_numericality_of :id, :only_integer=>true, :greater_than=>0, :allow_nil => true
61
67
  validates_numericality_of :section_id, :only_integer=>true, :greater_than=>0
68
+ validates_numericality_of :attendance_limit, :only_integer=>true, :greater_than_or_equal_to=>0
62
69
  validates_presence_of :name
63
70
  validates :columns, :array_of => {:item_type => Osm::Event::Column, :item_valid => true}
64
71
  validates_inclusion_of :allow_changes, :in => [true, false]
65
72
  validates_inclusion_of :reminders, :in => [true, false]
73
+ validates_inclusion_of :attendance_limit_includes_leaders, :in => [true, false]
66
74
 
67
75
 
68
76
  # @!method initialize
@@ -144,6 +152,8 @@ module Osm
144
152
  'confdate' => event.confirm_by_date? ? event.confirm_by_date.strftime(Osm::OSM_DATE_FORMAT) : '',
145
153
  'allowChanges' => event.allow_changes ? 'true' : 'false',
146
154
  'disablereminders' => !event.reminders ? 'true' : 'false',
155
+ 'attendancelimit' => event.attendance_limit,
156
+ 'limitincludesleaders' => event.attendance_limit_includes_leaders,
147
157
  })
148
158
 
149
159
  # The cached events for the section will be out of date - remove them
@@ -177,6 +187,8 @@ module Osm
177
187
  'confdate' => confirm_by_date? ? confirm_by_date.strftime(Osm::OSM_DATE_FORMAT) : '',
178
188
  'allowChanges' => allow_changes ? 'true' : 'false',
179
189
  'disablereminders' => !reminders ? 'true' : 'false',
190
+ 'attendancelimit' => attendance_limit,
191
+ 'limitincludesleaders' => attendance_limit_includes_leaders,
180
192
  })
181
193
  api.perform_query("events.php?action=saveNotepad&sectionid=#{section_id}", {
182
194
  'eventid' => id,
@@ -309,6 +321,11 @@ module Osm
309
321
  end
310
322
 
311
323
 
324
+ def limited_attendance?
325
+ (attendance_limit != 0)
326
+ end
327
+
328
+
312
329
  private
313
330
  def self.new_event_from_data(event_data)
314
331
  event = Osm::Event.new(
@@ -326,6 +343,8 @@ module Osm
326
343
  :confirm_by_date => Osm::parse_date(event_data['confdate']),
327
344
  :allow_changes => event_data['allowchanges'].eql?('1'),
328
345
  :reminders => !event_data['disablereminders'].eql?('1'),
346
+ :attendance_limit => event_data['attendancelimit'].to_i,
347
+ :attendance_limit_includes_leaders => event_data['limitincludesleaders'].eql?('1'),
329
348
  )
330
349
 
331
350
  columns = []
data/lib/osm/member.rb CHANGED
@@ -74,6 +74,8 @@ module Osm
74
74
  # @return [Fixnum] the grouping within the section that the member belongs to
75
75
  # @!attribute [rw] grouping_leader
76
76
  # @return [Fixnum] whether the member is the grouping leader (0=no, 1=seconder/APL, 2=sixer/PL)
77
+ # @!attribute [rw] grouping_name
78
+ # @return [Fixnum] the grouping within the section that the member belongs to
77
79
  # @!attribute [rw] joined
78
80
  # @return [Date] when the member joined the section
79
81
  # @!attribute [rw] age
@@ -116,6 +118,7 @@ module Osm
116
118
  attribute :custom8, :type => String, :default => ''
117
119
  attribute :custom9, :type => String, :default => ''
118
120
  attribute :grouping_id, :type => Integer
121
+ attribute :grouping_name, :type => String, :default => ''
119
122
  attribute :grouping_leader, :type => Integer
120
123
  attribute :joined, :type => Date
121
124
  attribute :age, :type => String
@@ -125,7 +128,7 @@ module Osm
125
128
  :phone1, :phone2, :phone3, :phone4, :address, :address2, :date_of_birth, :started,
126
129
  :joining_in_years, :parents, :notes, :medical, :religion, :school, :ethnicity, :subs,
127
130
  :custom1, :custom2, :custom3, :custom4, :custom5, :custom6, :custom7, :custom8, :custom9,
128
- :grouping_id, :grouping_leader, :joined, :age, :joined_years
131
+ :grouping_id, :grouping_name, :grouping_leader, :joined, :age, :joined_years
129
132
 
130
133
  validates_numericality_of :id, :only_integer=>true, :greater_than=>0, :unless => Proc.new { |r| r.id.nil? }
131
134
  validates_numericality_of :section_id, :only_integer=>true, :greater_than=>0
@@ -197,6 +200,7 @@ module Osm
197
200
  :custom8 => item['custom8'],
198
201
  :custom9 => item['custom9'],
199
202
  :grouping_id => Osm::to_i_or_nil(item['patrolid']),
203
+ :grouping_name => Osm::to_i_or_nil(item['patrol']),
200
204
  :grouping_leader => Osm::to_i_or_nil(item['patrolleader']),
201
205
  :joined => Osm::parse_date(item['joined']),
202
206
  :age => item['age'].gsub(' ', ''),
data/lib/osm/section.rb CHANGED
@@ -275,7 +275,7 @@ module Osm
275
275
  end
276
276
 
277
277
 
278
- # Get the section's notepads
278
+ # Get the section's notepad from OSM
279
279
  # @param [Osm::Api] The api to use to make the request
280
280
  # @!macro options_get
281
281
  # @return [String] the section's notepad
@@ -298,6 +298,21 @@ module Osm
298
298
  return notepad
299
299
  end
300
300
 
301
+ # Set the section's notepad in OSM
302
+ # @param [Osm::Api] api The api to use to make the request
303
+ # @param [String] content The content of the notepad
304
+ # @return [Boolean] whether the notepad was sucessfully updated
305
+ def set_notepad(api, content)
306
+ data = api.perform_query("users.php?action=updateNotepad&sectionid=#{id}", {'value' => content})
307
+
308
+ if data.is_a?(Hash) && data['ok'] # Success
309
+ cache_write(api, ['notepad', id], content)
310
+ return true
311
+ end
312
+ return false
313
+ end
314
+
315
+
301
316
  # Get badge stock levels
302
317
  # @param [Osm::Api] The api to use to make the request
303
318
  # @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
@@ -94,28 +94,86 @@ describe "Using The API" do
94
94
  end
95
95
 
96
96
 
97
- it "Add activity to programme (succeded)" do
98
- url = 'https://www.onlinescoutmanager.co.uk/programme.php?action=addActivityToProgramme'
99
- post_data = {
100
- 'apiid' => @CONFIGURATION[:api][:osm][:id],
101
- 'token' => @CONFIGURATION[:api][:osm][:token],
102
- 'userid' => 'user_id',
103
- 'secret' => 'secret',
104
- 'meetingdate' => '2000-01-02',
105
- 'sectionid' => 1,
106
- 'activityid' => 2,
107
- 'notes' => 'Notes',
108
- }
109
-
110
- HTTParty.should_receive(:post).with(url, {:body => post_data}) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":0}'}) }
111
- activity = Osm::Activity.new(:id => 2)
112
- activity.add_to_programme(@api, 1, Date.new(2000, 1, 2), 'Notes').should be_true
113
- end
114
-
115
- it "Add activity to programme (failed)" do
116
- HTTParty.should_receive(:post) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":1}'}) }
117
- activity = Osm::Activity.new(:id => 2)
118
- activity.add_to_programme(@api, 1, Date.new(2000, 1, 2), 'Notes').should be_false
119
- end
97
+ it "Add activity to programme (succeded)" do
98
+ url = 'https://www.onlinescoutmanager.co.uk/programme.php?action=addActivityToProgramme'
99
+ post_data = {
100
+ 'apiid' => @CONFIGURATION[:api][:osm][:id],
101
+ 'token' => @CONFIGURATION[:api][:osm][:token],
102
+ 'userid' => 'user_id',
103
+ 'secret' => 'secret',
104
+ 'meetingdate' => '2000-01-02',
105
+ 'sectionid' => 1,
106
+ 'activityid' => 2,
107
+ 'notes' => 'Notes',
108
+ }
109
+
110
+ HTTParty.should_receive(:post).with(url, {:body => post_data}) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":0}'}) }
111
+ activity = Osm::Activity.new(:id => 2)
112
+ activity.add_to_programme(@api, 1, Date.new(2000, 1, 2), 'Notes').should be_true
113
+ end
114
+
115
+ it "Add activity to programme (failed)" do
116
+ HTTParty.should_receive(:post) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":1}'}) }
117
+ activity = Osm::Activity.new(:id => 2)
118
+ activity.add_to_programme(@api, 1, Date.new(2000, 1, 2), 'Notes').should be_false
119
+ end
120
+
121
+
122
+ it "Update activity in OSM (succeded)" do
123
+ url = 'https://www.onlinescoutmanager.co.uk/programme.php?action=update'
124
+ post_data = {
125
+ 'apiid' => @CONFIGURATION[:api][:osm][:id],
126
+ 'token' => @CONFIGURATION[:api][:osm][:token],
127
+ 'userid' => 'user_id',
128
+ 'secret' => 'secret',
129
+ 'title' => 'title',
130
+ 'description' => 'description',
131
+ 'resources' => 'resources',
132
+ 'instructions' => 'instructions',
133
+ 'id' => 2,
134
+ 'files' => '3,4',
135
+ 'time' => '5',
136
+ 'location' => :indoors,
137
+ 'sections' => '["beavers","cubs"]',
138
+ 'tags' => '["tag1","tag2"]',
139
+ 'links' => '[{"activityid":"2","section":"beavers","badgetype":"t","badge":"b","columnname":"r","label":"l"}]',
140
+ 'shared' => 0,
141
+ 'sectionid' => 1,
142
+ 'secretEdit' => true,
143
+ }
144
+
145
+ HTTParty.should_receive(:post).with(url, {:body => post_data}) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":true}'}) }
146
+ activity = Osm::Activity.new(
147
+ :id => 2,
148
+ :title => 'title',
149
+ :description => 'description',
150
+ :resources => 'resources',
151
+ :instructions => 'instructions',
152
+ :files => [Osm::Activity::File.new(:id=>3, :activity_id=>2, :file_name=>'fn', :name=>'n'), Osm::Activity::File.new(:id=>4, :activity_id=>2, :file_name=>'fn2', :name=>'n2')],
153
+ :running_time => 5,
154
+ :location => :indoors,
155
+ :sections => [:beavers, :cubs],
156
+ :tags => ['tag1', 'tag2'],
157
+ :badges => [Osm::Activity::Badge.new(:activity_id=>2, :section_type=>:beavers, :type=>:t, :badge=>'b', :requirement=>'r', :label=>'l')],
158
+ :shared => 0,
159
+ :section_id => 1,
160
+ )
161
+ activity.update(@api, 1, true).should be_true
162
+ end
163
+
164
+ it "Update activity in OSM (failed)" do
165
+ HTTParty.should_receive(:post) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":false}'}) }
166
+ activity = Osm::Activity.new(
167
+ :id => 2,
168
+ :title => 'title',
169
+ :description => 'description',
170
+ :resources => 'resources',
171
+ :instructions => 'instructions',
172
+ :location => :indoors,
173
+ :running_time => 0,
174
+ )
175
+ activity.update(@api, 1, true).should be_false
176
+ end
177
+
120
178
 
121
179
  end
@@ -21,6 +21,8 @@ describe "Event" do
21
21
  :confirm_by_date => Date.new(2002, 1, 2),
22
22
  :allow_changes => true,
23
23
  :reminders => false,
24
+ :attendance_limit => 3,
25
+ :attendance_limit_includes_leaders => true,
24
26
  }
25
27
  event = Osm::Event.new(data)
26
28
 
@@ -39,9 +41,16 @@ describe "Event" do
39
41
  event.confirm_by_date.should == Date.new(2002, 1, 2)
40
42
  event.allow_changes.should == true
41
43
  event.reminders.should == false
44
+ event.attendance_limit.should == 3
45
+ event.attendance_limit_includes_leaders.should == true
42
46
  event.valid?.should be_true
43
47
  end
44
48
 
49
+ it "Correctly tells if attendance is limited" do
50
+ Osm::Event.new(:attendance_limit => 0).limited_attendance?.should be_false
51
+ Osm::Event.new(:attendance_limit => 1).limited_attendance?.should be_true
52
+ end
53
+
45
54
  it "Create Event::Attendance" do
46
55
  data = {
47
56
  :member_id => 1,
@@ -81,7 +90,9 @@ describe "Event" do
81
90
  'archived' => '0',
82
91
  'confdate' => nil,
83
92
  'allowchanges' => '1',
84
- 'disablereminders' => '1'
93
+ 'disablereminders' => '1',
94
+ 'attendancelimit' => '3',
95
+ 'limitincludesleaders' => '1',
85
96
  }]
86
97
  }
87
98
 
@@ -105,7 +116,9 @@ describe "Event" do
105
116
  'allowchanges' => '1',
106
117
  'disablereminders' => '1',
107
118
  'pnnotepad' => '',
108
- 'structure' => []
119
+ 'structure' => [],
120
+ 'attendancelimit' => '3',
121
+ 'limitincludesleaders' => '1',
109
122
  }
110
123
 
111
124
  FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/events.php?action=getEvents&sectionid=1&showArchived=true", :body => events_body.to_json)
@@ -132,6 +145,8 @@ describe "Event" do
132
145
  event.confirm_by_date.should == Date.new(2002, 1, 2)
133
146
  event.allow_changes.should == true
134
147
  event.reminders.should == false
148
+ event.attendance_limit.should == 3
149
+ event.attendance_limit_includes_leaders.should == true
135
150
  event.columns[0].id.should == 'f_1'
136
151
  event.columns[0].name.should == 'Name'
137
152
  event.columns[0].label.should == 'Label'
@@ -208,6 +223,8 @@ describe "Event" do
208
223
  'confdate' => '2000-01-01',
209
224
  'allowChanges' => 'true',
210
225
  'disablereminders' => 'false',
226
+ 'attendancelimit' => 3,
227
+ 'limitincludesleaders' => true,
211
228
  }
212
229
 
213
230
  Osm::Event.stub(:get_for_section) { [] }
@@ -227,6 +244,8 @@ describe "Event" do
227
244
  :confirm_by_date => Date.new(2000, 1, 1),
228
245
  :allow_changes => true,
229
246
  :reminders => true,
247
+ :attendance_limit => 3,
248
+ :attendance_limit_includes_leaders => true,
230
249
  })
231
250
  event.should_not be_nil
232
251
  event.id.should == 2
@@ -274,6 +293,8 @@ describe "Event" do
274
293
  'confdate' => '',
275
294
  'allowChanges' => 'true',
276
295
  'disablereminders' => 'false',
296
+ 'attendancelimit' => 3,
297
+ 'limitincludesleaders' => true,
277
298
  }
278
299
 
279
300
  HTTParty.should_receive(:post).with(url, {:body => post_data}) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"id":2}'}) }
@@ -294,6 +315,8 @@ describe "Event" do
294
315
  :reminders => true,
295
316
  :notepad => 'notepad',
296
317
  :public_notepad => 'public notepad',
318
+ :attendance_limit => 3,
319
+ :attendance_limit_includes_leaders => true,
297
320
  )
298
321
  event.update(@api).should be_true
299
322
  end
@@ -41,6 +41,7 @@ describe "Member" do
41
41
  :custom9 => 'Custom Field 9',
42
42
  :grouping_id => '3',
43
43
  :grouping_leader => 0,
44
+ :grouping_name => 'Grouping',
44
45
  :joined => '2006-01-07',
45
46
  :age => '06/07',
46
47
  :joined_years => 1,
@@ -82,6 +83,7 @@ describe "Member" do
82
83
  member.custom8.should == 'Custom Field 8'
83
84
  member.custom9.should == 'Custom Field 9'
84
85
  member.grouping_id.should == 3
86
+ member.grouping_name.should == 'Grouping'
85
87
  member.grouping_leader.should == 0
86
88
  member.joined.should == Date.new(2006, 1, 7)
87
89
  member.age.should == '06/07'
@@ -165,13 +165,41 @@ describe "Section" do
165
165
  }
166
166
  end
167
167
 
168
+
168
169
  it "Gets the section's notepad" do
169
- FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/api.php?action=getNotepads", :body => {"1" => "Section 1", "2" => "Section 2"}.to_json)
170
- section = Osm::Section.get(@api, 1)
171
- section.should_not be_nil
170
+ url = 'https://www.onlinescoutmanager.co.uk/api.php?action=getNotepads'
171
+ post_data = {
172
+ 'apiid' => @CONFIGURATION[:api][:osm][:id],
173
+ 'token' => @CONFIGURATION[:api][:osm][:token],
174
+ 'userid' => 'user_id',
175
+ 'secret' => 'secret',
176
+ }
177
+ HTTParty.should_receive(:post).with(url, {:body => post_data}) { DummyHttpResult.new(:response=>{:code=>'200', :body=>{"1" => "Section 1", "2" => "Section 2"}.to_json}) }
178
+ section = Osm::Section.new(:id => 1)
172
179
  section.get_notepad(@api).should == 'Section 1'
173
180
  end
174
181
 
182
+ it "Sets the section's notepad (success)" do
183
+ url = 'https://www.onlinescoutmanager.co.uk/users.php?action=updateNotepad&sectionid=1'
184
+ post_data = {
185
+ 'apiid' => @CONFIGURATION[:api][:osm][:id],
186
+ 'token' => @CONFIGURATION[:api][:osm][:token],
187
+ 'userid' => 'user_id',
188
+ 'secret' => 'secret',
189
+ 'value' => 'content'
190
+ }
191
+ HTTParty.should_receive(:post).with(url, {:body => post_data}) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"ok":true}'}) }
192
+ section = Osm::Section.new(:id => 1)
193
+ section.set_notepad(@api, 'content').should be_true
194
+ end
195
+
196
+ it "Sets the section's notepad (fail)" do
197
+ HTTParty.should_receive(:post) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"ok":false}'}) }
198
+ section = Osm::Section.new(:id => 1)
199
+ section.set_notepad(@api, 'content').should be_false
200
+ end
201
+
202
+
175
203
  it "Fetch badge stock levels" do
176
204
  badges_body = {
177
205
  'stock' => {
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Osm
2
- VERSION = "0.1.12"
2
+ VERSION = "0.1.13"
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.12
4
+ version: 0.1.13
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: 2013-01-12 00:00:00.000000000Z
12
+ date: 2013-01-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &84282110 !ruby/object:Gem::Requirement
16
+ requirement: &80640130 !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: *84282110
24
+ version_requirements: *80640130
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: httparty
27
- requirement: &84281680 !ruby/object:Gem::Requirement
27
+ requirement: &80639220 !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: *84281680
35
+ version_requirements: *80639220
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: active_attr
38
- requirement: &84281390 !ruby/object:Gem::Requirement
38
+ requirement: &80638900 !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: *84281390
46
+ version_requirements: *80638900
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activemodel
49
- requirement: &84280860 !ruby/object:Gem::Requirement
49
+ requirement: &80638500 !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: *84280860
57
+ version_requirements: *80638500
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &84280240 !ruby/object:Gem::Requirement
60
+ requirement: &80638080 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '10.0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *84280240
68
+ version_requirements: *80638080
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &84279560 !ruby/object:Gem::Requirement
71
+ requirement: &80637470 !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: *84279560
79
+ version_requirements: *80637470
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: fakeweb
82
- requirement: &84279180 !ruby/object:Gem::Requirement
82
+ requirement: &80637090 !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: *84279180
90
+ version_requirements: *80637090
91
91
  description: Use the Online Scout Manager API (https://www.onlinescoutmanager.co.uk)
92
92
  to retrieve and save data.
93
93
  email: