ncs_navigator_configuration 0.1.0 → 0.2.0

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,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: