test_assistant 0.1.2 → 1.0.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.
- checksums.yaml +4 -4
- data/README.md +1 -164
- data/lib/test_assistant.rb +0 -2
- data/lib/test_assistant/configuration.rb +23 -61
- data/lib/test_assistant/version.rb +1 -1
- data/test_assistant.gemspec +0 -3
- metadata +2 -46
- data/lib/test_assistant/email/expectation.rb +0 -456
- data/lib/test_assistant/email/helpers.rb +0 -37
- data/lib/test_assistant/json/expectation.rb +0 -189
- data/lib/test_assistant/json/helpers.rb +0 -38
- data/spec/email_expectation_spec.rb +0 -369
- data/spec/eql_json_spec.rb +0 -430
- data/spec/support/email_mock.rb +0 -35
data/spec/eql_json_spec.rb
DELETED
@@ -1,430 +0,0 @@
|
|
1
|
-
require './lib/test_assistant/json/helpers'
|
2
|
-
|
3
|
-
RSpec.describe "eql_json" do
|
4
|
-
include TestAssistant::Json::Helpers
|
5
|
-
|
6
|
-
context "when comparing strings" do
|
7
|
-
let(:expected) { 'a' }
|
8
|
-
let(:actual) { 'b' }
|
9
|
-
|
10
|
-
it "then correctly reports any differences" do
|
11
|
-
|
12
|
-
expect(actual).to eql_json(actual)
|
13
|
-
|
14
|
-
expect(actual).to_not eql(expected)
|
15
|
-
|
16
|
-
expect {
|
17
|
-
expect(actual).to eql_json(expected)
|
18
|
-
}.to raise_error.with_message(error_message(expected, actual, {
|
19
|
-
'' => {
|
20
|
-
expected: "'#{expected}'",
|
21
|
-
actual: "'#{actual}'"
|
22
|
-
}
|
23
|
-
}))
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
context "when comparing integers" do
|
28
|
-
let(:expected) { 2 }
|
29
|
-
let(:actual) { 1 }
|
30
|
-
|
31
|
-
it "then correctly reports any differences" do
|
32
|
-
|
33
|
-
expect(actual).to eql_json(actual)
|
34
|
-
|
35
|
-
expect(actual).to_not eql(expected)
|
36
|
-
|
37
|
-
expect {
|
38
|
-
expect(actual).to eql_json(expected)
|
39
|
-
}.to raise_error.with_message(error_message(expected, actual, {
|
40
|
-
'' => {
|
41
|
-
expected: expected,
|
42
|
-
actual: actual
|
43
|
-
}
|
44
|
-
}))
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context "when comparing nil" do
|
49
|
-
let(:expected) { 2 }
|
50
|
-
let(:actual) { nil }
|
51
|
-
|
52
|
-
it "then correctly reports any differences" do
|
53
|
-
expect(actual).to eql_json(actual)
|
54
|
-
|
55
|
-
expect(actual).to_not eql(expected)
|
56
|
-
|
57
|
-
expect {
|
58
|
-
expect(actual).to eql_json(expected)
|
59
|
-
}.to raise_error.with_message(error_message(expected, actual, {
|
60
|
-
'' => {
|
61
|
-
expected: expected,
|
62
|
-
actual: actual
|
63
|
-
}
|
64
|
-
}))
|
65
|
-
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
context "when comparing arrays" do
|
71
|
-
let(:expected) { [ 1, 3, 4, 5 ] }
|
72
|
-
let(:actual) { [ 1, 2, 3 ] }
|
73
|
-
|
74
|
-
it "then correctly reports the elements that have changed" do
|
75
|
-
|
76
|
-
expect(actual).to eql(actual)
|
77
|
-
|
78
|
-
expect(actual).to_not eql(expected)
|
79
|
-
|
80
|
-
begin
|
81
|
-
expect(actual).to eql_json(expected)
|
82
|
-
rescue RSpec::Expectations::ExpectationNotMetError => e
|
83
|
-
|
84
|
-
expect(e.message).to eql(error_message(expected, actual, {
|
85
|
-
|
86
|
-
'[1]' => {
|
87
|
-
expected: 3,
|
88
|
-
actual: 2
|
89
|
-
},
|
90
|
-
'[2]' => {
|
91
|
-
expected: 4,
|
92
|
-
actual: 3
|
93
|
-
},
|
94
|
-
'[3]' => {
|
95
|
-
expected: 5,
|
96
|
-
actual: ''
|
97
|
-
}
|
98
|
-
|
99
|
-
}))
|
100
|
-
|
101
|
-
end
|
102
|
-
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
context "when comparing arrays of objects" do
|
108
|
-
let(:expected) {
|
109
|
-
{
|
110
|
-
'alpha' => 'alpha',
|
111
|
-
'beta' => [ 1, 2, 3],
|
112
|
-
'gamma' => [
|
113
|
-
{ 'i' => 'a', 'j' => 'b' },
|
114
|
-
{ 'i' => 'c', 'j' => 'd' },
|
115
|
-
{ 'i' => 'e', 'j' => 'f' },
|
116
|
-
]
|
117
|
-
}
|
118
|
-
}
|
119
|
-
|
120
|
-
let(:actual) {
|
121
|
-
{
|
122
|
-
'alpha' => 'alpha',
|
123
|
-
'beta' => [ 1, 2, 3],
|
124
|
-
'gamma' => [
|
125
|
-
{ 'j' => 'b' },
|
126
|
-
{ 'i' => 'c', 'j' => 'D' },
|
127
|
-
{ 'i' => 'e', 'j' => 'f', 'k' => 'k' },
|
128
|
-
]
|
129
|
-
}
|
130
|
-
}
|
131
|
-
|
132
|
-
it "then correctly reports the elements that have changed" do
|
133
|
-
|
134
|
-
expect(actual).to eql(actual)
|
135
|
-
|
136
|
-
expect(actual).to_not eql(expected)
|
137
|
-
|
138
|
-
begin
|
139
|
-
expect(actual).to eql_json(expected)
|
140
|
-
rescue RSpec::Expectations::ExpectationNotMetError => e
|
141
|
-
|
142
|
-
expect(e.message).to eql(error_message(expected, actual, {
|
143
|
-
|
144
|
-
'gamma[0].i' => {
|
145
|
-
expected: "'a'",
|
146
|
-
actual: ''
|
147
|
-
},
|
148
|
-
'gamma[1].j' => {
|
149
|
-
expected: "'d'",
|
150
|
-
actual: "'D'"
|
151
|
-
},
|
152
|
-
'gamma[2].k' => {
|
153
|
-
expected: '',
|
154
|
-
actual: "'k'"
|
155
|
-
}
|
156
|
-
|
157
|
-
}))
|
158
|
-
|
159
|
-
end
|
160
|
-
|
161
|
-
end
|
162
|
-
|
163
|
-
end
|
164
|
-
|
165
|
-
context "when comparing objects" do
|
166
|
-
let(:expected) { {
|
167
|
-
'a' => 'a',
|
168
|
-
'c' => 'd',
|
169
|
-
'e' => 'e'
|
170
|
-
} }
|
171
|
-
|
172
|
-
let(:actual) { {
|
173
|
-
'a' => 'a',
|
174
|
-
'b' => 'b',
|
175
|
-
'c' => 'c'
|
176
|
-
} }
|
177
|
-
|
178
|
-
it "then correctly reports the elements that have changed" do
|
179
|
-
|
180
|
-
expect(actual).to eql(actual)
|
181
|
-
|
182
|
-
expect(actual).to_not eql(expected)
|
183
|
-
|
184
|
-
begin
|
185
|
-
expect(actual).to eql_json(expected)
|
186
|
-
rescue RSpec::Expectations::ExpectationNotMetError => e
|
187
|
-
|
188
|
-
expect(e.message).to eql(error_message(expected, actual, {
|
189
|
-
|
190
|
-
'b' => {
|
191
|
-
expected: '',
|
192
|
-
actual: "'b'"
|
193
|
-
},
|
194
|
-
'c' => {
|
195
|
-
expected: "'d'",
|
196
|
-
actual: "'c'"
|
197
|
-
},
|
198
|
-
'e' => {
|
199
|
-
expected: "'e'",
|
200
|
-
actual: ''
|
201
|
-
}
|
202
|
-
|
203
|
-
}))
|
204
|
-
|
205
|
-
end
|
206
|
-
|
207
|
-
end
|
208
|
-
|
209
|
-
end
|
210
|
-
|
211
|
-
context "when comparing nested objects" do
|
212
|
-
let(:actual) { {
|
213
|
-
'a' => 'a',
|
214
|
-
'b' => {
|
215
|
-
'b' => 'b'
|
216
|
-
},
|
217
|
-
'c' => {
|
218
|
-
'd' => 'd',
|
219
|
-
'e' => 'e',
|
220
|
-
'f' => {
|
221
|
-
'g' => 'g'
|
222
|
-
},
|
223
|
-
'h' => [1,2,3]
|
224
|
-
},
|
225
|
-
'i' => {
|
226
|
-
'j' => 'j',
|
227
|
-
'k' => 'k'
|
228
|
-
}
|
229
|
-
} }
|
230
|
-
|
231
|
-
let(:expected ) { {
|
232
|
-
'a' => 'a',
|
233
|
-
'c' => {
|
234
|
-
'e' => 'e2',
|
235
|
-
'f' => {
|
236
|
-
'g2' => 'g2'
|
237
|
-
},
|
238
|
-
'h' => [1,2,4]
|
239
|
-
},
|
240
|
-
'i' => {
|
241
|
-
'j' => 'j',
|
242
|
-
}
|
243
|
-
} }
|
244
|
-
|
245
|
-
it "then correctly reports the elements that have changed" do
|
246
|
-
|
247
|
-
expect(actual).to eql(actual)
|
248
|
-
|
249
|
-
expect(actual).to_not eql(expected)
|
250
|
-
|
251
|
-
begin
|
252
|
-
expect(actual).to eql_json(expected)
|
253
|
-
rescue RSpec::Expectations::ExpectationNotMetError => e
|
254
|
-
|
255
|
-
expect(e.message).to eql(error_message(expected, actual, {
|
256
|
-
|
257
|
-
'b' => {
|
258
|
-
expected: '',
|
259
|
-
actual: '{"b"=>"b"}'
|
260
|
-
},
|
261
|
-
'c.d' => {
|
262
|
-
expected: '',
|
263
|
-
actual: "'d'"
|
264
|
-
},
|
265
|
-
'c.e' => {
|
266
|
-
expected: "'e2'",
|
267
|
-
actual: "'e'"
|
268
|
-
},
|
269
|
-
'c.f.g' => {
|
270
|
-
expected: '',
|
271
|
-
actual: "'g'"
|
272
|
-
},
|
273
|
-
'c.f.g2' => {
|
274
|
-
expected: "'g2'",
|
275
|
-
actual: ''
|
276
|
-
},
|
277
|
-
'c.h[2]' => {
|
278
|
-
expected: '4',
|
279
|
-
actual: '3'
|
280
|
-
},
|
281
|
-
'i.k' => {
|
282
|
-
expected: '',
|
283
|
-
actual: "'k'"
|
284
|
-
},
|
285
|
-
|
286
|
-
|
287
|
-
}))
|
288
|
-
|
289
|
-
end
|
290
|
-
|
291
|
-
end
|
292
|
-
end
|
293
|
-
|
294
|
-
context "when comparing complicated objects" do
|
295
|
-
|
296
|
-
let(:expected ) { {
|
297
|
-
"a" => "aa",
|
298
|
-
"b" => "bb",
|
299
|
-
"c" => {
|
300
|
-
"d" => 2,
|
301
|
-
"e" => "ee",
|
302
|
-
"f" => [{
|
303
|
-
"g" => "gg",
|
304
|
-
"h" => "hh",
|
305
|
-
},
|
306
|
-
{
|
307
|
-
"g" => "g1",
|
308
|
-
"h" => "h1",
|
309
|
-
}
|
310
|
-
],
|
311
|
-
"i" => {
|
312
|
-
"j" => "jj",
|
313
|
-
"k" => "kk",
|
314
|
-
"l" => [],
|
315
|
-
"m" => {
|
316
|
-
"n" => 1,
|
317
|
-
"o" => "oo",
|
318
|
-
"p" => {
|
319
|
-
"q" => "qq"
|
320
|
-
},
|
321
|
-
"r" => [],
|
322
|
-
},
|
323
|
-
},
|
324
|
-
"s" => [
|
325
|
-
{
|
326
|
-
"t" => 179,
|
327
|
-
"u" => "UU"
|
328
|
-
}
|
329
|
-
]
|
330
|
-
}
|
331
|
-
} }
|
332
|
-
|
333
|
-
let(:actual) { {
|
334
|
-
"a" => "aa",
|
335
|
-
"b" => "bb",
|
336
|
-
"c" => {
|
337
|
-
"d" => 3,
|
338
|
-
"e" => "ee",
|
339
|
-
"f" => [{
|
340
|
-
"g" => "g1",
|
341
|
-
"h" => "hh",
|
342
|
-
},
|
343
|
-
{
|
344
|
-
"g" => "g1",
|
345
|
-
"h" => "h1",
|
346
|
-
"h2" => "h2"
|
347
|
-
}
|
348
|
-
],
|
349
|
-
"i" => {
|
350
|
-
"j" => "j2",
|
351
|
-
"k" => "kk",
|
352
|
-
"l" => [2],
|
353
|
-
"m" => {
|
354
|
-
"o" => "oo",
|
355
|
-
"p" => {
|
356
|
-
"q" => "qq"
|
357
|
-
},
|
358
|
-
"r" => [],
|
359
|
-
},
|
360
|
-
},
|
361
|
-
"s" => [
|
362
|
-
{
|
363
|
-
"t" => 179,
|
364
|
-
"u" => "UU"
|
365
|
-
}
|
366
|
-
]
|
367
|
-
}
|
368
|
-
} }
|
369
|
-
|
370
|
-
it "then correctly reports the elements that have changed" do
|
371
|
-
|
372
|
-
expect(actual).to eql(actual)
|
373
|
-
|
374
|
-
expect(actual).to_not eql(expected)
|
375
|
-
|
376
|
-
begin
|
377
|
-
expect(actual).to eql_json(expected)
|
378
|
-
rescue RSpec::Expectations::ExpectationNotMetError => e
|
379
|
-
|
380
|
-
expect(e.message).to eql(error_message(expected, actual, {
|
381
|
-
'c.d' => {
|
382
|
-
expected: 2,
|
383
|
-
actual: 3
|
384
|
-
},
|
385
|
-
'c.f[0].g' => {
|
386
|
-
expected: "'gg'",
|
387
|
-
actual: "'g1'"
|
388
|
-
},
|
389
|
-
'c.f[1].h2' => {
|
390
|
-
expected: nil,
|
391
|
-
actual: "'h2'"
|
392
|
-
},
|
393
|
-
'c.i.j' => {
|
394
|
-
expected: "'jj'",
|
395
|
-
actual: "'j2'"
|
396
|
-
},
|
397
|
-
'c.i.l[0]' => {
|
398
|
-
expected: nil,
|
399
|
-
actual: 2
|
400
|
-
},
|
401
|
-
'c.i.m.n' => {
|
402
|
-
expected: 1,
|
403
|
-
actual: nil
|
404
|
-
}
|
405
|
-
}))
|
406
|
-
|
407
|
-
end
|
408
|
-
|
409
|
-
end
|
410
|
-
|
411
|
-
end
|
412
|
-
|
413
|
-
private
|
414
|
-
|
415
|
-
def error_message(expected, actual, differences)
|
416
|
-
message_lines = [
|
417
|
-
"Expected: #{expected}\n\n",
|
418
|
-
"Actual: #{actual}\n\n",
|
419
|
-
"Differences\n\n"
|
420
|
-
]
|
421
|
-
|
422
|
-
differences.each do |attribute_name, difference|
|
423
|
-
message_lines.push("#{attribute_name}\n")
|
424
|
-
message_lines.push("Expected: #{difference[:expected]}\n")
|
425
|
-
message_lines.push("Actual: #{difference[:actual]}\n\n")
|
426
|
-
end
|
427
|
-
|
428
|
-
message_lines.join
|
429
|
-
end
|
430
|
-
end
|
data/spec/support/email_mock.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
class EmailMock
|
2
|
-
attr_reader :subject, :text, :body
|
3
|
-
|
4
|
-
def initialize(to: 'receiver@email.com', from: 'sender@email.com', subject: 'Subject', text: 'Test Email', body: "<body><h1>Test Email</h1><a href='www.test.com' /><img src='www.test.com' /></body>")
|
5
|
-
@to, @from, @subject, @text, @body = to, from, subject, text, body
|
6
|
-
end
|
7
|
-
|
8
|
-
def parts
|
9
|
-
[
|
10
|
-
EmailBodyMock.new(@body)
|
11
|
-
]
|
12
|
-
end
|
13
|
-
|
14
|
-
def to
|
15
|
-
[ @to ]
|
16
|
-
end
|
17
|
-
|
18
|
-
def from
|
19
|
-
[ @from ]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
class EmailBodyMock
|
24
|
-
def initialize(text)
|
25
|
-
@text = text
|
26
|
-
end
|
27
|
-
|
28
|
-
def body
|
29
|
-
self
|
30
|
-
end
|
31
|
-
|
32
|
-
def decoded
|
33
|
-
@text
|
34
|
-
end
|
35
|
-
end
|