rcap 2.4.1 → 2.7.3
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.
- checksums.yaml +5 -5
- data/.ruby-version +1 -0
- data/CHANGELOG.md +18 -0
- data/README.md +1 -0
- data/lib/rcap.rb +3 -1
- data/lib/rcap/alert.rb +30 -29
- data/lib/rcap/base/alert.rb +208 -205
- data/lib/rcap/base/area.rb +95 -91
- data/lib/rcap/base/circle.rb +45 -34
- data/lib/rcap/base/event_code.rb +2 -0
- data/lib/rcap/base/geocode.rb +2 -0
- data/lib/rcap/base/info.rb +273 -272
- data/lib/rcap/base/parameter.rb +29 -28
- data/lib/rcap/base/point.rb +26 -24
- data/lib/rcap/base/polygon.rb +43 -35
- data/lib/rcap/base/resource.rb +65 -65
- data/lib/rcap/cap_1_0/alert.rb +85 -86
- data/lib/rcap/cap_1_0/area.rb +2 -2
- data/lib/rcap/cap_1_0/circle.rb +2 -1
- data/lib/rcap/cap_1_0/event_code.rb +3 -1
- data/lib/rcap/cap_1_0/geocode.rb +3 -1
- data/lib/rcap/cap_1_0/info.rb +3 -3
- data/lib/rcap/cap_1_0/parameter.rb +13 -13
- data/lib/rcap/cap_1_0/point.rb +2 -1
- data/lib/rcap/cap_1_0/polygon.rb +3 -3
- data/lib/rcap/cap_1_0/resource.rb +2 -3
- data/lib/rcap/cap_1_1/alert.rb +6 -6
- data/lib/rcap/cap_1_1/area.rb +2 -2
- data/lib/rcap/cap_1_1/circle.rb +2 -1
- data/lib/rcap/cap_1_1/event_code.rb +3 -1
- data/lib/rcap/cap_1_1/geocode.rb +3 -1
- data/lib/rcap/cap_1_1/info.rb +125 -132
- data/lib/rcap/cap_1_1/parameter.rb +2 -3
- data/lib/rcap/cap_1_1/point.rb +2 -1
- data/lib/rcap/cap_1_1/polygon.rb +3 -3
- data/lib/rcap/cap_1_1/resource.rb +37 -38
- data/lib/rcap/cap_1_2/alert.rb +6 -6
- data/lib/rcap/cap_1_2/area.rb +2 -2
- data/lib/rcap/cap_1_2/circle.rb +2 -1
- data/lib/rcap/cap_1_2/event_code.rb +3 -1
- data/lib/rcap/cap_1_2/geocode.rb +3 -1
- data/lib/rcap/cap_1_2/info.rb +120 -123
- data/lib/rcap/cap_1_2/parameter.rb +2 -3
- data/lib/rcap/cap_1_2/point.rb +2 -1
- data/lib/rcap/cap_1_2/polygon.rb +4 -4
- data/lib/rcap/cap_1_2/resource.rb +38 -38
- data/lib/rcap/config.rb +5 -3
- data/lib/rcap/custom_validators.rb +75 -78
- data/lib/rcap/extensions/array.rb +3 -1
- data/lib/rcap/extensions/date.rb +3 -1
- data/lib/rcap/extensions/date_time.rb +5 -2
- data/lib/rcap/extensions/float.rb +2 -0
- data/lib/rcap/extensions/integer.rb +7 -0
- data/lib/rcap/extensions/nil_class.rb +2 -0
- data/lib/rcap/extensions/string.rb +6 -4
- data/lib/rcap/extensions/time.rb +5 -3
- data/lib/rcap/formatters/yaml.rb +5 -0
- data/lib/rcap/info.rb +6 -5
- data/lib/rcap/utilities.rb +27 -30
- data/lib/rcap/validation.rb +22 -21
- data/lib/rcap/version.rb +3 -1
- data/rcap.gemspec +5 -5
- data/spec/alert_spec.rb +141 -141
- data/spec/cap_1_0/alert_spec.rb +92 -94
- data/spec/cap_1_0/area_spec.rb +86 -86
- data/spec/cap_1_0/circle_spec.rb +48 -39
- data/spec/cap_1_0/event_code_spec.rb +15 -15
- data/spec/cap_1_0/geocode_spec.rb +16 -16
- data/spec/cap_1_0/info_spec.rb +175 -177
- data/spec/cap_1_0/parameter_spec.rb +27 -27
- data/spec/cap_1_0/point_spec.rb +18 -18
- data/spec/cap_1_0/polygon_spec.rb +43 -41
- data/spec/cap_1_0/resource_spec.rb +63 -64
- data/spec/cap_1_1/alert_spec.rb +107 -109
- data/spec/cap_1_1/area_spec.rb +90 -90
- data/spec/cap_1_1/circle_spec.rb +43 -34
- data/spec/cap_1_1/event_code_spec.rb +15 -16
- data/spec/cap_1_1/geocode_spec.rb +16 -16
- data/spec/cap_1_1/info_spec.rb +194 -196
- data/spec/cap_1_1/parameter_spec.rb +17 -17
- data/spec/cap_1_1/point_spec.rb +18 -18
- data/spec/cap_1_1/polygon_spec.rb +43 -41
- data/spec/cap_1_1/resource_spec.rb +106 -107
- data/spec/cap_1_2/alert_spec.rb +98 -99
- data/spec/cap_1_2/area_spec.rb +90 -90
- data/spec/cap_1_2/circle_spec.rb +52 -43
- data/spec/cap_1_2/event_code_spec.rb +19 -20
- data/spec/cap_1_2/geocode_spec.rb +20 -20
- data/spec/cap_1_2/info_spec.rb +196 -198
- data/spec/cap_1_2/parameter_spec.rb +19 -19
- data/spec/cap_1_2/point_spec.rb +21 -21
- data/spec/cap_1_2/polygon_spec.rb +55 -47
- data/spec/cap_1_2/resource_spec.rb +96 -97
- data/spec/extensions_spec.rb +29 -29
- data/spec/info_spec.rb +15 -15
- data/spec/spec_helper.rb +3 -3
- data/spec/validations_spec.rb +73 -73
- metadata +12 -11
- data/lib/rcap/extensions/fixnum.rb +0 -5
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe(
|
4
|
-
context(
|
5
|
-
context(
|
6
|
-
before(
|
3
|
+
describe(RCAP::CAP_1_0::Parameter) do
|
4
|
+
context('when initialised') do
|
5
|
+
context('from XML') do
|
6
|
+
before(:each) do
|
7
7
|
@original_parameter = RCAP::CAP_1_0::Parameter.new do |parameter|
|
8
8
|
parameter.name = 'name'
|
9
9
|
parameter.value = 'value'
|
@@ -11,74 +11,74 @@ describe( RCAP::CAP_1_0::Parameter ) do
|
|
11
11
|
@alert = RCAP::CAP_1_0::Alert.new
|
12
12
|
@alert.add_info.parameters << @original_parameter
|
13
13
|
@xml_string = @alert.to_xml
|
14
|
-
@xml_document = REXML::Document.new(
|
15
|
-
@info_xml_element = RCAP.xpath_first(
|
16
|
-
@parameter_xml_element = RCAP.xpath_first(
|
17
|
-
@parameter = RCAP::CAP_1_0::Parameter.from_xml_element(
|
14
|
+
@xml_document = REXML::Document.new(@xml_string)
|
15
|
+
@info_xml_element = RCAP.xpath_first(@xml_document.root, RCAP::CAP_1_0::Info::XPATH, RCAP::CAP_1_0::Alert::XMLNS)
|
16
|
+
@parameter_xml_element = RCAP.xpath_first(@info_xml_element, RCAP::CAP_1_0::Parameter::XPATH, RCAP::CAP_1_0::Alert::XMLNS)
|
17
|
+
@parameter = RCAP::CAP_1_0::Parameter.from_xml_element(@parameter_xml_element)
|
18
18
|
end
|
19
19
|
|
20
|
-
it(
|
20
|
+
it('should parse into the correct class') do
|
21
21
|
@parameter.class.should == RCAP::CAP_1_0::Parameter
|
22
22
|
end
|
23
23
|
|
24
|
-
it(
|
24
|
+
it('should parse the name correctly') do
|
25
25
|
@parameter.name.should == @original_parameter.name
|
26
26
|
end
|
27
27
|
|
28
|
-
it(
|
28
|
+
it('should parse the value correctly') do
|
29
29
|
@parameter.value.should == @original_parameter.value
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
context(
|
35
|
-
before(
|
34
|
+
context('when exported') do
|
35
|
+
before(:each) do
|
36
36
|
@parameter = RCAP::CAP_1_0::Parameter.new do |parameter|
|
37
37
|
parameter.name = 'name'
|
38
38
|
parameter.value = 'value'
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
context(
|
43
|
-
it(
|
42
|
+
context('to a hash') do
|
43
|
+
it('should export correctly') do
|
44
44
|
@parameter.to_h.should == { 'name' => 'value' }
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
describe(
|
50
|
-
it(
|
51
|
-
RCAP::CAP_1_0::Parameter.parse_parameter(
|
49
|
+
describe('.parse_parameter') do
|
50
|
+
it('should parse valid content correctly') do
|
51
|
+
RCAP::CAP_1_0::Parameter.parse_parameter('name=value').should == { name: 'name', value: 'value' }
|
52
52
|
end
|
53
53
|
|
54
|
-
it(
|
55
|
-
RCAP::CAP_1_0::Parameter.parse_parameter(
|
54
|
+
it('should parse invalid content correctly') do
|
55
|
+
RCAP::CAP_1_0::Parameter.parse_parameter('name').should.nil?
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
describe(
|
60
|
-
before(
|
59
|
+
describe('.to_xml_element') do
|
60
|
+
before(:each) do
|
61
61
|
@parameter = RCAP::CAP_1_0::Parameter.new do |parameter|
|
62
62
|
parameter.name = 'name'
|
63
63
|
parameter.value = 'value'
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
it(
|
67
|
+
it('should generate an XML element correctly') do
|
68
68
|
@parameter.to_xml_element.text.should == 'name=value'
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
describe(
|
73
|
-
before(
|
72
|
+
describe('.from_xml_element') do
|
73
|
+
before(:each) do
|
74
74
|
@parameter = RCAP::CAP_1_0::Parameter.new do |parameter|
|
75
75
|
parameter.name = 'name'
|
76
76
|
parameter.value = 'value'
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
-
it(
|
81
|
-
parameter = RCAP::CAP_1_0::Parameter.from_xml_element(
|
80
|
+
it('should initialise correctly') do
|
81
|
+
parameter = RCAP::CAP_1_0::Parameter.from_xml_element(@parameter.to_xml_element)
|
82
82
|
parameter.name.should == @parameter.name
|
83
83
|
parameter.value.should == @parameter.value
|
84
84
|
end
|
data/spec/cap_1_0/point_spec.rb
CHANGED
@@ -1,51 +1,51 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe(
|
4
|
-
describe(
|
5
|
-
before(
|
3
|
+
describe(RCAP::CAP_1_0::Point) do
|
4
|
+
describe('is not valid if') do
|
5
|
+
before(:each) do
|
6
6
|
@point = RCAP::CAP_1_0::Point.new do |point|
|
7
7
|
point.lattitude = 0
|
8
8
|
point.longitude = 0
|
9
9
|
end
|
10
10
|
|
11
|
-
@point.should(
|
11
|
+
@point.should(be_valid)
|
12
12
|
end
|
13
13
|
|
14
|
-
it(
|
14
|
+
it('does not have a longitude defined') do
|
15
15
|
@point.longitude = nil
|
16
|
-
@point.should_not(
|
16
|
+
@point.should_not(be_valid)
|
17
17
|
end
|
18
18
|
|
19
|
-
it(
|
19
|
+
it('does not have a valid longitude') do
|
20
20
|
@point.longitude = RCAP::CAP_1_0::Point::MAX_LONGITUDE + 1
|
21
|
-
@point.should_not(
|
21
|
+
@point.should_not(be_valid)
|
22
22
|
@point.longitude = RCAP::CAP_1_0::Point::MIN_LONGITUDE - 1
|
23
|
-
@point.should_not(
|
23
|
+
@point.should_not(be_valid)
|
24
24
|
end
|
25
25
|
|
26
|
-
it(
|
26
|
+
it('does not have a lattitude defined') do
|
27
27
|
@point.lattitude = nil
|
28
|
-
@point.should_not(
|
28
|
+
@point.should_not(be_valid)
|
29
29
|
end
|
30
30
|
|
31
|
-
it(
|
31
|
+
it('does not have a valid lattitude') do
|
32
32
|
@point.lattitude = RCAP::CAP_1_0::Point::MAX_LATTITUDE + 1
|
33
|
-
@point.should_not(
|
33
|
+
@point.should_not(be_valid)
|
34
34
|
@point.lattitude = RCAP::CAP_1_0::Point::MIN_LATTITUDE - 1
|
35
|
-
@point.should_not(
|
35
|
+
@point.should_not(be_valid)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
context(
|
40
|
-
before(
|
39
|
+
context('when exported') do
|
40
|
+
before(:each) do
|
41
41
|
@point = RCAP::CAP_1_0::Point.new do |p|
|
42
42
|
p.lattitude = 1
|
43
43
|
p.longitude = 1
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
context(
|
48
|
-
it(
|
47
|
+
context('to hash') do
|
48
|
+
it('should export correctly') do
|
49
49
|
@point.to_h.should == { RCAP::CAP_1_0::Point::LATTITUDE_KEY => 1, RCAP::CAP_1_0::Point::LONGITUDE_KEY => 1 }
|
50
50
|
end
|
51
51
|
end
|
@@ -1,33 +1,28 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe(
|
4
|
-
describe(
|
5
|
-
before(
|
3
|
+
describe(RCAP::CAP_1_0::Polygon) do
|
4
|
+
describe('is not valid if it') do
|
5
|
+
before(:each) do
|
6
6
|
@polygon = RCAP::CAP_1_0::Polygon.new do |polygon|
|
7
|
-
[1,2,1].each do |i|
|
7
|
+
[1, 2, 1].each do |i|
|
8
8
|
polygon.add_point do |point|
|
9
9
|
point.lattitude = i
|
10
10
|
point.longitude = i
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
14
|
-
@polygon.should(
|
14
|
+
@polygon.should(be_valid)
|
15
15
|
end
|
16
16
|
|
17
|
-
it(
|
18
|
-
@polygon.points.clear
|
19
|
-
@polygon.should_not( be_valid )
|
20
|
-
end
|
21
|
-
|
22
|
-
it( 'does not have a valid collection of points' ) do
|
17
|
+
it('does not have a valid collection of points') do
|
23
18
|
@polygon.points.first.lattitude = nil
|
24
|
-
@polygon.should_not(
|
19
|
+
@polygon.should_not(be_valid)
|
25
20
|
end
|
26
21
|
end
|
27
22
|
|
28
|
-
context(
|
29
|
-
context(
|
30
|
-
before(
|
23
|
+
context('on initialization') do
|
24
|
+
context('from XML') do
|
25
|
+
before(:each) do
|
31
26
|
@original_polygon = RCAP::CAP_1_0::Polygon.new do |polygon|
|
32
27
|
3.times do |i|
|
33
28
|
polygon.add_point do |point|
|
@@ -36,11 +31,11 @@ describe( RCAP::CAP_1_0::Polygon ) do
|
|
36
31
|
end
|
37
32
|
end
|
38
33
|
end
|
39
|
-
@empty_original_polygon = RCAP::CAP_1_0::Polygon.new
|
34
|
+
@empty_original_polygon = RCAP::CAP_1_0::Polygon.new
|
40
35
|
@alert = RCAP::CAP_1_0::Alert.new
|
41
36
|
@alert.add_info do |info|
|
42
37
|
info.add_area do |area|
|
43
|
-
[
|
38
|
+
[@original_polygon, @empty_original_polygon].each do |original_polygon|
|
44
39
|
area.add_polygon do |polygon|
|
45
40
|
original_polygon.points.each do |original_point|
|
46
41
|
polygon.add_point do |point|
|
@@ -54,29 +49,29 @@ describe( RCAP::CAP_1_0::Polygon ) do
|
|
54
49
|
end
|
55
50
|
|
56
51
|
@xml_string = @alert.to_xml
|
57
|
-
@xml_document = REXML::Document.new(
|
58
|
-
@info_element = RCAP.xpath_first(
|
59
|
-
@area_element = RCAP.xpath_first(
|
60
|
-
@polygon_element = RCAP.xpath_first(
|
61
|
-
@polygon = RCAP::CAP_1_0::Polygon.from_xml_element(
|
52
|
+
@xml_document = REXML::Document.new(@xml_string)
|
53
|
+
@info_element = RCAP.xpath_first(@xml_document.root, RCAP::CAP_1_0::Info::XPATH, RCAP::CAP_1_0::Alert::XMLNS)
|
54
|
+
@area_element = RCAP.xpath_first(@info_element, RCAP::CAP_1_0::Area::XPATH, RCAP::CAP_1_0::Alert::XMLNS)
|
55
|
+
@polygon_element = RCAP.xpath_first(@area_element, RCAP::CAP_1_0::Polygon::XPATH, RCAP::CAP_1_0::Alert::XMLNS)
|
56
|
+
@polygon = RCAP::CAP_1_0::Polygon.from_xml_element(@polygon_element)
|
62
57
|
end
|
63
58
|
|
64
|
-
it(
|
65
|
-
@polygon.points.zip(
|
59
|
+
it('should parse all the points') do
|
60
|
+
@polygon.points.zip(@original_polygon.points).each do |point, original_point|
|
66
61
|
point.lattitude.should == original_point.lattitude
|
67
62
|
point.longitude.should == original_point.longitude
|
68
63
|
end
|
69
64
|
end
|
70
65
|
|
71
66
|
it 'should allow empty polygon xml elements' do
|
72
|
-
empty_polygon_element = RCAP.xpath_match(
|
73
|
-
empty_polygon = RCAP::CAP_1_0::Polygon.from_xml_element(
|
67
|
+
empty_polygon_element = RCAP.xpath_match(@area_element, RCAP::CAP_1_0::Polygon::XPATH, RCAP::CAP_1_0::Alert::XMLNS)[1]
|
68
|
+
empty_polygon = RCAP::CAP_1_0::Polygon.from_xml_element(empty_polygon_element)
|
74
69
|
empty_polygon.should == @empty_original_polygon
|
75
70
|
end
|
76
71
|
end
|
77
72
|
|
78
|
-
context(
|
79
|
-
before(
|
73
|
+
context('from a hash') do
|
74
|
+
before(:each) do
|
80
75
|
@polygon = RCAP::CAP_1_0::Polygon.new do |polygon|
|
81
76
|
3.times do |i|
|
82
77
|
polygon.add_point do |point|
|
@@ -87,15 +82,15 @@ describe( RCAP::CAP_1_0::Polygon ) do
|
|
87
82
|
end
|
88
83
|
end
|
89
84
|
|
90
|
-
it(
|
91
|
-
@new_polygon = RCAP::CAP_1_0::Polygon.from_h(
|
85
|
+
it('should load all the points') do
|
86
|
+
@new_polygon = RCAP::CAP_1_0::Polygon.from_h(@polygon.to_h)
|
92
87
|
@new_polygon.points.should == @polygon.points
|
93
88
|
end
|
94
89
|
end
|
95
90
|
end
|
96
91
|
|
97
|
-
context(
|
98
|
-
before(
|
92
|
+
context('when exported') do
|
93
|
+
before(:each) do
|
99
94
|
@polygon = RCAP::CAP_1_0::Polygon.new do |polygon|
|
100
95
|
3.times do |i|
|
101
96
|
polygon.add_point do |point|
|
@@ -106,33 +101,40 @@ describe( RCAP::CAP_1_0::Polygon ) do
|
|
106
101
|
end
|
107
102
|
end
|
108
103
|
|
109
|
-
context(
|
110
|
-
it(
|
111
|
-
|
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
|
+
|
111
|
+
context('to a hash') do
|
112
|
+
it('should export correctly') do
|
113
|
+
@polygon.to_h.should == { RCAP::CAP_1_0::Polygon::POINTS_KEY => @polygon.points.map { |point| point.to_a } }
|
112
114
|
end
|
113
115
|
end
|
114
116
|
end
|
115
117
|
|
116
|
-
describe(
|
117
|
-
before(
|
118
|
+
describe('instance methods') do
|
119
|
+
before(:each) do
|
118
120
|
@polygon = RCAP::CAP_1_0::Polygon.new
|
119
121
|
end
|
120
122
|
|
121
|
-
describe(
|
122
|
-
before(
|
123
|
+
describe('#add_point') do
|
124
|
+
before(:each) do
|
123
125
|
@point = @polygon.add_point do |polygon|
|
124
126
|
polygon.lattitude = 1
|
125
127
|
polygon.longitude = 1
|
126
128
|
end
|
127
129
|
end
|
128
130
|
|
129
|
-
it(
|
131
|
+
it('should return a 1.0 Point') do
|
130
132
|
@point.class.should == RCAP::CAP_1_0::Point
|
131
133
|
@point.lattitude.should == 1
|
132
134
|
@point.longitude.should == 1
|
133
135
|
end
|
134
136
|
|
135
|
-
it(
|
137
|
+
it('should add a Point to the points attribute') do
|
136
138
|
@polygon.points.size.should == 1
|
137
139
|
end
|
138
140
|
end
|
@@ -1,152 +1,151 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe(
|
4
|
-
context(
|
5
|
-
before(
|
3
|
+
describe(RCAP::CAP_1_0::Resource) do
|
4
|
+
context('on initialisation') do
|
5
|
+
before(:each) do
|
6
6
|
@resource = RCAP::CAP_1_0::Resource.new
|
7
7
|
end
|
8
8
|
|
9
|
-
it(
|
10
|
-
it(
|
11
|
-
it(
|
12
|
-
it(
|
13
|
-
it(
|
9
|
+
it('should have no mime_type') { @resource.mime_type.should(be_nil) }
|
10
|
+
it('should have no size') { @resource.size.should(be_nil) }
|
11
|
+
it('should have no uri') { @resource.uri.should(be_nil) }
|
12
|
+
it('should have no digest') { @resource.digest.should(be_nil) }
|
13
|
+
it('should have no resource_desc') { @resource.resource_desc.should(be_nil) }
|
14
14
|
|
15
|
-
context(
|
16
|
-
before(
|
15
|
+
context('from XML') do
|
16
|
+
before(:each) do
|
17
17
|
@original_resource = RCAP::CAP_1_0::Resource.new do |resource|
|
18
|
-
resource.resource_desc =
|
19
|
-
resource.uri =
|
18
|
+
resource.resource_desc = 'Image of incident'
|
19
|
+
resource.uri = 'http://capetown.gov.za/cap/resources/image.png'
|
20
20
|
resource.mime_type = 'image/png'
|
21
|
-
resource.size =
|
22
|
-
resource.digest =
|
21
|
+
resource.size = 20_480
|
22
|
+
resource.digest = '2048'
|
23
23
|
end
|
24
24
|
|
25
25
|
@alert = RCAP::CAP_1_0::Alert.new
|
26
26
|
@alert.add_info.resources << @original_resource
|
27
27
|
@xml_string = @alert.to_xml
|
28
|
-
@xml_document = REXML::Document.new(
|
29
|
-
@info_element = RCAP.xpath_first(
|
30
|
-
@resource_element = RCAP.xpath_first(
|
31
|
-
@resource_element.should_not(
|
32
|
-
@resource = RCAP::CAP_1_0::Resource.from_xml_element(
|
28
|
+
@xml_document = REXML::Document.new(@xml_string)
|
29
|
+
@info_element = RCAP.xpath_first(@xml_document.root, RCAP::CAP_1_0::Info::XPATH, RCAP::CAP_1_0::Alert::XMLNS)
|
30
|
+
@resource_element = RCAP.xpath_first(@info_element, RCAP::CAP_1_0::Resource::XPATH, RCAP::CAP_1_0::Alert::XMLNS)
|
31
|
+
@resource_element.should_not(be_nil)
|
32
|
+
@resource = RCAP::CAP_1_0::Resource.from_xml_element(@resource_element)
|
33
33
|
end
|
34
34
|
|
35
|
-
it(
|
35
|
+
it('should parse resource_desc correctly') do
|
36
36
|
@resource.resource_desc.should == @original_resource.resource_desc
|
37
37
|
end
|
38
38
|
|
39
|
-
it(
|
39
|
+
it('should parse uri correctly') do
|
40
40
|
@resource.uri.should == @original_resource.uri
|
41
41
|
end
|
42
42
|
|
43
|
-
it(
|
43
|
+
it('should parse mime_type correctly') do
|
44
44
|
@resource.mime_type.should == @original_resource.mime_type
|
45
45
|
end
|
46
46
|
|
47
|
-
it(
|
47
|
+
it('should parse size correctly') do
|
48
48
|
@resource.size.should == @original_resource.size
|
49
49
|
end
|
50
50
|
|
51
|
-
it(
|
51
|
+
it('should parse digest correctly') do
|
52
52
|
@resource.digest.should == @original_resource.digest
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
|
57
|
-
|
58
|
-
before( :each ) do
|
56
|
+
context('from a hash') do
|
57
|
+
before(:each) do
|
59
58
|
@original_resource = RCAP::CAP_1_0::Resource.new do |resource|
|
60
|
-
resource.resource_desc =
|
61
|
-
resource.uri =
|
59
|
+
resource.resource_desc = 'Image of incident'
|
60
|
+
resource.uri = 'http://capetown.gov.za/cap/resources/image.png'
|
62
61
|
resource.mime_type = 'image/png'
|
63
|
-
resource.size =
|
64
|
-
resource.digest =
|
62
|
+
resource.size = 20_480
|
63
|
+
resource.digest = '2048'
|
65
64
|
end
|
66
65
|
|
67
|
-
@resource = RCAP::CAP_1_0::Resource.from_h(
|
66
|
+
@resource = RCAP::CAP_1_0::Resource.from_h(@original_resource.to_h)
|
68
67
|
end
|
69
68
|
|
70
|
-
it(
|
69
|
+
it('should parse resource_desc correctly') do
|
71
70
|
@resource.resource_desc.should == @original_resource.resource_desc
|
72
71
|
end
|
73
72
|
|
74
|
-
it(
|
73
|
+
it('should parse uri correctly') do
|
75
74
|
@resource.uri.should == @original_resource.uri
|
76
75
|
end
|
77
76
|
|
78
|
-
it(
|
77
|
+
it('should parse mime_type correctly') do
|
79
78
|
@resource.mime_type.should == @original_resource.mime_type
|
80
79
|
end
|
81
80
|
|
82
|
-
it(
|
81
|
+
it('should parse size correctly') do
|
83
82
|
@resource.size.should == @original_resource.size
|
84
83
|
end
|
85
84
|
|
86
|
-
it(
|
85
|
+
it('should parse digest correctly') do
|
87
86
|
@resource.digest.should == @original_resource.digest
|
88
87
|
end
|
89
88
|
end
|
90
89
|
|
91
90
|
end
|
92
91
|
|
93
|
-
context(
|
94
|
-
before(
|
92
|
+
context('when exported') do
|
93
|
+
before(:each) do
|
95
94
|
@resource = RCAP::CAP_1_0::Resource.new do |resource|
|
96
|
-
resource.resource_desc =
|
97
|
-
resource.uri =
|
95
|
+
resource.resource_desc = 'Image of incident'
|
96
|
+
resource.uri = 'http://capetown.gov.za/cap/resources/image.png'
|
98
97
|
resource.mime_type = 'image/png'
|
99
|
-
resource.size =
|
100
|
-
resource.digest =
|
98
|
+
resource.size = 20_480
|
99
|
+
resource.digest = '2048'
|
101
100
|
end
|
102
101
|
end
|
103
102
|
|
104
|
-
context(
|
105
|
-
before(
|
103
|
+
context('to a hash') do
|
104
|
+
before(:each) do
|
106
105
|
@resource_hash = @resource.to_h
|
107
106
|
end
|
108
107
|
|
109
|
-
it(
|
110
|
-
@resource_hash[ RCAP::CAP_1_0::Resource::RESOURCE_DESC_KEY
|
108
|
+
it('should set the resource description') do
|
109
|
+
@resource_hash[ RCAP::CAP_1_0::Resource::RESOURCE_DESC_KEY].should == @resource.resource_desc
|
111
110
|
end
|
112
111
|
|
113
|
-
it(
|
114
|
-
@resource_hash[ RCAP::CAP_1_0::Resource::MIME_TYPE_KEY
|
112
|
+
it('should set the mime type') do
|
113
|
+
@resource_hash[ RCAP::CAP_1_0::Resource::MIME_TYPE_KEY].should == @resource.mime_type
|
115
114
|
end
|
116
115
|
|
117
|
-
it(
|
118
|
-
@resource_hash[ RCAP::CAP_1_0::Resource::SIZE_KEY
|
116
|
+
it('should set the size') do
|
117
|
+
@resource_hash[ RCAP::CAP_1_0::Resource::SIZE_KEY].should == @resource.size
|
119
118
|
end
|
120
119
|
|
121
|
-
it(
|
122
|
-
@resource_hash[ RCAP::CAP_1_0::Resource::URI_KEY
|
120
|
+
it('should set the URI') do
|
121
|
+
@resource_hash[ RCAP::CAP_1_0::Resource::URI_KEY].should == @resource.uri
|
123
122
|
end
|
124
123
|
|
125
|
-
it(
|
126
|
-
@resource_hash[ RCAP::CAP_1_0::Resource::DIGEST_KEY
|
124
|
+
it('should set the digest') do
|
125
|
+
@resource_hash[ RCAP::CAP_1_0::Resource::DIGEST_KEY].should == @resource.digest
|
127
126
|
end
|
128
127
|
end
|
129
128
|
|
130
|
-
context(
|
131
|
-
it(
|
132
|
-
lambda{ @resource_xml = @resource.to_xml }.should_not(
|
129
|
+
context('to xml') do
|
130
|
+
it('should be successful') do
|
131
|
+
lambda { @resource_xml = @resource.to_xml }.should_not(raise_exception)
|
133
132
|
end
|
134
133
|
end
|
135
134
|
end
|
136
135
|
|
137
|
-
context(
|
138
|
-
before(
|
136
|
+
context('which is valid') do
|
137
|
+
before(:each) do
|
139
138
|
@resource = RCAP::CAP_1_0::Resource.new do |resource|
|
140
139
|
resource.resource_desc = 'Resource Description'
|
141
140
|
end
|
142
141
|
|
143
|
-
@resource.should(
|
142
|
+
@resource.should(be_valid)
|
144
143
|
end
|
145
144
|
|
146
|
-
describe(
|
147
|
-
it(
|
145
|
+
describe('should not be valid if it') do
|
146
|
+
it('does not have a resource description (resource_desc)') do
|
148
147
|
@resource.resource_desc = nil
|
149
|
-
@resource.should_not(
|
148
|
+
@resource.should_not(be_valid)
|
150
149
|
end
|
151
150
|
end
|
152
151
|
end
|