eq_json 1.0.2
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 +7 -0
- data/.gitignore +16 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/CHANGELOG +10 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +22 -0
- data/README.md +73 -0
- data/Rakefile +5 -0
- data/TODO.txt +31 -0
- data/eq_json.gemspec +20 -0
- data/lib/colorizer.rb +23 -0
- data/lib/eq_json.rb +142 -0
- data/lib/eq_json_array.rb +33 -0
- data/lib/message_generator.rb +172 -0
- data/lib/version/version.rb +3 -0
- data/spec/features/colorizer_spec.rb +19 -0
- data/spec/features/eq_json_spec.rb +231 -0
- data/spec/features/test_nested_array_spec.rb +604 -0
- data/spec/features/test_nested_object_spec.rb +371 -0
- data/spec/features/test_top_level_array_spec.rb +353 -0
- data/spec/features/test_write_json_tmp.rb +95 -0
- data/spec/spec_helper.rb +29 -0
- metadata +114 -0
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'eq_json'
|
2
|
+
require 'json'
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
xit 'test actual does not contain an element in expected' do
|
6
|
+
|
7
|
+
actual = {
|
8
|
+
bookSeller: "amazon",
|
9
|
+
bookWholeSellers: {
|
10
|
+
publisherInfo: {
|
11
|
+
name: "ACME Publisher Inc.",
|
12
|
+
publishDate: {
|
13
|
+
month: 3,
|
14
|
+
day: 23,
|
15
|
+
year: 2015
|
16
|
+
},
|
17
|
+
products: {
|
18
|
+
books: [
|
19
|
+
{
|
20
|
+
bookId: "1",
|
21
|
+
name: "Harry Potter and the Sorcerer's Stone",
|
22
|
+
author: "J.K. Rowling"
|
23
|
+
},
|
24
|
+
{
|
25
|
+
bookId: "2",
|
26
|
+
name: "Eragon",
|
27
|
+
author: "Christopher Paolini"
|
28
|
+
},
|
29
|
+
{
|
30
|
+
bookId: "4",
|
31
|
+
name: "Effective Java",
|
32
|
+
author: "Cannot Remember"
|
33
|
+
}
|
34
|
+
]
|
35
|
+
}
|
36
|
+
}
|
37
|
+
},
|
38
|
+
url: "www.amazon.com"
|
39
|
+
}
|
40
|
+
|
41
|
+
book3Item =
|
42
|
+
{
|
43
|
+
bookId: "3",
|
44
|
+
name: "The Fellowship of the Ring",
|
45
|
+
author: "J.R.R. Tolkien"
|
46
|
+
}
|
47
|
+
|
48
|
+
expected = {
|
49
|
+
bookSeller: "amazon",
|
50
|
+
bookWholeSellers: {
|
51
|
+
publisherInfo: {
|
52
|
+
name: "ACME Publisher Inc.",
|
53
|
+
publishDate: {
|
54
|
+
month: 3,
|
55
|
+
day: 23,
|
56
|
+
year: 2015
|
57
|
+
},
|
58
|
+
products: {
|
59
|
+
books: [
|
60
|
+
{
|
61
|
+
bookId: "1",
|
62
|
+
name: "Harry Potter and the Sorcerer's Stone",
|
63
|
+
author: "J.K. Rowling"
|
64
|
+
},
|
65
|
+
{
|
66
|
+
bookId: "2",
|
67
|
+
name: "Eragon",
|
68
|
+
author: "Christopher Paolini"
|
69
|
+
},
|
70
|
+
book3Item
|
71
|
+
]
|
72
|
+
}
|
73
|
+
}
|
74
|
+
},
|
75
|
+
url: "www.amazon.com"
|
76
|
+
}
|
77
|
+
|
78
|
+
customMatcher=EqualWithOutOrderJson.new(expected)
|
79
|
+
|
80
|
+
expect(customMatcher.matches?(actual)).to eq(false)
|
81
|
+
|
82
|
+
expectedJson=expected.to_json;
|
83
|
+
actualJson=actual.to_json;
|
84
|
+
|
85
|
+
String expectedErrorMessage= "Expected: #{expectedJson}\n" +
|
86
|
+
makeGreen(" Actual: #{actualJson}") + "\n" +
|
87
|
+
"\nDiff:\n" +
|
88
|
+
"JSON path $.bookWholeSellers.publisherInfo.products.books[] could not find:\n" +
|
89
|
+
"#{book3Item.to_json}\n" +
|
90
|
+
"in actual\n"
|
91
|
+
|
92
|
+
expect(customMatcher.failure_message).to eq(expectedErrorMessage)
|
93
|
+
|
94
|
+
expect(expected).not_to eq_json(actual)
|
95
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
RSpec.configure do |c|
|
2
|
+
c.order = :random
|
3
|
+
c.default_formatter = 'doc'
|
4
|
+
c.filter_run focus: true
|
5
|
+
c.run_all_when_everything_filtered = true
|
6
|
+
c.add_setting :json_debug_config
|
7
|
+
c.json_debug_config=true
|
8
|
+
end
|
9
|
+
|
10
|
+
def makeGreen(text)
|
11
|
+
return colorize(text, 32);
|
12
|
+
# return "\e[32m#{text}\e[0m"
|
13
|
+
end
|
14
|
+
|
15
|
+
def makeRed(text)
|
16
|
+
colorize(text, 31)
|
17
|
+
end
|
18
|
+
|
19
|
+
def makeBlue(text)
|
20
|
+
colorize(text, 34)
|
21
|
+
end
|
22
|
+
|
23
|
+
def colorize(text, color_code)
|
24
|
+
"\e[#{color_code}m#{text}\e[0m"
|
25
|
+
end
|
26
|
+
|
27
|
+
def wrapWithResetColor(text)
|
28
|
+
"\e[0m#{text}\e[0m"
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: eq_json
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- David M. Rhodes
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-02-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.7'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.7'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
description: RSpec equality matcher that deeply compares JSON. Examples at github.com/davidmrhodes/eq_json
|
56
|
+
email: barnaby71@gmail.com
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files: []
|
60
|
+
files:
|
61
|
+
- .gitignore
|
62
|
+
- .rspec
|
63
|
+
- .travis.yml
|
64
|
+
- CHANGELOG
|
65
|
+
- Gemfile
|
66
|
+
- LICENSE.txt
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
69
|
+
- TODO.txt
|
70
|
+
- eq_json.gemspec
|
71
|
+
- lib/colorizer.rb
|
72
|
+
- lib/eq_json.rb
|
73
|
+
- lib/eq_json_array.rb
|
74
|
+
- lib/message_generator.rb
|
75
|
+
- lib/version/version.rb
|
76
|
+
- spec/features/colorizer_spec.rb
|
77
|
+
- spec/features/eq_json_spec.rb
|
78
|
+
- spec/features/test_nested_array_spec.rb
|
79
|
+
- spec/features/test_nested_object_spec.rb
|
80
|
+
- spec/features/test_top_level_array_spec.rb
|
81
|
+
- spec/features/test_write_json_tmp.rb
|
82
|
+
- spec/spec_helper.rb
|
83
|
+
homepage: http://rubygems.org/gems/eq_json
|
84
|
+
licenses:
|
85
|
+
- MIT
|
86
|
+
metadata: {}
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options: []
|
89
|
+
require_paths:
|
90
|
+
- lib
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - '>='
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
requirements: []
|
102
|
+
rubyforge_project:
|
103
|
+
rubygems_version: 2.0.14.1
|
104
|
+
signing_key:
|
105
|
+
specification_version: 4
|
106
|
+
summary: RSpec equality matcher that to compare JSON
|
107
|
+
test_files:
|
108
|
+
- spec/features/colorizer_spec.rb
|
109
|
+
- spec/features/eq_json_spec.rb
|
110
|
+
- spec/features/test_nested_array_spec.rb
|
111
|
+
- spec/features/test_nested_object_spec.rb
|
112
|
+
- spec/features/test_top_level_array_spec.rb
|
113
|
+
- spec/features/test_write_json_tmp.rb
|
114
|
+
- spec/spec_helper.rb
|