rcap 2.5.0 → 2.7.4

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.
Files changed (89) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -0
  3. data/CHANGELOG.md +18 -0
  4. data/README.md +1 -0
  5. data/lib/rcap.rb +3 -1
  6. data/lib/rcap/alert.rb +4 -2
  7. data/lib/rcap/base/alert.rb +70 -73
  8. data/lib/rcap/base/area.rb +19 -13
  9. data/lib/rcap/base/circle.rb +15 -4
  10. data/lib/rcap/base/event_code.rb +2 -0
  11. data/lib/rcap/base/geocode.rb +2 -0
  12. data/lib/rcap/base/info.rb +81 -75
  13. data/lib/rcap/base/parameter.rb +8 -6
  14. data/lib/rcap/base/point.rb +4 -2
  15. data/lib/rcap/base/polygon.rb +16 -8
  16. data/lib/rcap/base/resource.rb +13 -13
  17. data/lib/rcap/cap_1_0/alert.rb +36 -39
  18. data/lib/rcap/cap_1_0/area.rb +2 -0
  19. data/lib/rcap/cap_1_0/circle.rb +2 -0
  20. data/lib/rcap/cap_1_0/event_code.rb +3 -1
  21. data/lib/rcap/cap_1_0/geocode.rb +3 -1
  22. data/lib/rcap/cap_1_0/info.rb +3 -1
  23. data/lib/rcap/cap_1_0/parameter.rb +3 -2
  24. data/lib/rcap/cap_1_0/point.rb +2 -0
  25. data/lib/rcap/cap_1_0/polygon.rb +3 -1
  26. data/lib/rcap/cap_1_0/resource.rb +2 -0
  27. data/lib/rcap/cap_1_1/alert.rb +4 -2
  28. data/lib/rcap/cap_1_1/area.rb +2 -0
  29. data/lib/rcap/cap_1_1/circle.rb +2 -0
  30. data/lib/rcap/cap_1_1/event_code.rb +3 -1
  31. data/lib/rcap/cap_1_1/geocode.rb +3 -1
  32. data/lib/rcap/cap_1_1/info.rb +48 -46
  33. data/lib/rcap/cap_1_1/parameter.rb +2 -1
  34. data/lib/rcap/cap_1_1/point.rb +2 -0
  35. data/lib/rcap/cap_1_1/polygon.rb +3 -1
  36. data/lib/rcap/cap_1_1/resource.rb +12 -11
  37. data/lib/rcap/cap_1_2/alert.rb +4 -2
  38. data/lib/rcap/cap_1_2/area.rb +2 -0
  39. data/lib/rcap/cap_1_2/circle.rb +2 -0
  40. data/lib/rcap/cap_1_2/event_code.rb +3 -1
  41. data/lib/rcap/cap_1_2/geocode.rb +3 -1
  42. data/lib/rcap/cap_1_2/info.rb +55 -51
  43. data/lib/rcap/cap_1_2/parameter.rb +2 -1
  44. data/lib/rcap/cap_1_2/point.rb +2 -0
  45. data/lib/rcap/cap_1_2/polygon.rb +4 -2
  46. data/lib/rcap/cap_1_2/resource.rb +14 -12
  47. data/lib/rcap/config.rb +2 -0
  48. data/lib/rcap/custom_validators.rb +30 -27
  49. data/lib/rcap/extensions/array.rb +2 -0
  50. data/lib/rcap/extensions/date.rb +3 -1
  51. data/lib/rcap/extensions/date_time.rb +4 -1
  52. data/lib/rcap/extensions/float.rb +2 -0
  53. data/lib/rcap/extensions/integer.rb +7 -0
  54. data/lib/rcap/extensions/nil_class.rb +2 -0
  55. data/lib/rcap/extensions/string.rb +3 -1
  56. data/lib/rcap/extensions/time.rb +3 -0
  57. data/lib/rcap/formatters/yaml.rb +5 -0
  58. data/lib/rcap/info.rb +2 -0
  59. data/lib/rcap/utilities.rb +8 -10
  60. data/lib/rcap/validation.rb +19 -14
  61. data/lib/rcap/version.rb +3 -1
  62. data/rcap.gemspec +5 -5
  63. data/spec/alert_spec.rb +8 -9
  64. data/spec/cap_1_0/alert_spec.rb +4 -5
  65. data/spec/cap_1_0/area_spec.rb +7 -10
  66. data/spec/cap_1_0/circle_spec.rb +9 -0
  67. data/spec/cap_1_0/event_code_spec.rb +1 -1
  68. data/spec/cap_1_0/geocode_spec.rb +1 -1
  69. data/spec/cap_1_0/info_spec.rb +38 -38
  70. data/spec/cap_1_0/polygon_spec.rb +7 -5
  71. data/spec/cap_1_0/resource_spec.rb +6 -7
  72. data/spec/cap_1_1/alert_spec.rb +6 -7
  73. data/spec/cap_1_1/area_spec.rb +6 -8
  74. data/spec/cap_1_1/circle_spec.rb +9 -0
  75. data/spec/cap_1_1/info_spec.rb +26 -26
  76. data/spec/cap_1_1/parameter_spec.rb +1 -2
  77. data/spec/cap_1_1/polygon_spec.rb +12 -10
  78. data/spec/cap_1_1/resource_spec.rb +13 -13
  79. data/spec/cap_1_2/alert_spec.rb +7 -8
  80. data/spec/cap_1_2/area_spec.rb +6 -6
  81. data/spec/cap_1_2/circle_spec.rb +9 -0
  82. data/spec/cap_1_2/info_spec.rb +25 -26
  83. data/spec/cap_1_2/polygon_spec.rb +8 -0
  84. data/spec/cap_1_2/resource_spec.rb +13 -13
  85. data/spec/extensions_spec.rb +2 -2
  86. data/spec/spec_helper.rb +2 -2
  87. data/spec/validations_spec.rb +0 -1
  88. metadata +15 -15
  89. data/lib/rcap/extensions/fixnum.rb +0 -5
@@ -99,6 +99,15 @@ describe(RCAP::CAP_1_0::Circle) do
99
99
  end
100
100
  end
101
101
 
102
+ context('to geojson') do
103
+ it('should be valid geojson') do
104
+ @circle.longitude = 5.6
105
+ expected = '{"type":"Feature","geometry":{"type":"Point",' \
106
+ '"coordinates":[5.6,30]},"properties":{"radius":10.5}}'
107
+ expect(@circle.to_geojson).to eq expected
108
+ end
109
+ end
110
+
102
111
  context('to hash') do
103
112
  it('should be correct') do
104
113
  @circle.to_h.should == { 'radius' => 10.5, 'lattitude' => 30, 'longitude' => 60 }
@@ -9,7 +9,7 @@ describe(RCAP::CAP_1_0::EventCode) do
9
9
  event_code.value = 'value'
10
10
  end
11
11
  @alert = RCAP::CAP_1_0::Alert.new
12
- @alert.add_info.event_codes << @original_event_code
12
+ @alert.add_info.event_codes << @original_event_code
13
13
  @xml_string = @alert.to_xml
14
14
  @xml_document = REXML::Document.new(@xml_string)
15
15
  @info_xml_element = RCAP.xpath_first(@xml_document.root, RCAP::CAP_1_0::Info::XPATH, RCAP::CAP_1_0::Alert::XMLNS)
@@ -9,7 +9,7 @@ describe(RCAP::CAP_1_0::Geocode) do
9
9
  geocode.value = 'value'
10
10
  end
11
11
  @alert = RCAP::CAP_1_0::Alert.new
12
- @alert.add_info.add_area.geocodes << @original_geocode
12
+ @alert.add_info.add_area.geocodes << @original_geocode
13
13
  @xml_string = @alert.to_xml
14
14
  @xml_document = REXML::Document.new(@xml_string)
15
15
  @info_xml_element = RCAP.xpath_first(@xml_document.root, RCAP::CAP_1_0::Info::XPATH, RCAP::CAP_1_0::Alert::XMLNS)
@@ -26,21 +26,21 @@ describe(RCAP::CAP_1_0::Info) do
26
26
  resource.uri = 'http://tempuri.org/resource'
27
27
  end
28
28
 
29
- [%w(name1 value1), %w(name2 value2)].each do |name, value|
29
+ [%w[name1 value1], %w[name2 value2]].each do |name, value|
30
30
  info.add_event_code do |event_code|
31
31
  event_code.name = name
32
32
  event_code.value = value
33
33
  end
34
34
  end
35
35
 
36
- [%w(name1 value1), %w(name2 value2)].each do |name, value|
36
+ [%w[name1 value1], %w[name2 value2]].each do |name, value|
37
37
  info.add_parameter do |parameter|
38
38
  parameter.name = name
39
39
  parameter.value = value
40
40
  end
41
41
  end
42
42
 
43
- %w(Area1 Area2).each do |area_desc|
43
+ %w[Area1 Area2].each do |area_desc|
44
44
  info.add_area do |area|
45
45
  area.area_desc = area_desc
46
46
  end
@@ -72,25 +72,25 @@ describe(RCAP::CAP_1_0::Info) do
72
72
  it('should have no parameters') { @info.parameters.should(be_empty) }
73
73
 
74
74
  shared_examples_for('it can parse into a CAP 1.0 Info object') do
75
- it('should parse categories correctly') { @info.categories.should_not(be_nil); @info.categories.should == @original_info.categories }
76
- it('should parse event correctly') { @info.event.should_not(be_nil); @info.event.should == @original_info.event }
77
- it('should parse urgency correctly') { @info.urgency.should_not(be_nil); @info.urgency.should == @original_info.urgency }
78
- it('should parse severity correctly') { @info.severity.should_not(be_nil); @info.severity.should == @original_info.severity }
79
- it('should parse certainty correctly') { @info.certainty.should_not(be_nil); @info.certainty.should == @original_info.certainty }
80
- it('should parse audience correctly') { @info.audience.should_not(be_nil); @info.audience.should == @original_info.audience }
75
+ it('should parse categories correctly') { @info.categories.should_not(be_nil); @info.categories.should == @original_info.categories }
76
+ it('should parse event correctly') { @info.event.should_not(be_nil); @info.event.should == @original_info.event }
77
+ it('should parse urgency correctly') { @info.urgency.should_not(be_nil); @info.urgency.should == @original_info.urgency }
78
+ it('should parse severity correctly') { @info.severity.should_not(be_nil); @info.severity.should == @original_info.severity }
79
+ it('should parse certainty correctly') { @info.certainty.should_not(be_nil); @info.certainty.should == @original_info.certainty }
80
+ it('should parse audience correctly') { @info.audience.should_not(be_nil); @info.audience.should == @original_info.audience }
81
81
  it('should parse effective correctly') { @info.effective.should_not(be_nil); @info.effective.should(be_within(Rational(1, 86_400)).of(@original_info.effective)) }
82
82
  it('should parse onset correctly') { @info.onset.should_not(be_nil); @info.onset.should(be_within(Rational(1, 86_400)).of(@original_info.onset)) }
83
83
  it('should parse expires correctly') { @info.expires.should_not(be_nil); @info.expires.should(be_within(Rational(1, 86_400)).of(@original_info.expires)) }
84
- it('should parse sender_name correctly') { @info.sender_name.should_not(be_nil); @info.sender_name.should == @original_info.sender_name }
85
- it('should parse headline correctly') { @info.headline.should_not(be_nil); @info.headline.should == @original_info.headline }
84
+ it('should parse sender_name correctly') { @info.sender_name.should_not(be_nil); @info.sender_name.should == @original_info.sender_name }
85
+ it('should parse headline correctly') { @info.headline.should_not(be_nil); @info.headline.should == @original_info.headline }
86
86
  it('should parse description correctly') { @info.description.should_not(be_nil); @info.description.should == @original_info.description }
87
87
  it('should parse instruction correctly') { @info.instruction.should_not(be_nil); @info.instruction.should == @original_info.instruction }
88
- it('should parse web correctly') { @info.web.should_not(be_nil); @info.web.should == @original_info.web }
89
- it('should parse contact correctly') { @info.contact.should_not(be_nil); @info.contact.should == @original_info.contact }
90
- it('should parse event_codes correctly') { @info.event_codes.should_not(be_nil); @info.event_codes.should == @original_info.event_codes }
91
- it('should parse parameters correctly') { @info.parameters.should_not(be_nil); @info.parameters.should == @original_info.parameters }
92
- it('should parse resources correctly') { @info.resources.should_not(be_nil); @info.resources.map(&:to_s).should == @original_info.resources.map(&:to_s) }
93
- it('should parse areas correctly') { @info.areas.should_not(be_nil); @info.areas.should == @original_info.areas }
88
+ it('should parse web correctly') { @info.web.should_not(be_nil); @info.web.should == @original_info.web }
89
+ it('should parse contact correctly') { @info.contact.should_not(be_nil); @info.contact.should == @original_info.contact }
90
+ it('should parse event_codes correctly') { @info.event_codes.should_not(be_nil); @info.event_codes.should == @original_info.event_codes }
91
+ it('should parse parameters correctly') { @info.parameters.should_not(be_nil); @info.parameters.should == @original_info.parameters }
92
+ it('should parse resources correctly') { @info.resources.should_not(be_nil); @info.resources.map(&:to_s).should == @original_info.resources.map(&:to_s) }
93
+ it('should parse areas correctly') { @info.areas.should_not(be_nil); @info.areas.should == @original_info.areas }
94
94
  end
95
95
 
96
96
  context('from XML') do
@@ -119,7 +119,7 @@ describe(RCAP::CAP_1_0::Info) do
119
119
  before(:each) do
120
120
  @info = RCAP::CAP_1_0::Info.new do |info|
121
121
  info.event = 'Info Event'
122
- info.categories << RCAP::CAP_1_0::Info::CATEGORY_GEO
122
+ info.categories << RCAP::CAP_1_0::Info::CATEGORY_GEO
123
123
  info.urgency = RCAP::CAP_1_0::Info::URGENCY_IMMEDIATE
124
124
  info.severity = RCAP::CAP_1_0::Info::SEVERITY_EXTREME
125
125
  info.certainty = RCAP::CAP_1_0::Info::CERTAINTY_VERY_LIKELY
@@ -158,83 +158,83 @@ describe(RCAP::CAP_1_0::Info) do
158
158
  end
159
159
 
160
160
  it('should export the language correctly') do
161
- @info_hash[ RCAP::CAP_1_0::Info::LANGUAGE_KEY].should == @info.language
161
+ @info_hash[RCAP::CAP_1_0::Info::LANGUAGE_KEY].should == @info.language
162
162
  end
163
163
 
164
164
  it('should export the categories') do
165
- @info_hash[ RCAP::CAP_1_0::Info::CATEGORIES_KEY].should == @info.categories
165
+ @info_hash[RCAP::CAP_1_0::Info::CATEGORIES_KEY].should == @info.categories
166
166
  end
167
167
 
168
168
  it('should export the event') do
169
- @info_hash[ RCAP::CAP_1_0::Info::EVENT_KEY].should == @info.event
169
+ @info_hash[RCAP::CAP_1_0::Info::EVENT_KEY].should == @info.event
170
170
  end
171
171
 
172
172
  it('should export the urgency') do
173
- @info_hash[ RCAP::CAP_1_0::Info:: URGENCY_KEY].should == @info.urgency
173
+ @info_hash[RCAP::CAP_1_0::Info:: URGENCY_KEY].should == @info.urgency
174
174
  end
175
175
 
176
176
  it('should export the severity') do
177
- @info_hash[ RCAP::CAP_1_0::Info:: SEVERITY_KEY].should == @info.severity
177
+ @info_hash[RCAP::CAP_1_0::Info:: SEVERITY_KEY].should == @info.severity
178
178
  end
179
179
 
180
180
  it('should export the certainty') do
181
- @info_hash[ RCAP::CAP_1_0::Info:: CERTAINTY_KEY].should == @info.certainty
181
+ @info_hash[RCAP::CAP_1_0::Info:: CERTAINTY_KEY].should == @info.certainty
182
182
  end
183
183
 
184
184
  it('should export the audience') do
185
- @info_hash[ RCAP::CAP_1_0::Info:: AUDIENCE_KEY].should == @info.audience
185
+ @info_hash[RCAP::CAP_1_0::Info:: AUDIENCE_KEY].should == @info.audience
186
186
  end
187
187
 
188
188
  it('should export the effective date') do
189
- @info_hash[ RCAP::CAP_1_0::Info::EFFECTIVE_KEY].should == @info.effective.to_s_for_cap
189
+ @info_hash[RCAP::CAP_1_0::Info::EFFECTIVE_KEY].should == @info.effective.to_s_for_cap
190
190
  end
191
191
 
192
192
  it('should export the onset date') do
193
- @info_hash[ RCAP::CAP_1_0::Info::ONSET_KEY].should == @info.onset.to_s_for_cap
193
+ @info_hash[RCAP::CAP_1_0::Info::ONSET_KEY].should == @info.onset.to_s_for_cap
194
194
  end
195
195
 
196
196
  it('should export the expires date') do
197
- @info_hash[ RCAP::CAP_1_0::Info::EXPIRES_KEY].should == @info.expires.to_s_for_cap
197
+ @info_hash[RCAP::CAP_1_0::Info::EXPIRES_KEY].should == @info.expires.to_s_for_cap
198
198
  end
199
199
 
200
200
  it('should export the sender name') do
201
- @info_hash[ RCAP::CAP_1_0::Info::SENDER_NAME_KEY].should == @info.sender_name
201
+ @info_hash[RCAP::CAP_1_0::Info::SENDER_NAME_KEY].should == @info.sender_name
202
202
  end
203
203
 
204
204
  it('should export the headline') do
205
- @info_hash[ RCAP::CAP_1_0::Info::HEADLINE_KEY].should == @info.headline
205
+ @info_hash[RCAP::CAP_1_0::Info::HEADLINE_KEY].should == @info.headline
206
206
  end
207
207
 
208
208
  it('should export the description') do
209
- @info_hash[ RCAP::CAP_1_0::Info::DESCRIPTION_KEY].should == @info.description
209
+ @info_hash[RCAP::CAP_1_0::Info::DESCRIPTION_KEY].should == @info.description
210
210
  end
211
211
 
212
212
  it('should export the instruction') do
213
- @info_hash[ RCAP::CAP_1_0::Info::INSTRUCTION_KEY].should == @info.instruction
213
+ @info_hash[RCAP::CAP_1_0::Info::INSTRUCTION_KEY].should == @info.instruction
214
214
  end
215
215
 
216
216
  it('should export the web address ') do
217
- @info_hash[ RCAP::CAP_1_0::Info::WEB_KEY].should == @info.web
217
+ @info_hash[RCAP::CAP_1_0::Info::WEB_KEY].should == @info.web
218
218
  end
219
219
 
220
220
  it('should export the contact') do
221
- @info_hash[ RCAP::CAP_1_0::Info::CONTACT_KEY].should == @info.contact
221
+ @info_hash[RCAP::CAP_1_0::Info::CONTACT_KEY].should == @info.contact
222
222
  end
223
223
 
224
224
  it('should export the event codes') do
225
- @info_hash[ RCAP::CAP_1_0::Info::EVENT_CODES_KEY].should == @info.event_codes.map { |event_code| event_code.to_h }
225
+ @info_hash[RCAP::CAP_1_0::Info::EVENT_CODES_KEY].should == @info.event_codes.map { |event_code| event_code.to_h }
226
226
  end
227
227
 
228
228
  it('should export the parameters ') do
229
- @info_hash[ RCAP::CAP_1_0::Info::PARAMETERS_KEY].should == @info.parameters.map { |parameter| parameter.to_h }
229
+ @info_hash[RCAP::CAP_1_0::Info::PARAMETERS_KEY].should == @info.parameters.map { |parameter| parameter.to_h }
230
230
  end
231
231
 
232
232
  it('should export the resources ') do
233
- @info_hash[ RCAP::CAP_1_0::Info::RESOURCES_KEY].should == @info.resources.map { |resource| resource.to_h }
233
+ @info_hash[RCAP::CAP_1_0::Info::RESOURCES_KEY].should == @info.resources.map { |resource| resource.to_h }
234
234
  end
235
235
 
236
236
  it('should export the areas') do
237
- @info_hash[ RCAP::CAP_1_0::Info::AREAS_KEY].should == @info.areas.map { |area| area.to_h }
237
+ @info_hash[RCAP::CAP_1_0::Info::AREAS_KEY].should == @info.areas.map { |area| area.to_h }
238
238
  end
239
239
  end
240
240
  end
@@ -14,11 +14,6 @@ describe(RCAP::CAP_1_0::Polygon) do
14
14
  @polygon.should(be_valid)
15
15
  end
16
16
 
17
- it('does not have any points') do
18
- @polygon.points.clear
19
- @polygon.should_not(be_valid)
20
- end
21
-
22
17
  it('does not have a valid collection of points') do
23
18
  @polygon.points.first.lattitude = nil
24
19
  @polygon.should_not(be_valid)
@@ -106,6 +101,13 @@ describe(RCAP::CAP_1_0::Polygon) do
106
101
  end
107
102
  end
108
103
 
104
+ context('to geojson') do
105
+ it('should be valid geojson') do
106
+ expected = '{"type":"Polygon","coordinates":[[[0,0],[1,1],[2,2]]]}'
107
+ expect(@polygon.to_geojson).to eq expected
108
+ end
109
+ end
110
+
109
111
  context('to a hash') do
110
112
  it('should export correctly') do
111
113
  @polygon.to_h.should == { RCAP::CAP_1_0::Polygon::POINTS_KEY => @polygon.points.map { |point| point.to_a } }
@@ -86,7 +86,6 @@ describe(RCAP::CAP_1_0::Resource) do
86
86
  @resource.digest.should == @original_resource.digest
87
87
  end
88
88
  end
89
-
90
89
  end
91
90
 
92
91
  context('when exported') do
@@ -106,29 +105,29 @@ describe(RCAP::CAP_1_0::Resource) do
106
105
  end
107
106
 
108
107
  it('should set the resource description') do
109
- @resource_hash[ RCAP::CAP_1_0::Resource::RESOURCE_DESC_KEY].should == @resource.resource_desc
108
+ @resource_hash[RCAP::CAP_1_0::Resource::RESOURCE_DESC_KEY].should == @resource.resource_desc
110
109
  end
111
110
 
112
111
  it('should set the mime type') do
113
- @resource_hash[ RCAP::CAP_1_0::Resource::MIME_TYPE_KEY].should == @resource.mime_type
112
+ @resource_hash[RCAP::CAP_1_0::Resource::MIME_TYPE_KEY].should == @resource.mime_type
114
113
  end
115
114
 
116
115
  it('should set the size') do
117
- @resource_hash[ RCAP::CAP_1_0::Resource::SIZE_KEY].should == @resource.size
116
+ @resource_hash[RCAP::CAP_1_0::Resource::SIZE_KEY].should == @resource.size
118
117
  end
119
118
 
120
119
  it('should set the URI') do
121
- @resource_hash[ RCAP::CAP_1_0::Resource::URI_KEY].should == @resource.uri
120
+ @resource_hash[RCAP::CAP_1_0::Resource::URI_KEY].should == @resource.uri
122
121
  end
123
122
 
124
123
  it('should set the digest') do
125
- @resource_hash[ RCAP::CAP_1_0::Resource::DIGEST_KEY].should == @resource.digest
124
+ @resource_hash[RCAP::CAP_1_0::Resource::DIGEST_KEY].should == @resource.digest
126
125
  end
127
126
  end
128
127
 
129
128
  context('to xml') do
130
129
  it('should be successful') do
131
- lambda { @resource_xml = @resource.to_xml }.should_not(raise_exception)
130
+ -> { @resource_xml = @resource.to_xml }.should_not(raise_exception)
132
131
  end
133
132
  end
134
133
  end
@@ -12,14 +12,14 @@ describe(RCAP::CAP_1_1::Alert) do
12
12
  ['Address 1', 'Address 2'].each do |address|
13
13
  alert.addresses << address
14
14
  end
15
- %w(Code1 Code2).each do |code|
15
+ %w[Code1 Code2].each do |code|
16
16
  alert.codes << code
17
17
  end
18
- alert.note = 'Note'
19
- %w(Reference1 Reference2).each do |reference|
18
+ alert.note = 'Note'
19
+ %w[Reference1 Reference2].each do |reference|
20
20
  alert.references << reference
21
21
  end
22
- %w(Incident1 Incident2).each do |_incident|
22
+ %w[Incident1 Incident2].each do |_incident|
23
23
  end
24
24
  alert.add_info
25
25
  alert.add_info
@@ -27,7 +27,7 @@ describe(RCAP::CAP_1_1::Alert) do
27
27
  end
28
28
 
29
29
  context('on initialisation') do
30
- before(:each) do
30
+ before(:each) do
31
31
  @alert = RCAP::CAP_1_1::Alert.new
32
32
  end
33
33
 
@@ -75,7 +75,6 @@ describe(RCAP::CAP_1_1::Alert) do
75
75
  end
76
76
 
77
77
  it_should_behave_like('a successfully parsed CAP 1.1 alert')
78
-
79
78
  end
80
79
 
81
80
  context('from YAML') do
@@ -168,7 +167,7 @@ describe(RCAP::CAP_1_1::Alert) do
168
167
  context('has an info element and it') do
169
168
  it('is not valid') do
170
169
  @info = @alert.add_info do |info|
171
- info.event = 'Info Event'
170
+ info.event = 'Info Event'
172
171
  info.categories << RCAP::CAP_1_1::Info::CATEGORY_GEO
173
172
  info.urgency = RCAP::CAP_1_1::Info::URGENCY_IMMEDIATE
174
173
  info.severity = RCAP::CAP_1_1::Info::SEVERITY_EXTREME
@@ -23,7 +23,6 @@ describe(RCAP::CAP_1_1::Area) do
23
23
  point.longitude = 2
24
24
  end
25
25
  end
26
-
27
26
  end
28
27
 
29
28
  context('on initialisation') do
@@ -71,7 +70,6 @@ describe(RCAP::CAP_1_1::Area) do
71
70
 
72
71
  context('from XML') do
73
72
  before(:each) do
74
-
75
73
  @alert = RCAP::CAP_1_1::Alert.new
76
74
  @alert.add_info.add_area(&@area_builder)
77
75
  @xml_string = @alert.to_xml
@@ -112,27 +110,27 @@ describe(RCAP::CAP_1_1::Area) do
112
110
  end
113
111
 
114
112
  it('should export the area description correctly') do
115
- @area_hash[ RCAP::CAP_1_1::Area::AREA_DESC_KEY].should == @area.area_desc
113
+ @area_hash[RCAP::CAP_1_1::Area::AREA_DESC_KEY].should == @area.area_desc
116
114
  end
117
115
 
118
116
  it('should export the altitude correctly') do
119
- @area_hash[ RCAP::CAP_1_1::Area::ALTITUDE_KEY].should == @area.altitude
117
+ @area_hash[RCAP::CAP_1_1::Area::ALTITUDE_KEY].should == @area.altitude
120
118
  end
121
119
 
122
120
  it('should set the ceiling correctly') do
123
- @area_hash[ RCAP::CAP_1_1::Area::CEILING_KEY].should == @area.ceiling
121
+ @area_hash[RCAP::CAP_1_1::Area::CEILING_KEY].should == @area.ceiling
124
122
  end
125
123
 
126
124
  it('should export the circles correctly') do
127
- @area_hash[ RCAP::CAP_1_1::Area::CIRCLES_KEY].should == @area.circles.map { |circle| circle.to_a }
125
+ @area_hash[RCAP::CAP_1_1::Area::CIRCLES_KEY].should == @area.circles.map { |circle| circle.to_a }
128
126
  end
129
127
 
130
128
  it('should export the geocodes correctly') do
131
- @area_hash[ RCAP::CAP_1_1::Area::GEOCODES_KEY].should == @area.geocodes.map { |geocode| geocode.to_h }
129
+ @area_hash[RCAP::CAP_1_1::Area::GEOCODES_KEY].should == @area.geocodes.map { |geocode| geocode.to_h }
132
130
  end
133
131
 
134
132
  it('should export the polygons correctly') do
135
- @area_hash[ RCAP::CAP_1_1::Area::POLYGONS_KEY].should == @area.polygons.map { |polygon| polygon.to_h }
133
+ @area_hash[RCAP::CAP_1_1::Area::POLYGONS_KEY].should == @area.polygons.map { |polygon| polygon.to_h }
136
134
  end
137
135
  end
138
136
  end
@@ -102,6 +102,15 @@ describe(RCAP::CAP_1_1::Circle) do
102
102
  end
103
103
  end
104
104
 
105
+ context('to geojson') do
106
+ it('should be valid geojson') do
107
+ @circle.longitude = 5.6
108
+ expected = '{"type":"Feature","geometry":{"type":"Point",' \
109
+ '"coordinates":[5.6,30]},"properties":{"radius":10.5}}'
110
+ expect(@circle.to_geojson).to eq expected
111
+ end
112
+ end
113
+
105
114
  context('to hash') do
106
115
  it('should be correct') do
107
116
  @circle.to_h.should == { 'radius' => 10.5, 'lattitude' => 30, 'longitude' => 60 }
@@ -34,19 +34,19 @@ describe(RCAP::CAP_1_1::Info) do
34
34
 
35
35
  [{ name: 'name1', value: 'value1' }, { name: 'name2', value: 'value2' }].each do |event_code_hash|
36
36
  info.add_event_code do |event_code|
37
- event_code.name = event_code_hash[ :name]
38
- event_code.value = event_code_hash[ :value]
37
+ event_code.name = event_code_hash[:name]
38
+ event_code.value = event_code_hash[:value]
39
39
  end
40
40
  end
41
41
 
42
42
  [{ name: 'name1', value: 'value1' }, { name: 'name2', value: 'value2' }].each do |parameter_hash|
43
43
  info.add_parameter do |parameter|
44
- parameter.name = parameter_hash[ :name]
45
- parameter.value = parameter_hash[ :value]
44
+ parameter.name = parameter_hash[:name]
45
+ parameter.value = parameter_hash[:value]
46
46
  end
47
47
  end
48
48
 
49
- %w(Area1 Area2).each do |area_desc|
49
+ %w[Area1 Area2].each do |area_desc|
50
50
  info.add_area do |area|
51
51
  area.area_desc = area_desc
52
52
  end
@@ -315,87 +315,87 @@ describe(RCAP::CAP_1_1::Info) do
315
315
  end
316
316
 
317
317
  it('should export the language correctly') do
318
- @info_hash[ RCAP::CAP_1_1::Info::LANGUAGE_KEY].should == @info.language
318
+ @info_hash[RCAP::CAP_1_1::Info::LANGUAGE_KEY].should == @info.language
319
319
  end
320
320
 
321
321
  it('should export the categories') do
322
- @info_hash[ RCAP::CAP_1_1::Info::CATEGORIES_KEY].should == @info.categories
322
+ @info_hash[RCAP::CAP_1_1::Info::CATEGORIES_KEY].should == @info.categories
323
323
  end
324
324
 
325
325
  it('should export the event') do
326
- @info_hash[ RCAP::CAP_1_1::Info::EVENT_KEY].should == @info.event
326
+ @info_hash[RCAP::CAP_1_1::Info::EVENT_KEY].should == @info.event
327
327
  end
328
328
 
329
329
  it('should export the response types') do
330
- @info_hash[ RCAP::CAP_1_1::Info::RESPONSE_TYPES_KEY].should == @info.response_types
330
+ @info_hash[RCAP::CAP_1_1::Info::RESPONSE_TYPES_KEY].should == @info.response_types
331
331
  end
332
332
 
333
333
  it('should export the urgency') do
334
- @info_hash[ RCAP::CAP_1_1::Info:: URGENCY_KEY].should == @info.urgency
334
+ @info_hash[RCAP::CAP_1_1::Info:: URGENCY_KEY].should == @info.urgency
335
335
  end
336
336
 
337
337
  it('should export the severity') do
338
- @info_hash[ RCAP::CAP_1_1::Info:: SEVERITY_KEY].should == @info.severity
338
+ @info_hash[RCAP::CAP_1_1::Info:: SEVERITY_KEY].should == @info.severity
339
339
  end
340
340
 
341
341
  it('should export the certainty') do
342
- @info_hash[ RCAP::CAP_1_1::Info:: CERTAINTY_KEY].should == @info.certainty
342
+ @info_hash[RCAP::CAP_1_1::Info:: CERTAINTY_KEY].should == @info.certainty
343
343
  end
344
344
 
345
345
  it('should export the audience') do
346
- @info_hash[ RCAP::CAP_1_1::Info:: AUDIENCE_KEY].should == @info.audience
346
+ @info_hash[RCAP::CAP_1_1::Info:: AUDIENCE_KEY].should == @info.audience
347
347
  end
348
348
 
349
349
  it('should export the effective date') do
350
- @info_hash[ RCAP::CAP_1_1::Info::EFFECTIVE_KEY].should == @info.effective.to_s_for_cap
350
+ @info_hash[RCAP::CAP_1_1::Info::EFFECTIVE_KEY].should == @info.effective.to_s_for_cap
351
351
  end
352
352
 
353
353
  it('should export the onset date') do
354
- @info_hash[ RCAP::CAP_1_1::Info::ONSET_KEY].should == @info.onset.to_s_for_cap
354
+ @info_hash[RCAP::CAP_1_1::Info::ONSET_KEY].should == @info.onset.to_s_for_cap
355
355
  end
356
356
 
357
357
  it('should export the expires date') do
358
- @info_hash[ RCAP::CAP_1_1::Info::EXPIRES_KEY].should == @info.expires.to_s_for_cap
358
+ @info_hash[RCAP::CAP_1_1::Info::EXPIRES_KEY].should == @info.expires.to_s_for_cap
359
359
  end
360
360
 
361
361
  it('should export the sender name') do
362
- @info_hash[ RCAP::CAP_1_1::Info::SENDER_NAME_KEY].should == @info.sender_name
362
+ @info_hash[RCAP::CAP_1_1::Info::SENDER_NAME_KEY].should == @info.sender_name
363
363
  end
364
364
 
365
365
  it('should export the headline') do
366
- @info_hash[ RCAP::CAP_1_1::Info::HEADLINE_KEY].should == @info.headline
366
+ @info_hash[RCAP::CAP_1_1::Info::HEADLINE_KEY].should == @info.headline
367
367
  end
368
368
 
369
369
  it('should export the description') do
370
- @info_hash[ RCAP::CAP_1_1::Info::DESCRIPTION_KEY].should == @info.description
370
+ @info_hash[RCAP::CAP_1_1::Info::DESCRIPTION_KEY].should == @info.description
371
371
  end
372
372
 
373
373
  it('should export the instruction') do
374
- @info_hash[ RCAP::CAP_1_1::Info::INSTRUCTION_KEY].should == @info.instruction
374
+ @info_hash[RCAP::CAP_1_1::Info::INSTRUCTION_KEY].should == @info.instruction
375
375
  end
376
376
 
377
377
  it('should export the web address ') do
378
- @info_hash[ RCAP::CAP_1_1::Info::WEB_KEY].should == @info.web
378
+ @info_hash[RCAP::CAP_1_1::Info::WEB_KEY].should == @info.web
379
379
  end
380
380
 
381
381
  it('should export the contact') do
382
- @info_hash[ RCAP::CAP_1_1::Info::CONTACT_KEY].should == @info.contact
382
+ @info_hash[RCAP::CAP_1_1::Info::CONTACT_KEY].should == @info.contact
383
383
  end
384
384
 
385
385
  it('should export the event codes') do
386
- @info_hash[ RCAP::CAP_1_1::Info::EVENT_CODES_KEY].should == @info.event_codes.map { |event_code| event_code.to_h }
386
+ @info_hash[RCAP::CAP_1_1::Info::EVENT_CODES_KEY].should == @info.event_codes.map { |event_code| event_code.to_h }
387
387
  end
388
388
 
389
389
  it('should export the parameters ') do
390
- @info_hash[ RCAP::CAP_1_1::Info::PARAMETERS_KEY].should == @info.parameters.map { |parameter| parameter.to_h }
390
+ @info_hash[RCAP::CAP_1_1::Info::PARAMETERS_KEY].should == @info.parameters.map { |parameter| parameter.to_h }
391
391
  end
392
392
 
393
393
  it('should export the resources ') do
394
- @info_hash[ RCAP::CAP_1_1::Info::RESOURCES_KEY].should == @info.resources.map { |resource| resource.to_h }
394
+ @info_hash[RCAP::CAP_1_1::Info::RESOURCES_KEY].should == @info.resources.map { |resource| resource.to_h }
395
395
  end
396
396
 
397
397
  it('should export the areas') do
398
- @info_hash[ RCAP::CAP_1_1::Info::AREAS_KEY].should == @info.areas.map { |area| area.to_h }
398
+ @info_hash[RCAP::CAP_1_1::Info::AREAS_KEY].should == @info.areas.map { |area| area.to_h }
399
399
  end
400
400
  end
401
401
  end