osm 0.2.0 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +22 -0
- data/lib/osm/activity.rb +21 -0
- data/lib/osm/api_access.rb +1 -0
- data/lib/osm/event.rb +24 -0
- data/lib/osm/flexi_record.rb +37 -11
- data/lib/osm/grouping.rb +6 -0
- data/lib/osm/meeting.rb +16 -17
- data/lib/osm/member.rb +10 -0
- data/lib/osm/model.rb +25 -1
- data/lib/osm/register.rb +19 -1
- data/lib/osm/section.rb +10 -20
- data/lib/osm/term.rb +5 -19
- data/spec/osm/activity_spec.rb +44 -11
- data/spec/osm/api_access_spec.rb +8 -0
- data/spec/osm/event_spec.rb +37 -15
- data/spec/osm/flexi_record_spec.rb +67 -36
- data/spec/osm/grouping_spec.rb +10 -0
- data/spec/osm/meeting_spec.rb +23 -10
- data/spec/osm/member_spec.rb +14 -0
- data/spec/osm/model_spec.rb +54 -6
- data/spec/osm/register_spec.rb +21 -1
- data/spec/osm/section_spec.rb +8 -6
- data/spec/osm/term_spec.rb +1 -1
- data/version.rb +1 -1
- metadata +20 -20
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
## Version 0.2.2
|
2
|
+
|
3
|
+
* Add comparing and sorting (using <=>, <, <=, >, >= and between?) to each model
|
4
|
+
* Activity - id then version
|
5
|
+
* Activity::File - activity\_id then name
|
6
|
+
* Activity::Version - activity\_id then version
|
7
|
+
* ApiAccess - id
|
8
|
+
* Event - start, name then id (shortcuts, returning 0 if ids are equal)
|
9
|
+
* Event::Column - event then id
|
10
|
+
* Event::Attendance - event then row
|
11
|
+
* FlexiRecord - section\_id then name
|
12
|
+
* FlexiRecord::Column - flexi\_record then id (system ones first then user ones)
|
13
|
+
* FlexiRecord::Data - flexi\_record, grouping\_id then member\_id
|
14
|
+
* Grouping - section\_id then name
|
15
|
+
* Meeting - section\_id, date, start\_time then id
|
16
|
+
* Meeting::Activity - title then activity\_id
|
17
|
+
* Member - section\_id, grouping\_id, grouping\_leader (descending), last\_name then first\_name
|
18
|
+
* Register::Field - id
|
19
|
+
* Register::Attendance - section\_id, grouping\_id, last\_name then first\_name
|
20
|
+
* Section - group\_name, type (by age) then name
|
21
|
+
* Term - section\_id, start then id
|
22
|
+
|
1
23
|
## Version 0.2.0
|
2
24
|
|
3
25
|
* Raises Forbidden exception if:
|
data/lib/osm/activity.rb
CHANGED
@@ -253,6 +253,13 @@ module Osm
|
|
253
253
|
end
|
254
254
|
end
|
255
255
|
|
256
|
+
# Compare Activity based on id then version
|
257
|
+
def <=>(another)
|
258
|
+
result = self.id <=> another.try(:id)
|
259
|
+
result = self.version <=> another.try(:version) if result == 0
|
260
|
+
return result
|
261
|
+
end
|
262
|
+
|
256
263
|
|
257
264
|
private
|
258
265
|
class File
|
@@ -284,6 +291,13 @@ module Osm
|
|
284
291
|
# Initialize a new Term
|
285
292
|
# @param [Hash] attributes The hash of attributes (see attributes for descriptions, use Symbol of attribute name as the key)
|
286
293
|
|
294
|
+
# Compare File based on activity_id then name
|
295
|
+
def <=>(another)
|
296
|
+
result = self.activity_id <=> another.try(:activity_id)
|
297
|
+
result = self.name <=> another.try(:name) if result == 0
|
298
|
+
return result
|
299
|
+
end
|
300
|
+
|
287
301
|
end # Class Activity::File
|
288
302
|
|
289
303
|
class Badge
|
@@ -356,6 +370,13 @@ module Osm
|
|
356
370
|
# Initialize a new Version
|
357
371
|
# @param [Hash] attributes The hash of attributes (see attributes for descriptions, use Symbol of attribute name as the key)
|
358
372
|
|
373
|
+
# Compare Version based on activity_id then version
|
374
|
+
def <=>(another)
|
375
|
+
result = self.activity_id <=> another.try(:activity_id)
|
376
|
+
result = self.version <=> another.try(:version) if result == 0
|
377
|
+
return result
|
378
|
+
end
|
379
|
+
|
359
380
|
end # Class Activity::Version
|
360
381
|
|
361
382
|
end # Class Activity
|
data/lib/osm/api_access.rb
CHANGED
data/lib/osm/event.rb
CHANGED
@@ -321,6 +321,15 @@ module Osm
|
|
321
321
|
return attendance_limit - attendees(api)
|
322
322
|
end
|
323
323
|
|
324
|
+
# Compare Event based on start, name then id
|
325
|
+
def <=>(another)
|
326
|
+
return 0 if self.id == another.try(:id)
|
327
|
+
result = self.start <=> another.try(:start)
|
328
|
+
result = self.name <=> another.try(:name) if result == 0
|
329
|
+
result = self.id <=> another.try(:id) if result == 0
|
330
|
+
return result
|
331
|
+
end
|
332
|
+
|
324
333
|
|
325
334
|
private
|
326
335
|
def attendees(api)
|
@@ -357,6 +366,7 @@ module Osm
|
|
357
366
|
end
|
358
367
|
event.columns = columns
|
359
368
|
return event
|
369
|
+
|
360
370
|
end
|
361
371
|
|
362
372
|
|
@@ -437,6 +447,13 @@ module Osm
|
|
437
447
|
return true
|
438
448
|
end
|
439
449
|
|
450
|
+
# Compare Column based on event then id
|
451
|
+
def <=>(another)
|
452
|
+
result = self.event <=> another.try(:event)
|
453
|
+
result = self.id <=> another.try(:id) if result == 0
|
454
|
+
return result
|
455
|
+
end
|
456
|
+
|
440
457
|
end # class Column
|
441
458
|
|
442
459
|
|
@@ -502,6 +519,13 @@ module Osm
|
|
502
519
|
end
|
503
520
|
end
|
504
521
|
|
522
|
+
# Compare Activity based on event then row
|
523
|
+
def <=>(another)
|
524
|
+
result = self.event <=> another.try(:event)
|
525
|
+
result = self.row <=> another.try(:row) if result == 0
|
526
|
+
return result
|
527
|
+
end
|
528
|
+
|
505
529
|
end # Class Attendance
|
506
530
|
|
507
531
|
end # Class Event
|
data/lib/osm/flexi_record.rb
CHANGED
@@ -28,7 +28,7 @@ module Osm
|
|
28
28
|
cache_key = ['flexi_record_columns', self.id]
|
29
29
|
|
30
30
|
if !options[:no_cache] && Osm::Model.cache_exist?(api, cache_key)
|
31
|
-
return
|
31
|
+
return cache_read(api, cache_key)
|
32
32
|
end
|
33
33
|
|
34
34
|
data = api.perform_query("extras.php?action=getExtra§ionid=#{self.section_id}&extraid=#{self.id}")
|
@@ -44,7 +44,7 @@ module Osm
|
|
44
44
|
)
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
47
|
+
cache_write(api, cache_key, structure)
|
48
48
|
|
49
49
|
return structure
|
50
50
|
end
|
@@ -65,7 +65,7 @@ module Osm
|
|
65
65
|
ActiveSupport::JSON.decode(data['config']).each do |field|
|
66
66
|
if field['name'] == name
|
67
67
|
# The cached fields for the flexi record will be out of date - remove them
|
68
|
-
|
68
|
+
cache_delete(api, ['flexi_record_columns', id])
|
69
69
|
return true
|
70
70
|
end
|
71
71
|
end
|
@@ -85,7 +85,7 @@ module Osm
|
|
85
85
|
cache_key = ['flexi_record_data', id, term_id]
|
86
86
|
|
87
87
|
if !options[:no_cache] && Osm::Model.cache_exist?(api, cache_key)
|
88
|
-
return
|
88
|
+
return cache_read(api, cache_key)
|
89
89
|
end
|
90
90
|
|
91
91
|
data = api.perform_query("extras.php?action=getExtraRecords§ionid=#{section.id}&extraid=#{id}&termid=#{term_id}§ion=#{section.type}")
|
@@ -112,17 +112,15 @@ module Osm
|
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
|
-
|
115
|
+
cache_write(api, cache_key, to_return)
|
116
116
|
return to_return
|
117
117
|
end
|
118
118
|
|
119
|
-
|
119
|
+
# Compare Activity based on section_id then name
|
120
120
|
def <=>(another)
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
return 1
|
125
|
-
end
|
121
|
+
result = self.section_id <=> another.try(:section_id)
|
122
|
+
result = self.name <=> another.try(:name) if result == 0
|
123
|
+
return result
|
126
124
|
end
|
127
125
|
|
128
126
|
|
@@ -208,6 +206,26 @@ module Osm
|
|
208
206
|
return true
|
209
207
|
end
|
210
208
|
|
209
|
+
# Compare Column based on flexi_record then id
|
210
|
+
def <=>(another)
|
211
|
+
result = self.flexi_record <=> another.try(:flexi_record)
|
212
|
+
if result == 0
|
213
|
+
if id.match(/\Af_\d+\Z/)
|
214
|
+
# This is a user column
|
215
|
+
unless another.try(:id).to_s.match(/\Af_\d+\Z/)
|
216
|
+
return 1
|
217
|
+
end
|
218
|
+
else
|
219
|
+
# This is a system column
|
220
|
+
if another.try(:id).to_s.match(/\Af_\d+\Z/)
|
221
|
+
return -1
|
222
|
+
end
|
223
|
+
end
|
224
|
+
result = self.id <=> another.try(:id)
|
225
|
+
end
|
226
|
+
return result
|
227
|
+
end
|
228
|
+
|
211
229
|
end # Class FlexiRecord::Column
|
212
230
|
|
213
231
|
|
@@ -280,6 +298,14 @@ module Osm
|
|
280
298
|
return updated
|
281
299
|
end
|
282
300
|
|
301
|
+
# Compare Data based on flexi_record, grouping_id then member_id
|
302
|
+
def <=>(another)
|
303
|
+
result = self.flexi_record <=> another.try(:flexi_record)
|
304
|
+
result = self.grouping_id <=> another.try(:grouping_id) if result == 0
|
305
|
+
result = self.member_id <=> another.try(:member_id) if result == 0
|
306
|
+
return result
|
307
|
+
end
|
308
|
+
|
283
309
|
end # Class FlexiRecord::Data
|
284
310
|
|
285
311
|
end # Class FlexiRecord
|
data/lib/osm/grouping.rb
CHANGED
@@ -104,6 +104,12 @@ module Osm
|
|
104
104
|
return result
|
105
105
|
end
|
106
106
|
|
107
|
+
# Compare Grouping based on section_id then name
|
108
|
+
def <=>(another)
|
109
|
+
result = self.section_id <=> another.try(:section_id)
|
110
|
+
result = self.name <=> another.try(:name) if result == 0
|
111
|
+
return result
|
112
|
+
end
|
107
113
|
|
108
114
|
end # Class Grouping
|
109
115
|
|
data/lib/osm/meeting.rb
CHANGED
@@ -241,26 +241,18 @@ module Osm
|
|
241
241
|
return data
|
242
242
|
end
|
243
243
|
|
244
|
-
|
244
|
+
# Compare Meeting based on section_id, date, start_time then id
|
245
245
|
def <=>(another)
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
compare = self.date <=> another.date
|
251
|
-
return compare unless compare == 0
|
252
|
-
|
246
|
+
result = self.section_id <=> another.try(:section_id)
|
247
|
+
result = self.date <=> another.try(:date) if result == 0
|
248
|
+
if result == 0
|
253
249
|
my_start_time = self.start_time.split(':').map{ |i| i.to_i }
|
254
250
|
another_start_time = another.start_time.split(':').map{ |i| i.to_i }
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
return self.id <=> another.id
|
261
|
-
rescue NoMethodError
|
262
|
-
return 0
|
263
|
-
end
|
251
|
+
result = my_start_time[0] <=> another_start_time[0] if result == 0
|
252
|
+
result = compare = my_start_time[1] <=> another_start_time[1] if result == 0
|
253
|
+
end
|
254
|
+
result = self.id <=> another.try(:id) if result == 0
|
255
|
+
return result
|
264
256
|
end
|
265
257
|
|
266
258
|
|
@@ -289,6 +281,13 @@ module Osm
|
|
289
281
|
# Initialize a new Meeting::Activity
|
290
282
|
# @param [Hash] attributes The hash of attributes (see attributes for descriptions, use Symbol of attribute name as the key)
|
291
283
|
|
284
|
+
# Compare Activity based on title then activity_id
|
285
|
+
def <=>(another)
|
286
|
+
result = self.title <=> another.try(:title)
|
287
|
+
result = self.activity_id <=> another.try(:activity_id) if result == 0
|
288
|
+
return result
|
289
|
+
end
|
290
|
+
|
292
291
|
end # Class Meeting::Activity
|
293
292
|
|
294
293
|
end # Class Meeting
|
data/lib/osm/member.rb
CHANGED
@@ -389,6 +389,16 @@ module Osm
|
|
389
389
|
return "https://www.onlinescoutmanager.co.uk/parents/#{link_to}.php?sc=#{self.id}&se=#{section_id}&c=#{@myscout_link_key}"
|
390
390
|
end
|
391
391
|
|
392
|
+
# Compare Activity based on section_id, grouping_id, grouping_leader (descending), last_name then first_name
|
393
|
+
def <=>(another)
|
394
|
+
result = self.section_id <=> another.try(:section_id)
|
395
|
+
result = self.grouping_id <=> another.try(:grouping_id) if result == 0
|
396
|
+
result = -(self.grouping_leader <=> another.try(:grouping_leader)) if result == 0
|
397
|
+
result = self.last_name <=> another.try(:last_name) if result == 0
|
398
|
+
result = self.first_name <=> another.try(:last_name) if result == 0
|
399
|
+
return result
|
400
|
+
end
|
401
|
+
|
392
402
|
end # Class Member
|
393
403
|
|
394
404
|
end # Module
|
data/lib/osm/model.rb
CHANGED
@@ -38,10 +38,34 @@ module Osm
|
|
38
38
|
end
|
39
39
|
|
40
40
|
|
41
|
+
# Default to_i conversion is of id
|
41
42
|
def to_i
|
42
|
-
id
|
43
|
+
id.to_i
|
43
44
|
end
|
44
45
|
|
46
|
+
# Default compare based on id
|
47
|
+
def <=>(another)
|
48
|
+
return self.id <=> another.try(:id)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Add other compare functions
|
52
|
+
def <(another)
|
53
|
+
send('<=>', another) < 0
|
54
|
+
end
|
55
|
+
def <=(another)
|
56
|
+
send('<=>', another) <= 0
|
57
|
+
end
|
58
|
+
def >(another)
|
59
|
+
send('<=>', another) > 0
|
60
|
+
end
|
61
|
+
def >=(another)
|
62
|
+
send('<=>', another) >= 0
|
63
|
+
end
|
64
|
+
def between?(min, max)
|
65
|
+
(send('<=>', min) > 0) && (send('<=>', max) < 0)
|
66
|
+
end
|
67
|
+
|
68
|
+
|
45
69
|
# Get a list of attributes which have changed
|
46
70
|
# @return Array[String] the names of attributes which have changed
|
47
71
|
def changed_attributes
|
data/lib/osm/register.rb
CHANGED
@@ -143,10 +143,17 @@ module Osm
|
|
143
143
|
validates_presence_of :name
|
144
144
|
validates_presence_of :tooltip, :allow_blank => true
|
145
145
|
|
146
|
+
|
146
147
|
# @!method initialize
|
147
148
|
# Initialize a new RegisterField
|
148
149
|
# @param [Hash] attributes The hash of attributes (see attributes for descriptions, use Symbol of attribute name as the key)
|
149
150
|
|
151
|
+
|
152
|
+
# Compare Field based on id then version
|
153
|
+
def <=>(another)
|
154
|
+
return self.id <=> another.try(:id)
|
155
|
+
end
|
156
|
+
|
150
157
|
end # Class Register::Field
|
151
158
|
|
152
159
|
|
@@ -185,11 +192,22 @@ module Osm
|
|
185
192
|
|
186
193
|
validates :attendance, :hash => {:key_type => Date, :value_in => ['Yes', 'No', nil]}
|
187
194
|
|
195
|
+
|
188
196
|
# @!method initialize
|
189
197
|
# Initialize a new registerData
|
190
198
|
# @param [Hash] attributes The hash of attributes (see attributes for descriptions, use Symbol of attribute name as the key)
|
191
199
|
|
192
|
-
|
200
|
+
|
201
|
+
# Compare Attendance based on section_id, grouping_id, last_name then first_name
|
202
|
+
def <=>(another)
|
203
|
+
result = self.section_id <=> another.try(:section_id)
|
204
|
+
result = self.grouping_id <=> another.try(:grouping_id) if result == 0
|
205
|
+
result = self.last_name <=> another.try(:last_name) if result == 0
|
206
|
+
result = self.first_name <=> another.try(:last_name) if result == 0
|
207
|
+
return result
|
208
|
+
end
|
209
|
+
|
210
|
+
end # Class Register::Attendance
|
193
211
|
|
194
212
|
end # Class Register
|
195
213
|
|
data/lib/osm/section.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
module Osm
|
2
2
|
|
3
3
|
class Section < Osm::Model
|
4
|
-
class FlexiRecord; end # Ensure the constant exists for the validators
|
5
|
-
|
6
4
|
# @!attribute [rw] id
|
7
5
|
# @return [Fixnum] the id for the section
|
8
6
|
# @!attribute [rw] name
|
@@ -134,6 +132,7 @@ module Osm
|
|
134
132
|
validates :intouch_fields, :hash => {:key_type => Symbol, :value_in => [true, false]}
|
135
133
|
validates :mobile_fields, :hash => {:key_type => Symbol, :value_in => [true, false]}
|
136
134
|
validates :myscout_emails, :hash => {:key_in => [:email1, :email2, :email3, :email4], :value_in => [true, false]}
|
135
|
+
validates :flexi_records, :array_of => {:item_type => Osm::FlexiRecord, :item_valid => true}
|
137
136
|
|
138
137
|
|
139
138
|
# @!method initialize
|
@@ -356,27 +355,18 @@ module Osm
|
|
356
355
|
}[subscription_level]
|
357
356
|
end
|
358
357
|
|
358
|
+
# Compare Section based on group_name type (age order), then name
|
359
359
|
def <=>(another)
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
return -1 if type == type
|
367
|
-
return 1 if another.type == type
|
360
|
+
result = self.group_name <=> another.try(:group_name)
|
361
|
+
result = 0 if self.type == another.try(:type) && result == 0
|
362
|
+
[:beavers, :cubs, :scouts, :explorers, :waiting, :adults].each do |type|
|
363
|
+
if result == 0
|
364
|
+
result = -1 if self.type == type
|
365
|
+
result = 1 if another.try(:type) == type
|
368
366
|
end
|
369
|
-
rescue NoMethodError
|
370
|
-
return 1
|
371
|
-
end
|
372
|
-
end
|
373
|
-
|
374
|
-
def ==(another)
|
375
|
-
begin
|
376
|
-
return self.id == another.id
|
377
|
-
rescue NoMethodError
|
378
|
-
return false
|
379
367
|
end
|
368
|
+
result = self.name <=> another.try(:name) if result == 0
|
369
|
+
return result
|
380
370
|
end
|
381
371
|
|
382
372
|
end # Class Section
|
data/lib/osm/term.rb
CHANGED
@@ -222,26 +222,12 @@ module Osm
|
|
222
222
|
return (start <= date) && (finish >= date)
|
223
223
|
end
|
224
224
|
|
225
|
+
# Compare Term based on section_id, start then id
|
225
226
|
def <=>(another_term)
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
compare = self.start <=> another_term.start
|
231
|
-
return compare unless compare == 0
|
232
|
-
|
233
|
-
return self.id <=> another_term.id
|
234
|
-
rescue NoMethodError
|
235
|
-
return 0
|
236
|
-
end
|
237
|
-
end
|
238
|
-
|
239
|
-
def ==(another_term)
|
240
|
-
begin
|
241
|
-
return self.id == another_term.id
|
242
|
-
rescue NoMethodError
|
243
|
-
return false
|
244
|
-
end
|
227
|
+
result = self.section_id <=> another_term.section_id
|
228
|
+
result = self.start <=> another_term.start if result == 0
|
229
|
+
result = self.id <=> another_term.id if result == 0
|
230
|
+
return result
|
245
231
|
end
|
246
232
|
|
247
233
|
end # Class Term
|
data/spec/osm/activity_spec.rb
CHANGED
@@ -3,18 +3,51 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
describe "Activity" do
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
6
|
+
it "Get OSM link" do
|
7
|
+
activity = Osm::Activity.new(
|
8
|
+
:id => 1,
|
9
|
+
:running_time => 10,
|
10
|
+
:title => 'Title',
|
11
|
+
:description => 'Description',
|
12
|
+
:resources => 'Resources',
|
13
|
+
:instructions => 'Instructions',
|
14
|
+
:location => :indoors,
|
15
|
+
)
|
16
|
+
activity.osm_link.should == 'https://www.onlinescoutmanager.co.uk/?l=p1'
|
17
|
+
end
|
18
|
+
|
19
|
+
it "Sorts by id then version" do
|
20
|
+
a1 = Osm::Activity.new(:id => 1, :version => 1)
|
21
|
+
a2 = Osm::Activity.new(:id => 2, :version => 1)
|
22
|
+
a3 = Osm::Activity.new(:id => 2, :version => 2)
|
23
|
+
|
24
|
+
activities = [a2, a3, a1]
|
25
|
+
activities.sort.should == [a1, a2, a3]
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
describe "Activity::File" do
|
30
|
+
it "Sorts by activity_id then name" do
|
31
|
+
a1 = Osm::Activity::File.new(:activity_id => 1, :name => 'a')
|
32
|
+
a2 = Osm::Activity::File.new(:activity_id => 2, :name => 'a')
|
33
|
+
a3 = Osm::Activity::File.new(:activity_id => 2, :name => 'b')
|
34
|
+
|
35
|
+
activities = [a2, a3, a1]
|
36
|
+
activities.sort.should == [a1, a2, a3]
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
describe "Activity::Version" do
|
42
|
+
it "Sorts by activity_id then version" do
|
43
|
+
a1 = Osm::Activity::File.new(:activity_id => 1, :version => 1)
|
44
|
+
a2 = Osm::Activity::File.new(:activity_id => 2, :version => 1)
|
45
|
+
a3 = Osm::Activity::File.new(:activity_id => 2, :version => 2)
|
46
|
+
|
47
|
+
activities = [a2, a3, a1]
|
48
|
+
activities.sort.should == [a1, a2, a3]
|
17
49
|
end
|
50
|
+
end
|
18
51
|
|
19
52
|
|
20
53
|
describe "Using The API" do
|
data/spec/osm/api_access_spec.rb
CHANGED
@@ -18,6 +18,14 @@ describe "API Access" do
|
|
18
18
|
api_access.valid?.should be_true
|
19
19
|
end
|
20
20
|
|
21
|
+
it "Sorts by id" do
|
22
|
+
a1 = Osm::ApiAccess.new(:id => 1)
|
23
|
+
a2 = Osm::ApiAccess.new(:id => 2)
|
24
|
+
|
25
|
+
data = [a2, a1]
|
26
|
+
data.sort.should == [a1, a2]
|
27
|
+
end
|
28
|
+
|
21
29
|
|
22
30
|
describe "Using the API" do
|
23
31
|
|
data/spec/osm/event_spec.rb
CHANGED
@@ -51,24 +51,46 @@ describe "Event" do
|
|
51
51
|
Osm::Event.new(:attendance_limit => 1).limited_attendance?.should be_true
|
52
52
|
end
|
53
53
|
|
54
|
+
it "Sorts by start, name then ID (unless IDs are equal)" do
|
55
|
+
e1 = Osm::Event.new(:start => '2000-01-01 01:00:00', :name => 'An event', :id => 1)
|
56
|
+
e2 = Osm::Event.new(:start => '2000-01-02 01:00:00', :name => 'An event', :id => 2)
|
57
|
+
e3 = Osm::Event.new(:start => '2000-01-02 01:00:00', :name => 'Event name', :id => 3)
|
58
|
+
e4 = Osm::Event.new(:start => '2000-01-02 01:00:00', :name => 'Event name', :id => 4)
|
59
|
+
events = [e2, e4, e3, e1]
|
60
|
+
|
61
|
+
events.sort.should == [e1, e2, e3, e4]
|
62
|
+
(Osm::Event.new(:id => 1) <=> Osm::Event.new(:id => 1)).should == 0
|
63
|
+
end
|
54
64
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
65
|
+
describe "Event::Attendance" do
|
66
|
+
|
67
|
+
it "Create" do
|
68
|
+
data = {
|
69
|
+
:member_id => 1,
|
70
|
+
:grouping_id => 2,
|
71
|
+
:row => 3,
|
72
|
+
:columns => [],
|
73
|
+
:event => Osm::Event.new(:id => 1, :section_id => 1, :name => 'Name', :columns => [])
|
74
|
+
}
|
63
75
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
76
|
+
ea = Osm::Event::Attendance.new(data)
|
77
|
+
ea.member_id.should == 1
|
78
|
+
ea.grouping_id.should == 2
|
79
|
+
ea.fields.should == {}
|
80
|
+
ea.row.should == 3
|
81
|
+
ea.valid?.should be_true
|
82
|
+
end
|
83
|
+
|
84
|
+
it "Sorts by event ID then row" do
|
85
|
+
ea1 = Osm::Event::Attendance.new(:event => Osm::Event.new(:id => 1), :row => 1)
|
86
|
+
ea2 = Osm::Event::Attendance.new(:event => Osm::Event.new(:id => 2), :row => 1)
|
87
|
+
ea3 = Osm::Event::Attendance.new(:event => Osm::Event.new(:id => 2), :row => 2)
|
88
|
+
event_attendances = [ea3, ea2, ea1]
|
71
89
|
|
90
|
+
event_attendances.sort.should == [ea1, ea2, ea3]
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
72
94
|
|
73
95
|
describe "Using the API" do
|
74
96
|
|
@@ -17,25 +17,58 @@ describe "Flexi Record" do
|
|
17
17
|
fr.valid?.should be_true
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
describe "FlexiRecord::Column" do
|
21
|
+
|
22
|
+
it "Create" do
|
23
|
+
field = Osm::FlexiRecord::Column.new(
|
24
|
+
:id => "f_1",
|
25
|
+
:name => "Field Name",
|
26
|
+
:editable => true,
|
27
|
+
:flexi_record => Osm::FlexiRecord.new(),
|
28
|
+
)
|
29
|
+
|
30
|
+
field.id.should == 'f_1'
|
31
|
+
field.name.should == 'Field Name'
|
32
|
+
field.editable.should be_true
|
33
|
+
field.valid?.should be_true
|
34
|
+
end
|
35
|
+
|
36
|
+
it "Sorts by flexirecord then id (system first then user)" do
|
37
|
+
frc1 = Osm::FlexiRecord::Column.new(:flexi_record => Osm::FlexiRecord.new(:section_id => 1), :id => 'f_1')
|
38
|
+
frc2 = Osm::FlexiRecord::Column.new(:flexi_record => Osm::FlexiRecord.new(:section_id => 2), :id => 'a')
|
39
|
+
frc3 = Osm::FlexiRecord::Column.new(:flexi_record => Osm::FlexiRecord.new(:section_id => 2), :id => 'b')
|
40
|
+
frc4 = Osm::FlexiRecord::Column.new(:flexi_record => Osm::FlexiRecord.new(:section_id => 2), :id => 'f_1')
|
41
|
+
frc5 = Osm::FlexiRecord::Column.new(:flexi_record => Osm::FlexiRecord.new(:section_id => 2), :id => 'f_2')
|
42
|
+
|
43
|
+
columns = [frc3, frc2, frc1, frc5, frc4]
|
44
|
+
columns.sort.should == [frc1, frc2, frc3, frc4, frc5]
|
45
|
+
end
|
27
46
|
|
28
|
-
field.id.should == 'f_1'
|
29
|
-
field.name.should == 'Field Name'
|
30
|
-
field.editable.should be_true
|
31
|
-
field.valid?.should be_true
|
32
47
|
end
|
33
48
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
49
|
+
|
50
|
+
describe "FlexiRecord::Data" do
|
51
|
+
|
52
|
+
it "Create" do
|
53
|
+
rd = Osm::FlexiRecord::Data.new(
|
54
|
+
:member_id => 1,
|
55
|
+
:grouping_id => 2,
|
56
|
+
:fields => {
|
57
|
+
'firstname' => 'First',
|
58
|
+
'lastname' => 'Last',
|
59
|
+
'dob' => Date.new(1899, 11, 30),
|
60
|
+
'total' => 3,
|
61
|
+
'completed' => nil,
|
62
|
+
'age' => nil,
|
63
|
+
'f_1' => 'a',
|
64
|
+
'f_2' => 'b',
|
65
|
+
},
|
66
|
+
:flexi_record => Osm::FlexiRecord.new()
|
67
|
+
)
|
68
|
+
|
69
|
+
rd.member_id.should == 1
|
70
|
+
rd.grouping_id.should == 2
|
71
|
+
rd.fields.should == {
|
39
72
|
'firstname' => 'First',
|
40
73
|
'lastname' => 'Last',
|
41
74
|
'dob' => Date.new(1899, 11, 30),
|
@@ -44,29 +77,27 @@ describe "Flexi Record" do
|
|
44
77
|
'age' => nil,
|
45
78
|
'f_1' => 'a',
|
46
79
|
'f_2' => 'b',
|
47
|
-
}
|
48
|
-
|
49
|
-
|
80
|
+
}
|
81
|
+
rd.valid?.should be_true
|
82
|
+
end
|
83
|
+
|
84
|
+
it "Sorts by flexirecord, grouping_id then member_id" do
|
85
|
+
frd1 = Osm::FlexiRecord::Data.new(:flexi_record => Osm::FlexiRecord.new(:section_id => 1), :grouping_id => 1, :member_id => 1)
|
86
|
+
frd2 = Osm::FlexiRecord::Data.new(:flexi_record => Osm::FlexiRecord.new(:section_id => 2), :grouping_id => 1, :member_id => 1)
|
87
|
+
frd3 = Osm::FlexiRecord::Data.new(:flexi_record => Osm::FlexiRecord.new(:section_id => 2), :grouping_id => 2, :member_id => 1)
|
88
|
+
frd4 = Osm::FlexiRecord::Data.new(:flexi_record => Osm::FlexiRecord.new(:section_id => 2), :grouping_id => 2, :member_id => 2)
|
89
|
+
|
90
|
+
datas = [frd3, frd2, frd1, frd4]
|
91
|
+
datas.sort.should == [frd1, frd2, frd3, frd4]
|
92
|
+
end
|
50
93
|
|
51
|
-
rd.member_id.should == 1
|
52
|
-
rd.grouping_id.should == 2
|
53
|
-
rd.fields.should == {
|
54
|
-
'firstname' => 'First',
|
55
|
-
'lastname' => 'Last',
|
56
|
-
'dob' => Date.new(1899, 11, 30),
|
57
|
-
'total' => 3,
|
58
|
-
'completed' => nil,
|
59
|
-
'age' => nil,
|
60
|
-
'f_1' => 'a',
|
61
|
-
'f_2' => 'b',
|
62
|
-
}
|
63
|
-
rd.valid?.should be_true
|
64
94
|
end
|
65
95
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
96
|
+
|
97
|
+
it "Sorts by section ID then name" do
|
98
|
+
fr1 = Osm::FlexiRecord.new(:section_id => 1, :name => 'A')
|
99
|
+
fr2 = Osm::FlexiRecord.new(:section_id => 2, :name => 'B')
|
100
|
+
fr3 = Osm::FlexiRecord.new(:section_id => 2, :name => 'C')
|
70
101
|
records = [fr2, fr1, fr3]
|
71
102
|
|
72
103
|
records.sort.should == [fr1, fr2, fr3]
|
data/spec/osm/grouping_spec.rb
CHANGED
@@ -3,6 +3,15 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
describe "Grouping" do
|
5
5
|
|
6
|
+
it "Sorts by section_id then name" do
|
7
|
+
g1 = Osm::Grouping.new(:section_id => 1, :name => 'a')
|
8
|
+
g2 = Osm::Grouping.new(:section_id => 2, :name => 'a')
|
9
|
+
g3 = Osm::Grouping.new(:section_id => 2, :name => 'b')
|
10
|
+
|
11
|
+
data = [g3, g1, g2]
|
12
|
+
data.sort.should == [g1, g2, g3]
|
13
|
+
end
|
14
|
+
|
6
15
|
describe "Using the API" do
|
7
16
|
|
8
17
|
it "Get for section" do
|
@@ -76,6 +85,7 @@ describe "Grouping" do
|
|
76
85
|
|
77
86
|
grouping.update(@api).should be_true
|
78
87
|
end
|
88
|
+
|
79
89
|
it "Update in OSM (failed)" do
|
80
90
|
grouping = Osm::Grouping.new(
|
81
91
|
:id => 1,
|
data/spec/osm/meeting_spec.rb
CHANGED
@@ -47,17 +47,30 @@ describe "Meeting" do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
50
|
+
describe "Meeting::Activity" do
|
51
|
+
|
52
|
+
it "Create Meeting::Activity" do
|
53
|
+
ea = Osm::Meeting::Activity.new(
|
54
|
+
:activity_id => 2,
|
55
|
+
:title => 'Activity Name',
|
56
|
+
:notes => 'Notes',
|
57
|
+
)
|
58
|
+
|
59
|
+
ea.activity_id.should == 2
|
60
|
+
ea.title.should == 'Activity Name'
|
61
|
+
ea.notes.should == 'Notes'
|
62
|
+
ea.valid?.should be_true
|
63
|
+
end
|
64
|
+
|
65
|
+
it "Sorts by title then activity_id" do
|
66
|
+
a1 = Osm::Meeting::Activity.new(:title => 'a', :activity_id => 1)
|
67
|
+
a2 = Osm::Meeting::Activity.new(:title => 'b', :activity_id => 1)
|
68
|
+
a3 = Osm::Meeting::Activity.new(:title => 'b', :activity_id => 2)
|
69
|
+
|
70
|
+
data = [a2, a3, a1]
|
71
|
+
data.sort.should == [a1, a2, a3]
|
72
|
+
end
|
56
73
|
|
57
|
-
ea.activity_id.should == 2
|
58
|
-
ea.title.should == 'Activity Name'
|
59
|
-
ea.notes.should == 'Notes'
|
60
|
-
ea.valid?.should be_true
|
61
74
|
end
|
62
75
|
|
63
76
|
|
data/spec/osm/member_spec.rb
CHANGED
@@ -113,6 +113,20 @@ describe "Member" do
|
|
113
113
|
end
|
114
114
|
|
115
115
|
|
116
|
+
it "Sorts by section_id, grouping_id, grouping_leader (descending), last_name then first_name" do
|
117
|
+
m1 = Osm::Member.new(:section_id => 1, :grouping_id => 1, :grouping_leader => 1, :last_name => 'a', :first_name => 'a')
|
118
|
+
m2 = Osm::Member.new(:section_id => 2, :grouping_id => 1, :grouping_leader => 1, :last_name => 'a', :first_name => 'a')
|
119
|
+
m3 = Osm::Member.new(:section_id => 2, :grouping_id => 2, :grouping_leader => 1, :last_name => 'a', :first_name => 'a')
|
120
|
+
m4 = Osm::Member.new(:section_id => 2, :grouping_id => 2, :grouping_leader => 0, :last_name => 'a', :first_name => 'a')
|
121
|
+
m5 = Osm::Member.new(:section_id => 2, :grouping_id => 2, :grouping_leader => 0, :last_name => 'a', :first_name => 'a')
|
122
|
+
m6 = Osm::Member.new(:section_id => 2, :grouping_id => 2, :grouping_leader => 0, :last_name => 'b', :first_name => 'a')
|
123
|
+
m7 = Osm::Member.new(:section_id => 2, :grouping_id => 2, :grouping_leader => 0, :last_name => 'b', :first_name => 'b')
|
124
|
+
|
125
|
+
data = [m4, m2, m3, m1, m7, m6, m5]
|
126
|
+
data.sort.should == [m1, m2, m3, m4, m5, m6, m7]
|
127
|
+
end
|
128
|
+
|
129
|
+
|
116
130
|
describe "Using the API" do
|
117
131
|
|
118
132
|
it "Create from API data" do
|
data/spec/osm/model_spec.rb
CHANGED
@@ -5,8 +5,8 @@ require 'spec_helper'
|
|
5
5
|
describe "Model" do
|
6
6
|
|
7
7
|
class ModelTester < Osm::Model
|
8
|
-
attribute :
|
9
|
-
attr_accessible :
|
8
|
+
attribute :id
|
9
|
+
attr_accessible :id
|
10
10
|
|
11
11
|
def self.test_get_config
|
12
12
|
{
|
@@ -120,15 +120,63 @@ describe "Model" do
|
|
120
120
|
|
121
121
|
|
122
122
|
describe "Track attribute changes" do
|
123
|
-
test = ModelTester.new(:
|
124
|
-
test.
|
123
|
+
test = ModelTester.new(:id => 1)
|
124
|
+
test.id.should == 1
|
125
125
|
test.changed_attributes.should == []
|
126
126
|
|
127
|
-
test.
|
128
|
-
test.changed_attributes.should == ['
|
127
|
+
test.id = 2
|
128
|
+
test.changed_attributes.should == ['id']
|
129
129
|
|
130
130
|
test.reset_changed_attributes
|
131
131
|
test.changed_attributes.should == []
|
132
132
|
end
|
133
133
|
|
134
|
+
|
135
|
+
describe "Comparisons" do
|
136
|
+
|
137
|
+
before :each do
|
138
|
+
@mt1 = ModelTester.new(:id => 1)
|
139
|
+
@mt2 = ModelTester.new(:id => 2)
|
140
|
+
@mt3 = ModelTester.new(:id => 3)
|
141
|
+
@mt2a = ModelTester.new(:id => 2)
|
142
|
+
end
|
143
|
+
|
144
|
+
it "<=>" do
|
145
|
+
(@mt1 <=> @mt2).should == -1
|
146
|
+
(@mt2 <=> @mt1).should == 1
|
147
|
+
(@mt2 <=> @mt2a).should == 0
|
148
|
+
end
|
149
|
+
|
150
|
+
it ">" do
|
151
|
+
(@mt1 > @mt2).should be_false
|
152
|
+
(@mt2 > @mt1).should be_true
|
153
|
+
(@mt2 > @mt2a).should be_false
|
154
|
+
end
|
155
|
+
|
156
|
+
it ">=" do
|
157
|
+
(@mt1 >= @mt2).should be_false
|
158
|
+
(@mt2 >= @mt1).should be_true
|
159
|
+
(@mt2 >= @mt2a).should be_true
|
160
|
+
end
|
161
|
+
|
162
|
+
it "<" do
|
163
|
+
(@mt1 < @mt2).should be_true
|
164
|
+
(@mt2 < @mt1).should be_false
|
165
|
+
(@mt2 < @mt2a).should be_false
|
166
|
+
end
|
167
|
+
|
168
|
+
it "<=" do
|
169
|
+
(@mt1 <= @mt2).should be_true
|
170
|
+
(@mt2 <= @mt1).should be_false
|
171
|
+
(@mt2 <= @mt2a).should be_true
|
172
|
+
end
|
173
|
+
|
174
|
+
it "between" do
|
175
|
+
@mt2.between?(@mt1, @mt3).should be_true
|
176
|
+
@mt1.between?(@mt1, @mt3).should be_false
|
177
|
+
@mt3.between?(@mt1, @mt3).should be_false
|
178
|
+
end
|
179
|
+
|
180
|
+
end
|
181
|
+
|
134
182
|
end
|
data/spec/osm/register_spec.rb
CHANGED
@@ -18,7 +18,16 @@ describe "Register" do
|
|
18
18
|
field.valid?.should be_true
|
19
19
|
end
|
20
20
|
|
21
|
-
it "
|
21
|
+
it "Sorts Field by id" do
|
22
|
+
a1 = Osm::Register::Field.new(:id => 'a')
|
23
|
+
a2 = Osm::Register::Field.new(:id => 'a')
|
24
|
+
|
25
|
+
data = [a2, a1]
|
26
|
+
data.sort.should == [a1, a2]
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
it "Create Attendance" do
|
22
31
|
rd = Osm::Register::Attendance.new(
|
23
32
|
:member_id => '1',
|
24
33
|
:first_name => 'A',
|
@@ -45,6 +54,17 @@ describe "Register" do
|
|
45
54
|
rd.valid?.should be_true
|
46
55
|
end
|
47
56
|
|
57
|
+
it "Sorts Attendance by section_id, grouping_id, last_name then first_name" do
|
58
|
+
d1 = Osm::Register::Attendance.new(:section_id => 1, :grouping_id => 1, :last_name => 'a', :first_name => 'a')
|
59
|
+
d2 = Osm::Register::Attendance.new(:section_id => 2, :grouping_id => 1, :last_name => 'a', :first_name => 'a')
|
60
|
+
d3 = Osm::Register::Attendance.new(:section_id => 2, :grouping_id => 2, :last_name => 'a', :first_name => 'a')
|
61
|
+
d4 = Osm::Register::Attendance.new(:section_id => 2, :grouping_id => 2, :last_name => 'b', :first_name => 'a')
|
62
|
+
d5 = Osm::Register::Attendance.new(:section_id => 2, :grouping_id => 2, :last_name => 'b', :first_name => 'b')
|
63
|
+
|
64
|
+
data = [d4, d3, d5, d2, d1]
|
65
|
+
data.sort.should == [d1, d2, d3, d4, d5]
|
66
|
+
end
|
67
|
+
|
48
68
|
|
49
69
|
describe "Using the API" do
|
50
70
|
|
data/spec/osm/section_spec.rb
CHANGED
@@ -228,12 +228,14 @@ describe "Section" do
|
|
228
228
|
end
|
229
229
|
|
230
230
|
|
231
|
-
it "Sorts by Group Name
|
232
|
-
section1 = Osm::Section.new(@attributes.merge(:group_id => 1, :group_name => '1st Somewhere', :type => :beavers))
|
233
|
-
section2 = Osm::Section.new(@attributes.merge(:group_id => 2, :group_name => '2nd Somewhere', :type => :beavers))
|
234
|
-
section3 = Osm::Section.new(@attributes.merge(:group_id => 2, :group_name => '2nd Somewhere', :type => :cubs))
|
235
|
-
|
236
|
-
|
231
|
+
it "Sorts by Group Name, section type (age order) then name" do
|
232
|
+
section1 = Osm::Section.new(@attributes.merge(:group_id => 1, :group_name => '1st Somewhere', :type => :beavers, :name => 'a'))
|
233
|
+
section2 = Osm::Section.new(@attributes.merge(:group_id => 2, :group_name => '2nd Somewhere', :type => :beavers, :name => 'a'))
|
234
|
+
section3 = Osm::Section.new(@attributes.merge(:group_id => 2, :group_name => '2nd Somewhere', :type => :cubs, :name => 'a'))
|
235
|
+
section4 = Osm::Section.new(@attributes.merge(:group_id => 2, :group_name => '2nd Somewhere', :type => :cubs, :name => 'b'))
|
236
|
+
|
237
|
+
data = [section2, section4, section3, section1]
|
238
|
+
data.sort.should == [section1, section2, section3, section4]
|
237
239
|
end
|
238
240
|
|
239
241
|
|
data/spec/osm/term_spec.rb
CHANGED
@@ -37,7 +37,7 @@ describe "Term" do
|
|
37
37
|
term.should_not == Osm::Term.new(@attributes.merge(:id => 3))
|
38
38
|
end
|
39
39
|
|
40
|
-
it "Sorts by Section ID, Start date and
|
40
|
+
it "Sorts by Section ID, Start date and then Term ID" do
|
41
41
|
term1 = Osm::Term.new(@attributes.merge(:section_id => 1, :term => 11, :start => (Date.today - 60), :finish => (Date.today - 1)))
|
42
42
|
term2 = Osm::Term.new(@attributes.merge(:section_id => 1, :term => 12, :start => (Date.today - 0), :finish => (Date.today + 0)))
|
43
43
|
term3 = Osm::Term.new(@attributes.merge(:section_id => 1, :term => 13, :start => (Date.today + 1), :finish => (Date.today + 60)))
|
data/version.rb
CHANGED
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.2.
|
4
|
+
version: 0.2.2
|
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-02-
|
12
|
+
date: 2013-02-24 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &86025430 !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: *
|
24
|
+
version_requirements: *86025430
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: httparty
|
27
|
-
requirement: &
|
27
|
+
requirement: &86024870 !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: *
|
35
|
+
version_requirements: *86024870
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: active_attr
|
38
|
-
requirement: &
|
38
|
+
requirement: &86006950 !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: *
|
46
|
+
version_requirements: *86006950
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activemodel
|
49
|
-
requirement: &
|
49
|
+
requirement: &86006710 !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: *
|
57
|
+
version_requirements: *86006710
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &86006480 !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: *
|
68
|
+
version_requirements: *86006480
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
|
-
requirement: &
|
71
|
+
requirement: &86006220 !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: *
|
79
|
+
version_requirements: *86006220
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: fakeweb
|
82
|
-
requirement: &
|
82
|
+
requirement: &86005980 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '1.3'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *86005980
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: guard-rspec
|
93
|
-
requirement: &
|
93
|
+
requirement: &86005750 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '2.4'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *86005750
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rb-inotify
|
104
|
-
requirement: &
|
104
|
+
requirement: &86005510 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
version: 0.8.8
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *86005510
|
113
113
|
description: Use the Online Scout Manager API (https://www.onlinescoutmanager.co.uk)
|
114
114
|
to retrieve and save data.
|
115
115
|
email:
|