osm 0.0.6 → 0.0.7

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.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## version 0.0.7.dev
2
+
3
+ * Work on documentation:
4
+ * Clarify use of 'mystery' attributes
5
+ * Rename ProgrammeItem to Evening (and move ProgrammeActivity to Evening->EveningActivity)
6
+
1
7
  ## Version 0.0.6
2
8
 
3
9
  * Usage changes:
data/lib/osm/activity.rb CHANGED
@@ -22,27 +22,27 @@ module Osm
22
22
  # @!attribute [r] running_time
23
23
  # @return [FixNum] duration of the activity in minutes
24
24
  # @!attribute [r] location
25
- # @return [Symbol] :indoors or :outdoors
25
+ # @return [Symbol] :indoors, :outdoors or :both
26
26
  # @!attribute [r] shared
27
- # @return [FixNum] ?
27
+ # @return [FixNum] 2 - Public, 0 - Private
28
28
  # @!attribute [r] rating
29
29
  # @return [FixNum] ?
30
30
  # @!attribute [r] editable
31
- # @return [Boolean] ?
31
+ # @return [Boolean] Wether the current API user can edit this activity
32
32
  # @!attribute [r] deletable
33
- # @return [Boolean] ?
33
+ # @return [Boolean] Wether the current API user can delete this activity
34
34
  # @!attribute [r] used
35
- # @return [FixNum] ?
35
+ # @return [FixNum] How many times this activity has been used (total accross all of OSM)
36
36
  # @!attribute [r] versions
37
- # @return [Hash] ?
37
+ # @return [Array<Hash>] ? (:value - version, :firstname - created by, :label - label, :user_id - OSM user ID of creator)
38
38
  # @!attribute [r] sections
39
39
  # @return [Array<Symbol>] the sections the activity is appropriate for
40
40
  # @!attribute [r] tags
41
41
  # @return [Array<String>] the tags attached to the activity
42
42
  # @!attribute [r] files
43
- # @return [Array] ?
43
+ # @return [Array<Hash> ? ('fileid', 'filename', 'name')
44
44
  # @!attribute [r] badges
45
- # @return [Array] ?
45
+ # @return [Array<Hash> ? ('section', 'badgetype', 'badge', 'columnname', 'label')
46
46
 
47
47
 
48
48
  # Initialize a new Activity using the hash returned by the API call
@@ -61,7 +61,7 @@ module Osm
61
61
  @shared = data['details']['shared'].to_i
62
62
  @rating = data['details']['rating'].to_i
63
63
  @editable = data['editable']
64
- @deletable = data['deletable']
64
+ @deletable = data['deletable'] ? true : false
65
65
  @used = data['used'].to_i
66
66
  @versions = data['versions']
67
67
  @sections = Osm::make_array_of_symbols(data['sections'] || [])
data/lib/osm/api.rb CHANGED
@@ -252,7 +252,7 @@ module Osm
252
252
  # @param [FixNum] term_id the term to get the programme for
253
253
  # @!macro options_get
254
254
  # @!macro options_api_data
255
- # @return [Array<Osm::ProgrammeItem>]
255
+ # @return [Array<Osm::Evening>]
256
256
  def get_programme(section_id, term_id, options={}, api_data={})
257
257
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-programme-#{section_id}-#{term_id}") && self.user_can_access?(:programme, section_id, api_data)
258
258
  return Rails.cache.read("OSMAPI-programme-#{section_id}-#{term_id}")
@@ -267,9 +267,9 @@ module Osm
267
267
  activities = data['activities'] || {}
268
268
 
269
269
  items.each do |item|
270
- programme_item = Osm::ProgrammeItem.new(item, activities[item['eveningid']])
271
- result.push programme_item
272
- programme_item.activities.each do |activity|
270
+ evening = Osm::Evening.new(item, activities[item['eveningid']])
271
+ result.push evening
272
+ evening.activities.each do |activity|
273
273
  self.user_can_access :activity, activity.activity_id, api_data
274
274
  end
275
275
  end
@@ -495,25 +495,11 @@ module Osm
495
495
  end
496
496
 
497
497
  # Update an evening in OSM
498
- # @param [Osm::ProgrammeItem] programme_item is the Osm::ProgrammeItem object to update
498
+ # @param [Osm::Evening] evening the evening to update
499
499
  # @!macro options_api_data
500
500
  # @return [Boolean] if the operation suceeded or not
501
- def update_evening(programme_item, api_data={})
502
- response = perform_query("programme.php?action=editEvening", api_data.merge({
503
- 'eveningid' => programme_item.evening_id,
504
- 'sectionid' => programme_item.section_id,
505
- 'meetingdate' => programme_item.meeting_date.try(:strftime, '%Y-%m-%d'),
506
- 'starttime' => programme_item.start_time,
507
- 'endtime' => programme_item.end_time,
508
- 'title' => programme_item.title,
509
- 'notesforparents' => programme_item.notes_for_parents,
510
- 'prenotes' => programme_item.pre_notes,
511
- 'postnotes' => programme_item.post_notes,
512
- 'games' => programme_item.games,
513
- 'leaders' => programme_item.leaders,
514
- 'activity' => programme_item.activities_for_saving,
515
- 'googlecalendar' => programme_item.google_calendar || '',
516
- }))
501
+ def update_evening(evening, api_data={})
502
+ response = perform_query("programme.php?action=editEvening", api_data.merge(evening.data_for_saving))
517
503
 
518
504
  # The cached programmes for the section will be out of date - remove them
519
505
  get_terms(api_data).each do |term|
@@ -1,8 +1,8 @@
1
1
  module Osm
2
2
 
3
- class ProgrammeItem
3
+ class Evening
4
4
 
5
- attr_accessor :evening_id, :section_id, :title, :notes_for_parents, :games, :pre_notes, :post_notes, :leaders, :meeting_date, :activities, :google_calendar
5
+ attr_accessor :evening_id, :section_id, :title, :notes_for_parents, :games, :pre_notes, :post_notes, :leaders, :meeting_date, :activities
6
6
  attr_reader :start_time, :end_time
7
7
  # @!attribute [rw] evening_id
8
8
  # @return [FixNum] the id of the evening
@@ -23,9 +23,7 @@ module Osm
23
23
  # @!attribute [rw] meeting_date
24
24
  # @return [Date] the date of the evening
25
25
  # @!attribute [rw] activities
26
- # @return [Array<ProgrammeActivity>] tlist of activities being done during the evening
27
- # @!attribute [rw] google_calendar
28
- # @return [String] ?
26
+ # @return [Array<EveningActivity>] list of activities being done during the evening
29
27
  # @!attribute [rw] start_time
30
28
  # @return [String] the start time (hh:mm)
31
29
  # @!attribute [rw] end_time
@@ -46,14 +44,14 @@ module Osm
46
44
  @start_time = data['starttime'].nil? ? nil : data['starttime'][0..4]
47
45
  @end_time = data['endtime'].nil? ? nil : data['endtime'][0..4]
48
46
  @meeting_date = Osm::parse_date(data['meetingdate'])
49
- @google_calendar = data['googlecalendar']
50
47
 
51
48
  @activities = Array.new
52
49
  unless activities.nil?
53
50
  activities.each do |item|
54
- @activities.push Osm::ProgrammeActivity.new(item)
51
+ @activities.push EveningActivity.new(item)
55
52
  end
56
53
  end
54
+ @activities.freeze
57
55
  end
58
56
 
59
57
  # Custom setters for times
@@ -67,7 +65,27 @@ module Osm
67
65
  end
68
66
  end
69
67
 
68
+ # Get the evening's data for use with the API
69
+ # @return [Hash]
70
+ def data_for_saving
71
+ {
72
+ 'eveningid' => evening_id,
73
+ 'sectionid' => section_id,
74
+ 'meetingdate' => meeting_date.try(:strftime, '%Y-%m-%d'),
75
+ 'starttime' => start_time,
76
+ 'endtime' => end_time,
77
+ 'title' => title,
78
+ 'notesforparents' => notes_for_parents,
79
+ 'prenotes' => pre_notes,
80
+ 'postnotes' => post_notes,
81
+ 'games' => games,
82
+ 'leaders' => leaders,
83
+ 'activity' => activities_for_saving,
84
+ }
85
+ end
86
+
70
87
 
88
+ private
71
89
  # Get the JSON for the activitied to pass to the OSM API
72
90
  # @return [String]
73
91
  def activities_for_saving
@@ -82,6 +100,28 @@ module Osm
82
100
  return ActiveSupport::JSON.encode(to_save)
83
101
  end
84
102
 
103
+
104
+ class EveningActivity
105
+
106
+ attr_reader :activity_id, :title, :notes
107
+ # @!attribute [r] activity_id
108
+ # @return [FixNum] the activity being done
109
+ # @!attribute [r] title
110
+ # @return [String] the activity's title
111
+ # @!attribute [r] notes
112
+ # @return [String] notes relevant to doing this activity on this evening
113
+
114
+ # Initialize a new EveningActivity using the hash returned by the API call
115
+ # @param data the hash of data for the object returned by the API
116
+ def initialize(data)
117
+ @activity_id = Osm::to_i_or_nil(data['activityid'])
118
+ @title = data['title']
119
+ @notes = data['notes']
120
+ end
121
+
122
+ end
123
+
124
+
85
125
  end
86
126
 
87
127
  end
data/lib/osm/event.rb CHANGED
@@ -14,7 +14,7 @@ module Osm
14
14
  # @!attribute [r] end
15
15
  # @return [DateTime] when the event ends
16
16
  # @!attribute [r] cost
17
- # @return [?] the cost of the event
17
+ # @return [String] the cost of the event
18
18
  # @!attribute [r] location
19
19
  # @return [String] where the event is
20
20
  # @!attribute [r] notes
data/lib/osm/member.rb CHANGED
@@ -12,7 +12,7 @@ module Osm
12
12
  # @!attribute [r] first_name
13
13
  # @return [String] the member's first name
14
14
  # @!attribute [r] last_name
15
- # @return [String] the imember's last name
15
+ # @return [String] the member's last name
16
16
  # @!attribute [r] email1
17
17
  # @return [String] the 1st email address for the member
18
18
  # @!attribute [r] email2
@@ -38,7 +38,7 @@ module Osm
38
38
  # @!attribute [r] started
39
39
  # @return [Date] when the member started Scouting
40
40
  # @!attribute [r] joined_in_years
41
- # @return [FixNum] thow many full years the member has been in Scouting
41
+ # @return [FixNum] ?
42
42
  # @!attribute [r] parents
43
43
  # @return [String] the member's parent's names
44
44
  # @!attribute [r] notes
@@ -62,7 +62,7 @@ module Osm
62
62
  # @!attribute [r] age
63
63
  # @return [String] the member's current age (yy/mm)
64
64
  # @!attribute [r] joined_years
65
- # @return [FixNum] ?
65
+ # @return [FixNum] how many years the member has been in Scouting
66
66
 
67
67
 
68
68
  # Initialize a new Member using the hash returned by the API call
data/lib/osm/role.rb CHANGED
@@ -2,17 +2,13 @@ module Osm
2
2
 
3
3
  class Role
4
4
 
5
- attr_reader :section, :group_name, :group_id, :group_normalized, :default, :permissions
5
+ attr_reader :section, :group_name, :group_id, :permissions
6
6
  # @!attribute [r] section
7
7
  # @return [Osm::Section] the section this role related to
8
8
  # @!attribute [r] group_name
9
9
  # @return [String] the name of the group the section is in
10
10
  # @!attribute [r] group_id
11
11
  # @return [FixNum] the group the section is in
12
- # @!attribute [r] group_normalized
13
- # @return [FixNum] ?
14
- # @!attribute [r] default
15
- # @return [Boolean] was this the last section this user used in OSM
16
12
  # @!attribute [r] permissions
17
13
  # @return [Hash] the permissions the user has in this role
18
14
 
@@ -22,8 +18,6 @@ module Osm
22
18
  @section = Osm::Section.new(data['sectionid'], data['sectionname'], ActiveSupport::JSON.decode(data['sectionConfig']), self)
23
19
  @group_name = data['groupname']
24
20
  @group_id = Osm::to_i_or_nil(data['groupid'])
25
- @group_normalized = Osm::to_i_or_nil(data['groupNormalised'])
26
- @default = data['isDefault'].eql?('1') ? true : false
27
21
  @permissions = Osm::symbolize_hash(data['permissions'] || {})
28
22
 
29
23
  # Convert permission values to a number
data/lib/osm/section.rb CHANGED
@@ -2,7 +2,7 @@ module Osm
2
2
 
3
3
  class Section
4
4
 
5
- attr_reader :id, :name, :subscription_level, :subscription_expires, :type, :num_scouts, :has_badge_records, :has_programme, :wizard, :column_names, :fields, :intouch_fields, :mobile_fields, :extra_records, :role
5
+ attr_reader :id, :name, :subscription_level, :subscription_expires, :type, :num_scouts, :column_names, :fields, :intouch_fields, :mobile_fields, :extra_records, :role
6
6
  # @!attribute [r] id
7
7
  # @return [FixNum] the id for the section
8
8
  # @!attribute [r] name
@@ -15,12 +15,6 @@ module Osm
15
15
  # @return [Symbol] the section type (:beavers, :cubs, :scouts, :exporers, :adults, :waiting, :unknown)
16
16
  # @!attribute [r] num_scouts
17
17
  # @return [FixNum] how many members the section has
18
- # @!attribute [r] has_badge_records
19
- # @return [Boolean] ?
20
- # @!attribute [r] has_programme
21
- # @return [Boolean] ?
22
- # @!attribute [r] wizard
23
- # @return [Boolean] ?
24
18
  # @!attribute [r] column_names
25
19
  # @return [Hash] custom names to use for the data columns
26
20
  # @!attribute [r] fields
@@ -48,9 +42,6 @@ module Osm
48
42
  @subscription_expires = data['subscription_expires'] ? Date.parse(data['subscription_expires'], 'yyyy-mm-dd') : nil
49
43
  @type = !data['sectionType'].nil? ? data['sectionType'].to_sym : :unknown
50
44
  @num_scouts = data['numscouts']
51
- @has_badge_records = data['hasUsedBadgeRecords'].eql?('1') ? true : false
52
- @has_programme = data['hasProgramme']
53
- @wizard = (data['wizard'] || '').downcase.eql?('true') ? true : false
54
45
  @column_names = Osm::symbolize_hash(data['columnNames'] || {})
55
46
  @fields = Osm::symbolize_hash(data['fields'] || {})
56
47
  @intouch_fields = Osm::symbolize_hash(data['intouch'] || {})
data/spec/osm/api_spec.rb CHANGED
@@ -188,7 +188,7 @@ describe "API" do
188
188
 
189
189
  programme = Osm::Api.new('1', '2').get_programme(3, 4)
190
190
  programme.size.should == 1
191
- programme[0].is_a?(Osm::ProgrammeItem).should be_true
191
+ programme[0].is_a?(Osm::Evening).should be_true
192
192
  programme[0].activities.size.should == 2
193
193
  end
194
194
 
@@ -410,14 +410,14 @@ describe "API" do
410
410
  'secret' => 'secret',
411
411
  'eveningid' => nil, 'sectionid' => nil, 'meetingdate' => nil, 'starttime' => nil,
412
412
  'endtime' => nil, 'title' => 'Unnamed meeting', 'notesforparents' =>'', 'prenotes' => '',
413
- 'postnotes' => '', 'games' => '', 'leaders' => '', 'activity' => '[]', 'googlecalendar' => '',
413
+ 'postnotes' => '', 'games' => '', 'leaders' => '', 'activity' => '[]',
414
414
  }
415
415
  api = Osm::Api.new('user', 'secret')
416
416
  api.stub(:get_terms) { [] }
417
417
  HTTParty.should_receive(:post).with(url, {:body => post_data}) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":0}'}) }
418
418
 
419
- programme_item = Osm::ProgrammeItem.new({}, [])
420
- api.update_evening(programme_item).should be_true
419
+ evening = Osm::Evening.new({}, [])
420
+ api.update_evening(evening).should be_true
421
421
  end
422
422
 
423
423
  it "Update an evening (failed)" do
@@ -429,14 +429,14 @@ describe "API" do
429
429
  'secret' => 'secret',
430
430
  'eveningid' => nil, 'sectionid' => nil, 'meetingdate' => nil, 'starttime' => nil,
431
431
  'endtime' => nil, 'title' => 'Unnamed meeting', 'notesforparents' =>'', 'prenotes' => '',
432
- 'postnotes' => '', 'games' => '', 'leaders' => '', 'activity' => '[]', 'googlecalendar' => '',
432
+ 'postnotes' => '', 'games' => '', 'leaders' => '', 'activity' => '[]',
433
433
  }
434
434
  api = Osm::Api.new('user', 'secret')
435
435
  api.stub(:get_terms) { [] }
436
436
  HTTParty.should_receive(:post).with(url, {:body => post_data}) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":1}'}) }
437
437
 
438
- programme_item = Osm::ProgrammeItem.new({}, [])
439
- api.update_evening(programme_item).should be_false
438
+ evening = Osm::Evening.new({}, [])
439
+ api.update_evening(evening).should be_false
440
440
  end
441
441
  end
442
442
 
@@ -0,0 +1,103 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'date'
4
+
5
+ describe "Evening" do
6
+
7
+ it "Create" do
8
+ data = {
9
+ 'eveningid' => 1,
10
+ 'sectionid' => 2,
11
+ 'title' => 'Evening Name',
12
+ 'notesforparents' => 'Notes for parents',
13
+ 'games' => 'Games',
14
+ 'prenotes' => 'Before',
15
+ 'postnotes' => 'After',
16
+ 'leaders' => 'Leaders',
17
+ 'starttime' => '19:00',
18
+ 'endtime' => '21:00',
19
+ 'meetingdate' => '2000-01-02',
20
+ }
21
+ activities = [{
22
+ 'eveningid' => 1,
23
+ 'activityid' => 2,
24
+ 'title' => 'Activity Name',
25
+ 'notes' => 'Notes',
26
+ }]
27
+ e = Osm::Evening.new(data, activities)
28
+
29
+ e.evening_id.should == 1
30
+ e.section_id.should == 2
31
+ e.title.should == 'Evening Name'
32
+ e.notes_for_parents.should == 'Notes for parents'
33
+ e.games.should == 'Games'
34
+ e.pre_notes.should == 'Before'
35
+ e.post_notes.should == 'After'
36
+ e.leaders.should == 'Leaders'
37
+ e.start_time.should == '19:00'
38
+ e.end_time.should == '21:00'
39
+ e.meeting_date.should == Date.new(2000, 1, 2)
40
+
41
+ e.activities.frozen?.should be_true
42
+ ea = e.activities[0]
43
+ ea.activity_id.should == 2
44
+ ea.title.should == 'Activity Name'
45
+ ea.notes.should == 'Notes'
46
+ end
47
+
48
+
49
+ it "Raises exceptions when trying to set invalid times" do
50
+ e = Osm::Evening.new({}, [])
51
+
52
+ expect{ e.start_time = 'abcde' }.to raise_error(ArgumentError)
53
+ expect{ e.start_time = '24:00' }.to raise_error(ArgumentError)
54
+ expect{ e.start_time = '10:61' }.to raise_error(ArgumentError)
55
+ e.start_time = '12:34'
56
+ e.start_time.should == '12:34'
57
+
58
+ expect{ e.end_time = 'abcde' }.to raise_error(ArgumentError)
59
+ expect{ e.end_time = '24:00' }.to raise_error(ArgumentError)
60
+ expect{ e.end_time = '10:61' }.to raise_error(ArgumentError)
61
+ e.end_time = '23:45'
62
+ e.end_time.should == '23:45'
63
+ end
64
+
65
+
66
+ it "Creates the data for saving through the API" do
67
+ data = {
68
+ 'eveningid' => 1,
69
+ 'sectionid' => 2,
70
+ 'title' => 'Evening Name',
71
+ 'notesforparents' => 'Notes for parents',
72
+ 'games' => 'Games',
73
+ 'prenotes' => 'Before',
74
+ 'postnotes' => 'After',
75
+ 'leaders' => 'Leaders',
76
+ 'starttime' => '19:00',
77
+ 'endtime' => '21:00',
78
+ 'meetingdate' => '2000-01-02',
79
+ }
80
+ activities = [{
81
+ 'eveningid' => 3,
82
+ 'activityid' => 4,
83
+ 'title' => 'Activity Name',
84
+ 'notes' => 'Notes',
85
+ }]
86
+ e = Osm::Evening.new(data, activities)
87
+ e.data_for_saving.should == {
88
+ 'eveningid' => 1,
89
+ 'sectionid' => 2,
90
+ 'meetingdate' => '2000-01-02',
91
+ 'starttime' => '19:00',
92
+ 'endtime' => '21:00',
93
+ 'title' => 'Evening Name',
94
+ 'notesforparents' => 'Notes for parents',
95
+ 'prenotes' => 'Before',
96
+ 'postnotes' => 'After',
97
+ 'games' => 'Games',
98
+ 'leaders' => 'Leaders',
99
+ 'activity' => '[{"activityid":4,"notes":"Notes"}]',
100
+ }
101
+ end
102
+
103
+ end
@@ -23,9 +23,6 @@ describe "Section" do
23
23
  'subscription_expires' => (Date.today + 60).strftime('%Y-%m-%d'),
24
24
  'sectionType' => 'cubs',
25
25
  'numscouts' => 10,
26
- 'hasUsedBadgeRecords' => '1',
27
- 'hasProgramme' => true,
28
- 'wizard' => 'False',
29
26
  'columnNames' => {},
30
27
  'fields' => {},
31
28
  'intouch' => {},
@@ -41,9 +38,6 @@ describe "Section" do
41
38
  section.subscription_expires.should == Date.today + 60
42
39
  section.type.should == :cubs
43
40
  section.num_scouts.should == 10
44
- section.has_badge_records.should == true
45
- section.has_programme.should == true
46
- section.wizard.should == false
47
41
  section.column_names.should == {}
48
42
  section.fields.should == {}
49
43
  section.intouch_fields.should == {}
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Osm
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
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.0.6
4
+ version: 0.0.7
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-08-01 00:00:00.000000000Z
12
+ date: 2012-08-08 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &80730730 !ruby/object:Gem::Requirement
16
+ requirement: &76902620 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.2.5
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *80730730
24
+ version_requirements: *76902620
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &80713860 !ruby/object:Gem::Requirement
27
+ requirement: &76892140 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.2'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *80713860
35
+ version_requirements: *76892140
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: httparty
38
- requirement: &80710730 !ruby/object:Gem::Requirement
38
+ requirement: &76890970 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *80710730
46
+ version_requirements: *76890970
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &80697000 !ruby/object:Gem::Requirement
49
+ requirement: &76889000 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *80697000
57
+ version_requirements: *76889000
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &80694320 !ruby/object:Gem::Requirement
60
+ requirement: &76886900 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *80694320
68
+ version_requirements: *76886900
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: fakeweb
71
- requirement: &80680900 !ruby/object:Gem::Requirement
71
+ requirement: &76883060 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *80680900
79
+ version_requirements: *76883060
80
80
  description: Use the Online Scout Manager API (https://www.onlinescoutmanager.co.uk)
81
81
  to retrieve and save data.
82
82
  email:
@@ -98,11 +98,10 @@ files:
98
98
  - lib/osm/api.rb
99
99
  - lib/osm/api_access.rb
100
100
  - lib/osm/due_badges.rb
101
+ - lib/osm/evening.rb
101
102
  - lib/osm/event.rb
102
103
  - lib/osm/grouping.rb
103
104
  - lib/osm/member.rb
104
- - lib/osm/programme_activity.rb
105
- - lib/osm/programme_item.rb
106
105
  - lib/osm/role.rb
107
106
  - lib/osm/section.rb
108
107
  - lib/osm/term.rb
@@ -112,12 +111,11 @@ files:
112
111
  - spec/osm/api_spec.rb
113
112
  - spec/osm/api_strangeness_spec.rb
114
113
  - spec/osm/due_badges_spec.rb
114
+ - spec/osm/evening_spec.rb
115
115
  - spec/osm/event_spec.rb
116
116
  - spec/osm/grouping_spec.rb
117
117
  - spec/osm/member_spec.rb
118
118
  - spec/osm/osm_spec.rb
119
- - spec/osm/programme_activity_spec.rb
120
- - spec/osm/programme_item_spec.rb
121
119
  - spec/osm/role_spec.rb
122
120
  - spec/osm/section_spec.rb
123
121
  - spec/osm/term_spec.rb
@@ -1,26 +0,0 @@
1
- module Osm
2
-
3
- class ProgrammeActivity
4
-
5
- attr_reader :evening_id, :activity_id, :title, :notes
6
- # @!attribute [r] eveing_id
7
- # @return [FixNum] the evening the activity is being done
8
- # @!attribute [r] activity_id
9
- # @return [FixNum] the activity being done
10
- # @!attribute [r] title
11
- # @return [String] the activity's title
12
- # @!attribute [r] notes
13
- # @return [String] tnotes relevant to doing this activity on this evening
14
-
15
- # Initialize a new EveningActivity using the hash returned by the API call
16
- # @param data the hash of data for the object returned by the API
17
- def initialize(data)
18
- @evening_id = Osm::to_i_or_nil(data['eveningid'])
19
- @activity_id = Osm::to_i_or_nil(data['activityid'])
20
- @title = data['title']
21
- @notes = data['notes']
22
- end
23
-
24
- end
25
-
26
- end
@@ -1,21 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe "Programme Activity" do
5
-
6
- it "Create" do
7
- data = {
8
- 'eveningid' => 1,
9
- 'activityid' => 2,
10
- 'title' => 'Activity Name',
11
- 'notes' => 'Notes',
12
- }
13
- pa = Osm::ProgrammeActivity.new(data)
14
-
15
- pa.evening_id.should == 1
16
- pa.activity_id.should == 2
17
- pa.title.should == 'Activity Name'
18
- pa.notes.should == 'Notes'
19
- end
20
-
21
- end
@@ -1,64 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
- require 'date'
4
-
5
- describe "Programme Item" do
6
-
7
- it "Create" do
8
- data = {
9
- 'eveningid' => 1,
10
- 'sectionid' => 2,
11
- 'title' => 'Evening Name',
12
- 'notesforparents' => 'Notes for parents',
13
- 'games' => 'Games',
14
- 'prenotes' => 'Before',
15
- 'postnotes' => 'After',
16
- 'leaders' => 'Leaders',
17
- 'starttime' => '19:00',
18
- 'endtime' => '21:00',
19
- 'meetingdate' => '2000-01-02',
20
- }
21
- pi = Osm::ProgrammeItem.new(data, [])
22
-
23
- pi.evening_id.should == 1
24
- pi.section_id.should == 2
25
- pi.title.should == 'Evening Name'
26
- pi.notes_for_parents.should == 'Notes for parents'
27
- pi.games.should == 'Games'
28
- pi.pre_notes.should == 'Before'
29
- pi.post_notes.should == 'After'
30
- pi.leaders.should == 'Leaders'
31
- pi.start_time.should == '19:00'
32
- pi.end_time.should == '21:00'
33
- pi.meeting_date.should == Date.new(2000, 1, 2)
34
- end
35
-
36
-
37
- it "Raises exceptions when trying to set invalid times" do
38
- pi = Osm::ProgrammeItem.new({}, [])
39
-
40
- expect{ pi.start_time = 'abcde' }.to raise_error(ArgumentError)
41
- expect{ pi.start_time = '24:00' }.to raise_error(ArgumentError)
42
- expect{ pi.start_time = '10:61' }.to raise_error(ArgumentError)
43
- pi.start_time = '12:34'
44
- pi.start_time.should == '12:34'
45
-
46
- expect{ pi.end_time = 'abcde' }.to raise_error(ArgumentError)
47
- expect{ pi.end_time = '24:00' }.to raise_error(ArgumentError)
48
- expect{ pi.end_time = '10:61' }.to raise_error(ArgumentError)
49
- pi.end_time = '23:45'
50
- pi.end_time.should == '23:45'
51
- end
52
-
53
-
54
- it "Makes a list of activities to save for OSM's API" do
55
- pi = Osm::ProgrammeItem.new({}, [{
56
- 'eveningid' => 1,
57
- 'activityid' => 2,
58
- 'title' => 'Activity Name',
59
- 'notes' => 'Notes',
60
- }])
61
- pi.activities_for_saving.should == '[{"activityid":2,"notes":"Notes"}]'
62
- end
63
-
64
- end