rsmp_schemer 0.3.1 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +10 -9
  3. data/lib/rsmp_schemer/version.rb +1 -1
  4. data/rsmp_schemer.gemspec +1 -1
  5. data/schemas/core_3.1.2/schema/core/alarm.json +8 -4
  6. data/schemas/core_3.1.2/spec/core/alarm_spec.rb +15 -0
  7. data/schemas/core_3.1.4/.gitignore +1 -0
  8. data/schemas/core_3.1.4/schema/core/alarm.json +8 -4
  9. data/schemas/core_3.1.4/spec/core/alarm_spec.rb +15 -0
  10. data/schemas/core_3.1.4/spec/core/version_spec.rb +3 -2
  11. data/schemas/core_3.1.5/.gitignore +1 -0
  12. data/schemas/core_3.1.5/schema/core/alarm.json +40 -41
  13. data/schemas/core_3.1.5/schema/core/alarm_issue.json +44 -0
  14. data/schemas/core_3.1.5/schema/core/alarm_suspend_resume.json +3 -0
  15. data/schemas/core_3.1.5/schema/core/alarm_suspended_resumed.json +47 -0
  16. data/schemas/core_3.1.5/schema/core/command_response.json +1 -1
  17. data/schemas/core_3.1.5/schema/core/status_response.json +1 -1
  18. data/schemas/core_3.1.5/schema/core/status_update.json +1 -1
  19. data/schemas/core_3.1.5/spec/core/alarm_issue_spec.rb +299 -0
  20. data/schemas/core_3.1.5/spec/core/alarm_resume_spec.rb +93 -0
  21. data/schemas/core_3.1.5/spec/core/alarm_resumed_spec.rb +277 -0
  22. data/schemas/core_3.1.5/spec/core/alarm_suspend_spec.rb +93 -0
  23. data/schemas/core_3.1.5/spec/core/alarm_suspended_spec.rb +277 -0
  24. data/schemas/core_3.1.5/spec/core/version_spec.rb +3 -2
  25. data/schemas/tlc_1.0.13/schema/tlc/statuses/S0023.json +1 -1
  26. data/schemas/tlc_1.0.13/spec/tlc/S0023_spec.rb +96 -0
  27. data/schemas/tlc_1.0.14/schema/tlc/statuses/S0023.json +1 -1
  28. data/schemas/tlc_1.0.14/spec/tlc/S0023_spec.rb +96 -0
  29. data/schemas/tlc_1.0.15/schema/tlc/statuses/S0023.json +1 -1
  30. data/schemas/tlc_1.0.15/spec/tlc/S0023_spec.rb +96 -0
  31. metadata +18 -11
  32. data/schemas/core_3.1.2/examples/validate.rb +0 -35
  33. data/schemas/core_3.1.4/examples/validate.rb +0 -35
  34. data/schemas/core_3.1.4/spec/core/alarm_request_spec.rb +0 -72
  35. data/schemas/core_3.1.5/examples/validate.rb +0 -35
  36. data/schemas/core_3.1.5/spec/core/alarm_request_spec.rb +0 -72
  37. data/schemas/core_3.1.5/spec/core/alarm_spec.rb +0 -298
@@ -0,0 +1,299 @@
1
+ RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
2
+ describe 'Alarm Issue' do
3
+ let(:message) {{
4
+ "mType" => "rSMsg",
5
+ "type" => "Alarm",
6
+ "mId" => "E68A0010-C336-41ac-BD58-5C80A72C7092",
7
+ "cId" => "AB+84001=860SG001",
8
+ "aCId" => "A0001",
9
+ "xACId" => "Serious lamp error",
10
+ "aSp" => "Issue",
11
+ "ack" => "notAcknowledged",
12
+ "aS" => "Active",
13
+ "sS" => "notSuspended",
14
+ "aTs" => "2009-10-01T11:59:31.571Z",
15
+ "cat" => "D",
16
+ "pri" => "2",
17
+ "rvs" => [
18
+ {
19
+ "n" => "color",
20
+ "v" => "red"
21
+ }
22
+ ]
23
+ }}
24
+
25
+ it 'accepts valid alarm' do
26
+ expect( validate(message) ).to be_nil
27
+ end
28
+
29
+ it 'catches missing component id' do
30
+ invalid = message.dup
31
+ invalid.delete 'cId'
32
+ expect( validate(invalid) ).to eq([
33
+ ["", "required", {"missing_keys"=>["cId"]}]
34
+ ])
35
+ end
36
+
37
+ it 'catches missing alarm code id' do
38
+ invalid = message.dup
39
+ invalid.delete 'aCId'
40
+ expect( validate(invalid) ).to eq([
41
+ ["", "required", {"missing_keys"=>["aCId"]}]
42
+ ])
43
+ end
44
+
45
+ it 'catches bad alarm code id' do
46
+ invalid = message.dup
47
+ invalid['aCId'] = "001"
48
+ expect( validate(invalid) ).to eq([
49
+ ["/aCId", "pattern"]
50
+ ])
51
+ end
52
+
53
+ it 'catches wrong alarm code id type' do
54
+ invalid = message.dup
55
+ invalid['aCId'] = 123
56
+ expect( validate(invalid) ).to eq([
57
+ ["/aCId", "string"]
58
+ ])
59
+ end
60
+
61
+ it 'catches missing extended alarm code id' do
62
+ invalid = message.dup
63
+ invalid.delete 'xACId'
64
+ expect( validate(invalid) ).to eq([
65
+ ["", "required", {"missing_keys"=>["xACId"]}]
66
+ ])
67
+ end
68
+
69
+ it 'catches wrong extended alarm code id type' do
70
+ invalid = message.dup
71
+ invalid['xACId'] = 123
72
+ expect( validate(invalid) ).to eq([
73
+ ["/xACId", "string"]
74
+ ])
75
+ end
76
+
77
+ it 'catches missing specialization' do
78
+ invalid = message.dup
79
+ invalid.delete 'aSp'
80
+ expect( validate(invalid) ).to eq([
81
+ ["", "required", {"missing_keys"=>["aSp"]}]
82
+ ])
83
+ end
84
+
85
+ it 'catches bad specialization' do
86
+ invalid = message.dup
87
+ invalid['aSp'] = "Bad"
88
+ expect( validate(invalid) ).to eq([
89
+ ["/aSp", "enum"]
90
+ ])
91
+ end
92
+
93
+ it 'catches wrong specialization type' do
94
+ invalid = message.dup
95
+ invalid['aSp'] = 123
96
+ expect( validate(invalid) ).to eq([
97
+ ["/aSp", "enum"],
98
+ ["/aSp", "string"]
99
+ ])
100
+ end
101
+
102
+ it 'catches missing alarm active status' do
103
+ invalid = message.dup
104
+ invalid.delete 'aS'
105
+ expect( validate(invalid) ).to eq([
106
+ ["", "required", {"missing_keys"=>["aS"]}]
107
+ ])
108
+ end
109
+
110
+ it 'catches bad alarm active status' do
111
+ invalid = message.dup
112
+ invalid['aS'] = "Bad"
113
+ expect( validate(invalid) ).to eq([
114
+ ["/aS", "enum"]
115
+ ])
116
+ end
117
+
118
+ it 'catches wrong alarm active status' do
119
+ invalid = message.dup
120
+ invalid['aS'] = 123
121
+ expect( validate(invalid) ).to eq([
122
+ ["/aS", "enum"],
123
+ ["/aS", "string"]
124
+ ])
125
+ end
126
+
127
+ it 'catches missing alarm suspend status' do
128
+ invalid = message.dup
129
+ invalid.delete 'sS'
130
+ expect( validate(invalid) ).to eq([
131
+ ["", "required", {"missing_keys"=>["sS"]}]
132
+ ])
133
+ end
134
+
135
+ it 'catches bad alarm code id' do
136
+ invalid = message.dup
137
+ invalid['sS'] = "Bad"
138
+ expect( validate(invalid) ).to eq([
139
+ ["/sS", "enum"]
140
+ ])
141
+ end
142
+
143
+ it 'catches wrong alarm code id type' do
144
+ invalid = message.dup
145
+ invalid['sS'] = 123
146
+ expect( validate(invalid) ).to eq([
147
+ ["/sS", "enum"],
148
+ ["/sS", "string"]
149
+ ])
150
+ end
151
+
152
+ it 'catches missing alarm code id' do
153
+ invalid = message.dup
154
+ invalid.delete 'ack'
155
+ expect( validate(invalid) ).to eq([
156
+ ["", "required", {"missing_keys"=>["ack"]}]
157
+ ])
158
+ end
159
+
160
+ it 'catches bad alarm code id' do
161
+ invalid = message.dup
162
+ invalid['ack'] = "Bad"
163
+ expect( validate(invalid) ).to eq([
164
+ ["/ack", "enum"]
165
+ ])
166
+ end
167
+
168
+ it 'catches wrong alarm code id type' do
169
+ invalid = message.dup
170
+ invalid['ack'] = 123
171
+ expect( validate(invalid) ).to eq([
172
+ ["/ack", "enum"],
173
+ ["/ack", "string"]
174
+ ])
175
+ end
176
+
177
+ it 'catches missing category' do
178
+ invalid = message.dup
179
+ invalid.delete 'cat'
180
+ expect( validate(invalid) ).to eq([
181
+ ["", "required", {"missing_keys"=>["cat"]}]
182
+ ])
183
+ end
184
+
185
+ it 'catches bad category' do
186
+ invalid = message.dup
187
+ invalid['cat'] = "A"
188
+ expect( validate(invalid) ).to eq([
189
+ ["/cat", "enum"]
190
+ ])
191
+ end
192
+
193
+ it 'catches wrong category' do
194
+ invalid = message.dup
195
+ invalid['cat'] = 123
196
+ expect( validate(invalid) ).to eq([
197
+ ["/cat", "enum"],
198
+ ["/cat", "string"]
199
+ ])
200
+ end
201
+
202
+ it 'catches missing priority' do
203
+ invalid = message.dup
204
+ invalid.delete 'pri'
205
+ expect( validate(invalid) ).to eq([
206
+ ["", "required", {"missing_keys"=>["pri"]}]
207
+ ])
208
+ end
209
+
210
+ it 'catches bad priority' do
211
+ invalid = message.dup
212
+ invalid['pri'] = "4"
213
+ expect( validate(invalid) ).to eq([
214
+ ["/pri", "enum"]
215
+ ])
216
+ end
217
+
218
+ it 'catches wrong priority' do
219
+ invalid = message.dup
220
+ invalid['pri'] = 1
221
+ expect( validate(invalid) ).to eq([
222
+ ["/pri", "enum"],
223
+ ["/pri", "string"]
224
+ ])
225
+ end
226
+
227
+ it 'catches missing timestamp' do
228
+ invalid = message.dup
229
+ invalid.delete 'aTs'
230
+ expect( validate(invalid) ).to eq([
231
+ ["", "required", {"missing_keys"=>["aTs"]}]
232
+ ])
233
+ end
234
+
235
+ it 'catches bad timestamp' do
236
+ invalid = message.dup
237
+ invalid['aTs'] = "yesterday"
238
+ expect( validate(invalid) ).to eq([
239
+ ["/aTs", "pattern"]
240
+ ])
241
+ end
242
+
243
+ it 'catches wrong timestamp type' do
244
+ invalid = message.dup
245
+ invalid['aTs'] = 123
246
+ expect( validate(invalid) ).to eq([
247
+ ["/aTs", "string"]
248
+ ])
249
+ end
250
+
251
+ it 'catches missing rvs' do
252
+ invalid = message.dup
253
+ invalid.delete 'rvs'
254
+ expect( validate(invalid) ).to eq([
255
+ ["", "required", {"missing_keys"=>["rvs"]}]
256
+ ])
257
+ end
258
+
259
+ it 'catches bad rvs type' do
260
+ invalid = message.dup
261
+ invalid["rvs"] = {}
262
+ expect( validate(invalid) ).to eq([
263
+ ["/rvs", "array"]
264
+ ])
265
+ end
266
+
267
+ it 'catches missing alarm name' do
268
+ invalid = message.dup
269
+ invalid["rvs"].first.delete 'n'
270
+ expect( validate(invalid) ).to eq([
271
+ ["/rvs/0", "required", {"missing_keys"=>["n"]}]
272
+ ])
273
+ end
274
+
275
+ it 'catches bad alarm name' do
276
+ invalid = message.dup
277
+ invalid["rvs"].first['n'] = 3
278
+ expect( validate(invalid) ).to eq([
279
+ ["/rvs/0/n", "string"]
280
+ ])
281
+ end
282
+
283
+ it 'catches missing alarm value' do
284
+ invalid = message.dup
285
+ invalid["rvs"].first.delete 'v'
286
+ expect( validate(invalid) ).to eq([
287
+ ["/rvs/0", "required", {"missing_keys"=>["v"]}]
288
+ ])
289
+ end
290
+
291
+ it 'catches bad alarm value' do
292
+ invalid = message.dup
293
+ invalid["rvs"].first['v'] = 3
294
+ expect( validate(invalid) ).to eq([
295
+ ["/rvs/0/v", "string"]
296
+ ])
297
+ end
298
+ end
299
+ end
@@ -0,0 +1,93 @@
1
+ RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
2
+ describe 'Alarm Resume' do
3
+ let(:message) {{
4
+ "mType" => "rSMsg",
5
+ "type" => "Alarm",
6
+ "mId" => "2a744145-403a-423f-ba80-f38e283a778e",
7
+ "ntsOId" => "",
8
+ "xNId" => "",
9
+ "cId" => "AB+84001=860VA001",
10
+ "aCId" => "A0004",
11
+ "xACId" => "",
12
+ "xNACId" => "",
13
+ "aSp" => "Resume"
14
+ }}
15
+
16
+ it 'accepts valid alarm resume' do
17
+ expect( validate(message) ).to be_nil
18
+ end
19
+
20
+ it 'catches missing component id' do
21
+ invalid = message.dup
22
+ invalid.delete 'cId'
23
+ expect( validate(invalid) ).to eq([
24
+ ["", "required", {"missing_keys"=>["cId"]}]
25
+ ])
26
+ end
27
+
28
+ it 'catches missing alarm code id' do
29
+ invalid = message.dup
30
+ invalid.delete 'aCId'
31
+ expect( validate(invalid) ).to eq([
32
+ ["", "required", {"missing_keys"=>["aCId"]}]
33
+ ])
34
+ end
35
+
36
+ it 'catches bad alarm code id' do
37
+ invalid = message.dup
38
+ invalid['aCId'] = "001"
39
+ expect( validate(invalid) ).to eq([
40
+ ["/aCId", "pattern"]
41
+ ])
42
+ end
43
+
44
+ it 'catches wrong alarm code id type' do
45
+ invalid = message.dup
46
+ invalid['aCId'] = 123
47
+ expect( validate(invalid) ).to eq([
48
+ ["/aCId", "string"]
49
+ ])
50
+ end
51
+
52
+ it 'catches missing extended alarm code id' do
53
+ invalid = message.dup
54
+ invalid.delete 'xACId'
55
+ expect( validate(invalid) ).to eq([
56
+ ["", "required", {"missing_keys"=>["xACId"]}]
57
+ ])
58
+ end
59
+
60
+ it 'catches wrong extended alarm code id type' do
61
+ invalid = message.dup
62
+ invalid['xACId'] = 123
63
+ expect( validate(invalid) ).to eq([
64
+ ["/xACId", "string"]
65
+ ])
66
+ end
67
+
68
+ it 'catches missing specialization' do
69
+ invalid = message.dup
70
+ invalid.delete 'aSp'
71
+ expect( validate(invalid) ).to eq([
72
+ ["", "required", {"missing_keys"=>["aSp"]}]
73
+ ])
74
+ end
75
+
76
+ it 'catches bad specialization' do
77
+ invalid = message.dup
78
+ invalid['aSp'] = "Bad"
79
+ expect( validate(invalid) ).to eq([
80
+ ["/aSp", "enum"]
81
+ ])
82
+ end
83
+
84
+ it 'catches wrong specialization type' do
85
+ invalid = message.dup
86
+ invalid['aSp'] = 123
87
+ expect( validate(invalid) ).to eq([
88
+ ["/aSp", "enum"],
89
+ ["/aSp", "string"]
90
+ ])
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,277 @@
1
+ RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
2
+ describe 'Alarm Issue' do
3
+ let(:message) {{
4
+ "mType" => "rSMsg",
5
+ "type" => "Alarm",
6
+ "mId" => "2ea7edfc-8e3a-4765-85e7-db844c4702a0",
7
+ "ntsOId" => "",
8
+ "xNId" => "",
9
+ "cId" => "AB+84001=860VA001",
10
+ "aCId" => "A0004",
11
+ "xACId" => "",
12
+ "xNACId" => "",
13
+ "aSp" => "Suspend",
14
+ "ack" => "Acknowledged",
15
+ "aS" => "Active",
16
+ "sS" => "notSuspended",
17
+ "aTs" => "2015-05-29T08:56:25.390Z",
18
+ "cat" => "D",
19
+ "pri" => "3",
20
+ "rvs" => [
21
+ {
22
+ "n" => "Temp",
23
+ "v" => "-18.5"
24
+ }
25
+ ]
26
+ }}
27
+
28
+ it 'accepts valid alarm suspended' do
29
+ expect( validate(message) ).to be_nil
30
+ end
31
+
32
+ it 'catches missing component id' do
33
+ invalid = message.dup
34
+ invalid.delete 'cId'
35
+ expect( validate(invalid) ).to eq([
36
+ ["", "required", {"missing_keys"=>["cId"]}]
37
+ ])
38
+ end
39
+
40
+ it 'catches missing alarm code id' do
41
+ invalid = message.dup
42
+ invalid.delete 'aCId'
43
+ expect( validate(invalid) ).to eq([
44
+ ["", "required", {"missing_keys"=>["aCId"]}]
45
+ ])
46
+ end
47
+
48
+ it 'catches bad alarm code id' do
49
+ invalid = message.dup
50
+ invalid['aCId'] = "001"
51
+ expect( validate(invalid) ).to eq([
52
+ ["/aCId", "pattern"]
53
+ ])
54
+ end
55
+
56
+ it 'catches wrong alarm code id type' do
57
+ invalid = message.dup
58
+ invalid['aCId'] = 123
59
+ expect( validate(invalid) ).to eq([
60
+ ["/aCId", "string"]
61
+ ])
62
+ end
63
+
64
+ it 'catches missing extended alarm code id' do
65
+ invalid = message.dup
66
+ invalid.delete 'xACId'
67
+ expect( validate(invalid) ).to eq([
68
+ ["", "required", {"missing_keys"=>["xACId"]}]
69
+ ])
70
+ end
71
+
72
+ it 'catches wrong extended alarm code id type' do
73
+ invalid = message.dup
74
+ invalid['xACId'] = 123
75
+ expect( validate(invalid) ).to eq([
76
+ ["/xACId", "string"]
77
+ ])
78
+ end
79
+
80
+ it 'catches missing specialization' do
81
+ invalid = message.dup
82
+ invalid.delete 'aSp'
83
+ expect( validate(invalid) ).to eq([
84
+ ["", "required", {"missing_keys"=>["aSp"]}]
85
+ ])
86
+ end
87
+
88
+ it 'catches bad specialization' do
89
+ invalid = message.dup
90
+ invalid['aSp'] = "Bad"
91
+ expect( validate(invalid) ).to eq([
92
+ ["/aSp", "enum"]
93
+ ])
94
+ end
95
+
96
+ it 'catches wrong specialization type' do
97
+ invalid = message.dup
98
+ invalid['aSp'] = 123
99
+ expect( validate(invalid) ).to eq([
100
+ ["/aSp", "enum"],
101
+ ["/aSp", "string"]
102
+ ])
103
+ end
104
+
105
+ it 'catches missing alarm active status' do
106
+ invalid = message.dup
107
+ invalid.delete 'aS'
108
+ expect( validate(invalid) ).to eq([
109
+ ["", "required", {"missing_keys"=>["aS"]}]
110
+ ])
111
+ end
112
+
113
+ it 'catches bad alarm active status' do
114
+ invalid = message.dup
115
+ invalid['aS'] = "Bad"
116
+ expect( validate(invalid) ).to eq([
117
+ ["/aS", "enum"]
118
+ ])
119
+ end
120
+
121
+ it 'catches wrong alarm active status' do
122
+ invalid = message.dup
123
+ invalid['aS'] = 123
124
+ expect( validate(invalid) ).to eq([
125
+ ["/aS", "enum"],
126
+ ["/aS", "string"]
127
+ ])
128
+ end
129
+
130
+ it 'catches missing alarm acknowledged status' do
131
+ invalid = message.dup
132
+ invalid.delete 'ack'
133
+ expect( validate(invalid) ).to eq([
134
+ ["", "required", {"missing_keys"=>["ack"]}]
135
+ ])
136
+ end
137
+
138
+ it 'catches bad alarm acknowledged status' do
139
+ invalid = message.dup
140
+ invalid['ack'] = "Bad"
141
+ expect( validate(invalid) ).to eq([
142
+ ["/ack", "enum"]
143
+ ])
144
+ end
145
+
146
+ it 'catches wrong alarm acknowledged status type' do
147
+ invalid = message.dup
148
+ invalid['ack'] = 123
149
+ expect( validate(invalid) ).to eq([
150
+ ["/ack", "enum"],
151
+ ["/ack", "string"]
152
+ ])
153
+ end
154
+
155
+ it 'catches missing category' do
156
+ invalid = message.dup
157
+ invalid.delete 'cat'
158
+ expect( validate(invalid) ).to eq([
159
+ ["", "required", {"missing_keys"=>["cat"]}]
160
+ ])
161
+ end
162
+
163
+ it 'catches bad category' do
164
+ invalid = message.dup
165
+ invalid['cat'] = "A"
166
+ expect( validate(invalid) ).to eq([
167
+ ["/cat", "enum"]
168
+ ])
169
+ end
170
+
171
+ it 'catches wrong category' do
172
+ invalid = message.dup
173
+ invalid['cat'] = 123
174
+ expect( validate(invalid) ).to eq([
175
+ ["/cat", "enum"],
176
+ ["/cat", "string"]
177
+ ])
178
+ end
179
+
180
+ it 'catches missing priority' do
181
+ invalid = message.dup
182
+ invalid.delete 'pri'
183
+ expect( validate(invalid) ).to eq([
184
+ ["", "required", {"missing_keys"=>["pri"]}]
185
+ ])
186
+ end
187
+
188
+ it 'catches bad priority' do
189
+ invalid = message.dup
190
+ invalid['pri'] = "4"
191
+ expect( validate(invalid) ).to eq([
192
+ ["/pri", "enum"]
193
+ ])
194
+ end
195
+
196
+ it 'catches wrong priority' do
197
+ invalid = message.dup
198
+ invalid['pri'] = 1
199
+ expect( validate(invalid) ).to eq([
200
+ ["/pri", "enum"],
201
+ ["/pri", "string"]
202
+ ])
203
+ end
204
+
205
+ it 'catches missing timestamp' do
206
+ invalid = message.dup
207
+ invalid.delete 'aTs'
208
+ expect( validate(invalid) ).to eq([
209
+ ["", "required", {"missing_keys"=>["aTs"]}]
210
+ ])
211
+ end
212
+
213
+ it 'catches bad timestamp' do
214
+ invalid = message.dup
215
+ invalid['aTs'] = "yesterday"
216
+ expect( validate(invalid) ).to eq([
217
+ ["/aTs", "pattern"]
218
+ ])
219
+ end
220
+
221
+ it 'catches wrong timestamp type' do
222
+ invalid = message.dup
223
+ invalid['aTs'] = 123
224
+ expect( validate(invalid) ).to eq([
225
+ ["/aTs", "string"]
226
+ ])
227
+ end
228
+
229
+ it 'catches missing rvs' do
230
+ invalid = message.dup
231
+ invalid.delete 'rvs'
232
+ expect( validate(invalid) ).to eq([
233
+ ["", "required", {"missing_keys"=>["rvs"]}]
234
+ ])
235
+ end
236
+
237
+ it 'catches bad rvs type' do
238
+ invalid = message.dup
239
+ invalid["rvs"] = {}
240
+ expect( validate(invalid) ).to eq([
241
+ ["/rvs", "array"]
242
+ ])
243
+ end
244
+
245
+ it 'catches missing alarm name' do
246
+ invalid = message.dup
247
+ invalid["rvs"].first.delete 'n'
248
+ expect( validate(invalid) ).to eq([
249
+ ["/rvs/0", "required", {"missing_keys"=>["n"]}]
250
+ ])
251
+ end
252
+
253
+ it 'catches bad alarm name' do
254
+ invalid = message.dup
255
+ invalid["rvs"].first['n'] = 3
256
+ expect( validate(invalid) ).to eq([
257
+ ["/rvs/0/n", "string"]
258
+ ])
259
+ end
260
+
261
+ it 'catches missing alarm value' do
262
+ invalid = message.dup
263
+ invalid["rvs"].first.delete 'v'
264
+ expect( validate(invalid) ).to eq([
265
+ ["/rvs/0", "required", {"missing_keys"=>["v"]}]
266
+ ])
267
+ end
268
+
269
+ it 'catches bad alarm value' do
270
+ invalid = message.dup
271
+ invalid["rvs"].first['v'] = 3
272
+ expect( validate(invalid) ).to eq([
273
+ ["/rvs/0/v", "string"]
274
+ ])
275
+ end
276
+ end
277
+ end