osm 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## Version 0.1.6
2
+
3
+ * Internal changes due to OSM adding total rows in register and fexi record data (the total rows are ignored)
4
+
1
5
  ## Version 0.1.5
2
6
 
3
7
  * Bug fixes.
@@ -53,21 +53,23 @@ module Osm
53
53
 
54
54
  to_return = []
55
55
  data['items'].each do |item|
56
- fields = item.select { |key, value|
57
- ['firstname', 'lastname', 'dob', 'total', 'completed', 'age'].include?(key) || key.to_s.match(/\Af_\d+\Z/)
58
- }
59
- fields.merge!(
60
- 'dob' => item['dob'].empty? ? nil : item['dob'],
61
- 'total' => item['total'].empty? ? nil : item['total'],
62
- 'completed' => item['completed'].empty? ? nil : item['completed'],
63
- 'age' => item['age'].empty? ? nil : item['age'],
64
- )
65
-
66
- to_return.push Osm::FlexiRecord::Data.new(
67
- :member_id => Osm::to_i_or_nil(item['scoutid']),
68
- :grouping_id => Osm::to_i_or_nil(item['patrolid'].eql?('') ? nil : item['patrolid']),
69
- :fields => fields
70
- )
56
+ unless item['scoutid'].to_i < 0 # It's a total row
57
+ fields = item.select { |key, value|
58
+ ['firstname', 'lastname', 'dob', 'total', 'completed', 'age'].include?(key) || key.to_s.match(/\Af_\d+\Z/)
59
+ }
60
+ fields.merge!(
61
+ 'dob' => item['dob'].empty? ? nil : item['dob'],
62
+ 'total' => item['total'].empty? ? nil : item['total'],
63
+ 'completed' => item['completed'].empty? ? nil : item['completed'],
64
+ 'age' => item['age'].empty? ? nil : item['age'],
65
+ )
66
+
67
+ to_return.push Osm::FlexiRecord::Data.new(
68
+ :member_id => Osm::to_i_or_nil(item['scoutid']),
69
+ :grouping_id => Osm::to_i_or_nil(item['patrolid'].eql?('') ? nil : item['patrolid']),
70
+ :fields => fields
71
+ )
72
+ end
71
73
  end
72
74
 
73
75
  Osm::Model.cache_write(api, cache_key, to_return)
data/lib/osm/register.rb CHANGED
@@ -54,16 +54,18 @@ module Osm
54
54
  data = data['items']
55
55
  to_return = []
56
56
  data.each do |item|
57
- to_return.push Osm::Register::Attendance.new(
58
- :member_id => Osm::to_i_or_nil(item['scoutid']),
59
- :grouping_id => Osm::to_i_or_nil(item ['patrolid']),
60
- :section_id => Osm::to_i_or_nil(item['sectionid']),
61
- :first_name => item['firstname'],
62
- :last_name => item['lastname'],
63
- :total => item['total'].to_i,
64
- :attendance => item.select { |key, value| key.to_s.match(Osm::OSM_DATE_REGEX) }.
65
- inject({}){ |new_hash,(date, attendance)| new_hash[Date.strptime(date, Osm::OSM_DATE_FORMAT)] = attendance; new_hash },
66
- )
57
+ unless item['scoutid'].to_i < 0 # It's a total row
58
+ to_return.push Osm::Register::Attendance.new(
59
+ :member_id => Osm::to_i_or_nil(item['scoutid']),
60
+ :grouping_id => Osm::to_i_or_nil(item ['patrolid']),
61
+ :section_id => section_id,
62
+ :first_name => item['firstname'],
63
+ :last_name => item['lastname'],
64
+ :total => item['total'].to_i,
65
+ :attendance => item.select { |key, value| key.to_s.match(Osm::OSM_DATE_REGEX) }.
66
+ inject({}){ |new_hash,(date, attendance)| new_hash[Date.strptime(date, Osm::OSM_DATE_FORMAT)] = attendance; new_hash },
67
+ )
68
+ end
67
69
  end
68
70
  Osm::Model.cache_write(api, cache_key, to_return)
69
71
  return to_return
data/osm.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_runtime_dependency 'active_attr', '~> 0.6'
24
24
  s.add_runtime_dependency 'activemodel', '~> 3.2'
25
25
 
26
- s.add_development_dependency 'rake', '~> 0.9'
26
+ s.add_development_dependency 'rake', '~> 10.0'
27
27
  s.add_development_dependency 'rspec', '~> 2.11'
28
28
  s.add_development_dependency 'fakeweb', '~> 1.3'
29
29
 
@@ -107,6 +107,7 @@ describe "Flexi Record" do
107
107
 
108
108
  records = Osm::FlexiRecord.get_data(@api, Osm::Section.new(:id => 1, :type => :cubs), 2, 3)
109
109
  records.is_a?(Array).should be_true
110
+ records.size.should == 1
110
111
  record = records[0]
111
112
  record.member_id.should == 1
112
113
  record.grouping_id.should == 2
@@ -123,6 +124,50 @@ describe "Flexi Record" do
123
124
  record.valid?.should be_true
124
125
  end
125
126
 
127
+
128
+ it "Handles the total row" do
129
+ data = {
130
+ 'identifier' => 'scoutid',
131
+ 'label' => "name",
132
+ 'items' => [{
133
+ "scoutid" => "-1",
134
+ "firstname" => "TOTAL",
135
+ "lastname" => "",
136
+ "dob" => "",
137
+ "patrolid" => "-1",
138
+ "total" => 100,
139
+ "completed" => 0,
140
+ "f_1" => 25,
141
+ "f_2" => 75,
142
+ "age" => "",
143
+ "patrol" => ""
144
+ },{
145
+ "scoutid" => "1",
146
+ "firstname" => "First",
147
+ "lastname" => "Last",
148
+ "dob" => "",
149
+ "patrolid" => "2",
150
+ "total" => "",
151
+ "completed" => "",
152
+ "f_1" => "A",
153
+ "f_2" => "B",
154
+ "age" => "",
155
+ "patrol" => "Green"
156
+ }]
157
+ }
158
+ FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/extras.php?action=getExtraRecords&sectionid=1&extraid=2&termid=3&section=cubs", :body => data.to_json)
159
+
160
+ records = Osm::FlexiRecord.get_data(@api, Osm::Section.new(:id => 1, :type => :cubs), 2, 3)
161
+ records.is_a?(Array).should be_true
162
+ records.size.should == 1
163
+ record = records[0]
164
+ record.member_id.should == 1
165
+ record.grouping_id.should == 2
166
+ record.fields['firstname'].should == 'First'
167
+ record.fields['lastname'].should == 'Last'
168
+ end
169
+
170
+
126
171
  end
127
172
 
128
173
  end
@@ -63,12 +63,35 @@ describe "Register" do
63
63
  data = {
64
64
  'identifier' => 'scoutid',
65
65
  'label' => "name",
66
- 'items' => []
66
+ 'items' => [
67
+ {
68
+ "total" => 4,
69
+ "2000-01-01" => "Yes",
70
+ "2000-01-02" => "No",
71
+ "scoutid" => "2",
72
+ "firstname" => "First",
73
+ "lastname" => "Last",
74
+ "patrolid" => "3"
75
+ }
76
+ ]
67
77
  }
68
78
  FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/users.php?action=register&sectionid=1&termid=2", :body => data.to_json)
69
79
 
70
80
  register = Osm::Register.get_attendance(@api, 1, 2)
71
81
  register.is_a?(Array).should be_true
82
+ register.size.should == 1
83
+ reg = register[0]
84
+ reg.attendance.should == {
85
+ Date.new(2000, 1, 1) => 'Yes',
86
+ Date.new(2000, 1, 2) => 'No'
87
+ }
88
+ reg.first_name.should == 'First'
89
+ reg.last_name.should == 'Last'
90
+ reg.grouping_id.should == 3
91
+ reg.member_id.should == 2
92
+ reg.total.should == 4
93
+ reg.section_id.should == 1
94
+ reg.valid?.should be_true
72
95
  end
73
96
 
74
97
  it "Update register attendance" do
@@ -98,6 +121,37 @@ describe "Register" do
98
121
  }).should be_true
99
122
  end
100
123
 
124
+ it "Handles the total row" do
125
+ data = {
126
+ 'identifier' => 'scoutid',
127
+ 'label' => "name",
128
+ 'items' => [
129
+ {
130
+ "total" => 1,
131
+ "scoutid" => "2",
132
+ "firstname" => "First",
133
+ "lastname" => "Last",
134
+ "patrolid" => "3"
135
+ },{
136
+ "total" => 119,
137
+ "2000-01-01" => 8,
138
+ "scoutid" => -1,
139
+ "firstname" => "TOTAL",
140
+ "lastname" => "",
141
+ "patrolid" => 0
142
+ }
143
+ ]
144
+ }
145
+ FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/users.php?action=register&sectionid=1&termid=2", :body => data.to_json)
146
+
147
+ register = Osm::Register.get_attendance(@api, 1, 2)
148
+ register.is_a?(Array).should be_true
149
+ register.size.should == 1
150
+ reg = register[0]
151
+ reg.first_name.should == 'First'
152
+ reg.last_name.should == 'Last'
153
+ end
154
+
101
155
  end
102
156
 
103
157
  end
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Osm
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
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.5
4
+ version: 0.1.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-30 00:00:00.000000000Z
12
+ date: 2012-11-14 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &79214890 !ruby/object:Gem::Requirement
16
+ requirement: &78858770 !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: *79214890
24
+ version_requirements: *78858770
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: httparty
27
- requirement: &79214510 !ruby/object:Gem::Requirement
27
+ requirement: &78858400 !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: *79214510
35
+ version_requirements: *78858400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: active_attr
38
- requirement: &79214170 !ruby/object:Gem::Requirement
38
+ requirement: &78858050 !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: *79214170
46
+ version_requirements: *78858050
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activemodel
49
- requirement: &79213800 !ruby/object:Gem::Requirement
49
+ requirement: &78857710 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,21 +54,21 @@ dependencies:
54
54
  version: '3.2'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *79213800
57
+ version_requirements: *78857710
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &79213530 !ruby/object:Gem::Requirement
60
+ requirement: &78857360 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
64
64
  - !ruby/object:Gem::Version
65
- version: '0.9'
65
+ version: '10.0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *79213530
68
+ version_requirements: *78857360
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &79213300 !ruby/object:Gem::Requirement
71
+ requirement: &78857020 !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: *79213300
79
+ version_requirements: *78857020
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: fakeweb
82
- requirement: &79213050 !ruby/object:Gem::Requirement
82
+ requirement: &78856600 !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: *79213050
90
+ version_requirements: *78856600
91
91
  description: Use the Online Scout Manager API (https://www.onlinescoutmanager.co.uk)
92
92
  to retrieve and save data.
93
93
  email: