ncs_navigator_configuration 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  NCS Navigator Configuration gem history
2
2
  =======================================
3
3
 
4
+ 0.2.0
5
+ -----
6
+
7
+ - New mandatory study center attribute: recruitment_type_id.
8
+
9
+ - Be more flexible about whitespace when parsing sampling unit CSV.
10
+
4
11
  0.1.0
5
12
  -----
6
13
 
@@ -165,6 +165,13 @@ module NcsNavigator
165
165
 
166
166
  alias :sc_id :study_center_id
167
167
 
168
+ ##
169
+ # The recruitment strategy for this study center. The acceptable
170
+ # values are those from the code list `recruit_type_cl1` in the
171
+ # MDES.
172
+ configuration_attribute :recruitment_type_id, 'Study Center', 'recruitment_type_id', String,
173
+ :required => true
174
+
168
175
  ##
169
176
  # The name for the institutional identity used in this deployment
170
177
  # of NCS Navigator. For instance, for the Greater Chicago Study
@@ -335,7 +342,12 @@ module NcsNavigator
335
342
  raise Error.new("Could not read sampling units CSV #{sampling_units_file}")
336
343
  end
337
344
 
338
- faster_csv_class.foreach(sampling_units_file, :headers => true, :encoding => 'utf-8') do |row|
345
+ strip_ws = lambda { |h| h.nil? ? nil : h.strip }
346
+
347
+ faster_csv_class.foreach(sampling_units_file,
348
+ :headers => true, :encoding => 'utf-8',
349
+ :converters => [strip_ws], :header_converters => [strip_ws]
350
+ ) do |row|
339
351
  psu = (psus[row['PSU_ID']] ||= PrimarySamplingUnit.new(row['PSU_ID']))
340
352
  area = (areas[row['AREA']] ||= SamplingUnitArea.new(row['AREA'], psu))
341
353
  ssu = (ssus[row['SSU_ID']] ||= SecondarySamplingUnit.new(row['SSU_ID'], row['SSU_NAME'], area))
@@ -1,5 +1,5 @@
1
1
  module NcsNavigator
2
2
  class Configuration
3
- VERSION = '0.1.0'
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  end
@@ -13,6 +13,16 @@
13
13
  # The ID for the study center from the MDES
14
14
  sc_id = "20000000"
15
15
 
16
+ # The recruitment strategy code for the center from the MDES. The
17
+ # acceptable values for this element are the values in the code list
18
+ # recruit_type_cl1 in the MDES. In MDES 2.0, these are the values:
19
+ #
20
+ # 1 => Enhanced Household Enumeration
21
+ # 2 => Provider-Based
22
+ # 3 => Two-Tier
23
+ # 4 => Original VC
24
+ recruitment_type_id = "3"
25
+
16
26
  # A pointer to a CSV describing the sampling units for this study
17
27
  # center. If the path is not absolute it will be resolved relative to
18
28
  # this file.
@@ -22,6 +22,7 @@ describe NcsNavigator do
22
22
  File.open('/etc/nubic/ncs/navigator.ini', 'w') do |f|
23
23
  f.puts '[Study Center]'
24
24
  f.puts 'sc_id = 18'
25
+ f.puts 'recruitment_type_id = 2'
25
26
  f.puts 'sampling_units_file = foo.csv'
26
27
  f.puts '[Staff Portal]'
27
28
  f.puts 'uri = https://foo.example.com/sp'
@@ -57,6 +58,7 @@ module NcsNavigator
57
58
  {
58
59
  'Study Center' => {
59
60
  'sc_id' => '23000000',
61
+ 'recruitment_type_id' => '3',
60
62
  'sampling_units_file' => 'foo.csv'
61
63
  },
62
64
  'Staff Portal' => {
@@ -112,6 +114,23 @@ module NcsNavigator
112
114
  end
113
115
  end
114
116
 
117
+ describe '#recruitment_type_id' do
118
+ it 'reflects the configured value' do
119
+ from_hash.recruitment_type_id.should == '3'
120
+ end
121
+
122
+ it 'is always a string' do
123
+ input_hash['Study Center']['recruitment_type_id'] = 234
124
+ from_hash.recruitment_type_id.should == '234'
125
+ end
126
+
127
+ it 'is mandatory' do
128
+ input_hash['Study Center'].delete 'recruitment_type_id'
129
+ lambda { from_hash }.
130
+ should raise_error("Please set a value for [Study Center]: recruitment_type_id")
131
+ end
132
+ end
133
+
115
134
  describe '#study_center_username' do
116
135
  it 'reflects the configured value' do
117
136
  everything.study_center_username.should == 'NetID'
@@ -254,6 +273,27 @@ module NcsNavigator
254
273
  end
255
274
  end
256
275
  end
276
+
277
+ context 'with extra whitespace' do
278
+ before do
279
+ input_hash['Study Center']['sampling_units_file'] =
280
+ File.expand_path('../spaces.csv', __FILE__)
281
+ end
282
+
283
+ subject { from_hash.secondary_sampling_units }
284
+
285
+ it 'has the right number' do
286
+ subject.size.should == 3
287
+ end
288
+
289
+ describe 'an individual SSU' do
290
+ let(:ssu) { subject.detect { |s| s.id == 'One' } }
291
+
292
+ it 'has the name' do
293
+ ssu.name.should == 'West Side'
294
+ end
295
+ end
296
+ end
257
297
  end
258
298
 
259
299
  describe 'footer' do
@@ -2,6 +2,7 @@
2
2
 
3
3
  [Study Center]
4
4
  sc_id = "20000000"
5
+ recruitment_type_id = "1"
5
6
  sampling_units_file = "every_su.csv"
6
7
  username = "NetID"
7
8
  footer_logo_left = "/etc/nubic/ncs/logos/sc_20000000L.png"
@@ -0,0 +1,4 @@
1
+ PSU_ID, AREA,SSU_ID ,SSU_NAME ,TSU_ID, TSU_NAME
2
+ 204, Uptown ,One, West Side,,
3
+ 204,Uptown,Two,East Side,,
4
+ 204,Downtown, Three,Downtown,,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ncs_navigator_configuration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
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: 2011-09-12 00:00:00.000000000Z
12
+ date: 2011-11-17 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ncs_mdes
16
- requirement: &2152457280 !ruby/object:Gem::Requirement
16
+ requirement: &2153498680 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.4'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152457280
24
+ version_requirements: *2153498680
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: inifile
27
- requirement: &2157337660 !ruby/object:Gem::Requirement
27
+ requirement: &2153498160 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.4.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2157337660
35
+ version_requirements: *2153498160
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: fastercsv
38
- requirement: &2157337200 !ruby/object:Gem::Requirement
38
+ requirement: &2153497680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '1.5'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2157337200
46
+ version_requirements: *2153497680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &2157336740 !ruby/object:Gem::Requirement
49
+ requirement: &2153497000 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.9.2
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2157336740
57
+ version_requirements: *2153497000
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &2157336280 !ruby/object:Gem::Requirement
60
+ requirement: &2153487960 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '2.6'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2157336280
68
+ version_requirements: *2153487960
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: yard
71
- requirement: &2157335820 !ruby/object:Gem::Requirement
71
+ requirement: &2153487480 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.7.2
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2157335820
79
+ version_requirements: *2153487480
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: fakefs
82
- requirement: &2157335360 !ruby/object:Gem::Requirement
82
+ requirement: &2153486920 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 0.3.2
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2157335360
90
+ version_requirements: *2153486920
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: ci_reporter
93
- requirement: &2157334900 !ruby/object:Gem::Requirement
93
+ requirement: &2153486340 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '1.6'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2157334900
101
+ version_requirements: *2153486340
102
102
  description: ! "\n An internal component of the NCS Navigator suite, this gem provides
103
103
  a common view\n onto shared configuration elements.\n "
104
104
  email:
@@ -125,6 +125,7 @@ files:
125
125
  - spec/ncs_navigator/every_su.csv
126
126
  - spec/ncs_navigator/everything.ini
127
127
  - spec/ncs_navigator/no_tsus.csv
128
+ - spec/ncs_navigator/spaces.csv
128
129
  - spec/spec_helper.rb
129
130
  homepage: ''
130
131
  licenses: []
@@ -146,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
147
  version: '0'
147
148
  requirements: []
148
149
  rubyforge_project:
149
- rubygems_version: 1.8.6
150
+ rubygems_version: 1.8.10
150
151
  signing_key:
151
152
  specification_version: 3
152
153
  summary: Common configuration elements for the NCS Navigator suite
@@ -156,4 +157,6 @@ test_files:
156
157
  - spec/ncs_navigator/every_su.csv
157
158
  - spec/ncs_navigator/everything.ini
158
159
  - spec/ncs_navigator/no_tsus.csv
160
+ - spec/ncs_navigator/spaces.csv
159
161
  - spec/spec_helper.rb
162
+ has_rdoc: