approvals 0.0.22 → 0.0.26

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6f444a0aa1c3b1b8adeade0729913ffd0bc77af0
4
- data.tar.gz: fcb304998044a0f34fdcf339d3bac514e6175529
2
+ SHA256:
3
+ metadata.gz: cc889240c80c9fb3649ef9b9edfd7b7fa54d2921d678dfe4303c3821ee2a23c8
4
+ data.tar.gz: 30c4924a8e599a89c9c386892719ebfa9bdc3c6cc0664be606de4dc83c23c217
5
5
  SHA512:
6
- metadata.gz: 0425fc7fab8349a9d762e8f134feebeba3d49c632f2bc3e4dc09df1b35041526acf86a6eda2f98b44b6443c968c2e32778741d984e73632124195f98c666f1ee
7
- data.tar.gz: 503eef74aa5ed03cf9591ca43dc771bfc5fde4c5fb2d57bd1823ea7dfab4cbcbd95bebeba4cd1cb448b8fea32bf8bc4909b206fa1934b7eab2c8906170729dfd
6
+ metadata.gz: 8cb1489bae6337b513eac1e1cd78a789612357bd43d35bd874b324ee03c4ae8314e5fbf5377853cbe60effea3b2e87b85a1028bb3c62910dab13e1aae912f3a9
7
+ data.tar.gz: 99756cc25f1c2f3492de6291280b3483d861fe4977d11c19a5eee9c0372541457b05a7704c9fe6eabc909c0bcb6817c89ddf13bc89d0b6b009a0b27607abd2f9
data/.gitignore CHANGED
@@ -5,3 +5,7 @@ pkg/*
5
5
  *.received.txt
6
6
  .approvals
7
7
  tmp/
8
+ vendor/
9
+
10
+ ext/Rakefile
11
+ .ruby-version
data/.travis.yml CHANGED
@@ -1,10 +1,27 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.2
4
- - 1.9.3
5
3
  - 2.0.0
6
- - 2.1.0
4
+ - 2.1.10
5
+ - 2.2.10
6
+ - 2.3.8
7
+ - 2.4.8
8
+ - 2.5.7
9
+ - 2.6.5
10
+ - 2.7.0
7
11
  - ruby-head
8
- - rbx-2
12
+ - rbx-3
13
+ matrix:
14
+ allow_failures:
15
+ - rvm: rbx-3
16
+ before_install:
17
+ - |
18
+ r_eng="$(ruby -e 'STDOUT.write RUBY_ENGINE')";
19
+ rv="$(ruby -e 'STDOUT.write RUBY_VERSION')";
20
+ if [ "$r_eng" == "ruby" ]; then
21
+ if [ "$rv" \< "2.3" ]; then gem update --system 2.7.10 --no-document
22
+ elif [ "$rv" \< "2.6" ]; then gem update --system --no-document --conservative
23
+ fi
24
+ fi
25
+ - gem update bundler
9
26
  script: bundle exec rspec spec
10
27
  cache: bundler
data/CHANGELOG.md CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  * Your contribution here
6
6
 
7
+ * Updated gemspec to make 'json' an explicit dependency
8
+
7
9
  ### v0.0.22 (2015-10-22)
8
10
 
9
11
  * Fix bug in non-binary comparisons.
data/README.md CHANGED
@@ -23,8 +23,8 @@ which Llewellyn Falco is interviewed about approvals.
23
23
  ## Configuration
24
24
 
25
25
  ```ruby
26
- Approvals.configure do |c|
27
- c.approvals_path = 'output/goes/here/'
26
+ Approvals.configure do |config|
27
+ config.approvals_path = 'output/goes/here/'
28
28
  end
29
29
  ```
30
30
 
@@ -42,18 +42,43 @@ Approvals.verify(your_subject, :format => :json)
42
42
 
43
43
  This will raise an `ApprovalError` in the case of a failure.
44
44
 
45
- The default writer uses the `:to_s` method on the subject will be used to generate the output for
46
- the `received` file. For custom complex objects you will need to override
47
- `:to_s` to get helpful output, rather than the default:
48
-
49
- #<Object:0x0000010105ea40> # or whatever the object id is
50
-
51
45
  The first time the approval is run, a file will be created with the contents of the subject of your approval:
52
46
 
53
47
  the_name_of_the_approval.received.txt # or .json, .html, .xml as appropriate
54
48
 
55
49
  Since you have not yet approved anything, the `*.approved` file does not exist, and the comparison will fail.
56
50
 
51
+ ### Customizing formatted output
52
+
53
+ The default writer uses the `:to_s` method on the subject to generate the output for the received file.
54
+ For custom complex objects you will need to provide a custom writer to get helpful output, rather than the default:
55
+
56
+ #<Object:0x0000010105ea40> # or whatever the object id is
57
+
58
+ Create a custom writer class somewhere accessible to your test:
59
+
60
+ ```
61
+ class MyCustomWriter < Approvals::Writers::TextWriter
62
+ def format(data)
63
+ # Custom data formatting here
64
+ end
65
+
66
+ def filter(data)
67
+ # Custom data filtering here
68
+ end
69
+ end
70
+ ```
71
+
72
+ In your test, use a string to reference your custom class:
73
+
74
+ ```
75
+ it "verifies a complex object" do
76
+ Approvals.verify hello, :format => "MyCustomWriter"
77
+ end
78
+ ```
79
+
80
+ Define and use different custom writers as needed!
81
+
57
82
  ## CLI
58
83
 
59
84
  The gem comes with a command-line tool that makes it easier to manage the
@@ -115,17 +140,17 @@ spec/fixtures/approvals/
115
140
  You can override this:
116
141
 
117
142
  ```ruby
118
- RSpec.configure do |c|
119
- c.approvals_path = 'some/other/path'
143
+ RSpec.configure do |config|
144
+ config.approvals_path = 'some/other/path'
120
145
  end
121
146
  ```
122
147
 
123
148
  The basic format of the approval is modeled after RSpec's `it`:
124
149
 
125
150
  ```ruby
126
- it "works" do
151
+ it 'works' do
127
152
  verify do
128
- "this is the the thing you want to verify"
153
+ 'this is the the thing you want to verify'
129
154
  end
130
155
  end
131
156
  ```
@@ -135,21 +160,21 @@ end
135
160
  When using RSpec, the namer is set for you, using the example's `full_description`.
136
161
 
137
162
  ```ruby
138
- Approvals.verify(thing, :name => "the name of your test")
163
+ Approvals.verify(thing, :name => 'the name of your test')
139
164
  ```
140
165
 
141
166
  ### Formatting
142
167
 
143
168
  You can pass a format for your output before it gets written to the file.
144
- At the moment, only text, xml, html, and json are supported.
169
+ At the moment, only text, xml, html, and json are supported, while text is the default.
145
170
 
146
- Simply add a `:format => :text`, `:format => :xml`, `:format => :html`, or `:format => :json` option to the example:
171
+ Simply add a `:format => :txt`, `:format => :xml`, `:format => :html`, or `:format => :json` option to the example:
147
172
 
148
173
  ```ruby
149
- page = "<html><head></head><body><h1>ZOMG</h1></body></html>"
174
+ page = '<html><head></head><body><h1>ZOMG</h1></body></html>'
150
175
  Approvals.verify page, :format => :html
151
176
 
152
- data = "{\"beverage\":\"coffee\"}"
177
+ data = '{\'beverage\':\'coffee\'}'
153
178
  Approvals.verify data, :format => :json
154
179
  ```
155
180
 
@@ -157,19 +182,27 @@ In RSpec, it looks like this:
157
182
 
158
183
  ```ruby
159
184
  verify :format => :html do
160
- "<html><head></head><body><h1>ZOMG</h1></body></html>"
185
+ '<html><head></head><body><h1>ZOMG</h1></body></html>'
161
186
  end
162
187
 
163
188
  verify :format => :json do
164
- "{\"beverage\":\"coffee\"}"
189
+ '{\'beverage\':\'coffee\'}'
190
+ end
191
+ ```
192
+
193
+ If you like you could also change the default format globally with:
194
+
195
+ ```ruby
196
+ RSpec.configure do |config|
197
+ config.approvals_default_format = :json # or :xml, :html
165
198
  end
166
199
  ```
167
200
 
168
201
  ### Exclude dynamically changed values from json
169
202
 
170
203
  ```ruby
171
- Approvals.configure do |c|
172
- c.excluded_json_keys = {
204
+ Approvals.configure do |config|
205
+ config.excluded_json_keys = {
173
206
  :id =>/(\A|_)id$/,
174
207
  :date => /_at$/
175
208
  }
data/approvals.gemspec CHANGED
@@ -9,9 +9,9 @@ Gem::Specification.new do |s|
9
9
  s.licenses = ['MIT']
10
10
  s.authors = ["Katrina Owen"]
11
11
  s.email = ["katrina.owen@gmail.com"]
12
- s.homepage = ""
12
+ s.homepage = "https://github.com/kytrinyx/approvals"
13
13
  s.summary = %q{Approval Tests for Ruby}
14
- s.description = %q{Approval Tests for Ruby}
14
+ s.description = %q{A library to make it easier to do golden-master style testing in Ruby}
15
15
 
16
16
  s.rubyforge_project = "approvals"
17
17
 
@@ -20,8 +20,17 @@ Gem::Specification.new do |s|
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
21
  s.require_paths = ["lib"]
22
22
 
23
+ s.add_dependency 'thor', '~> 1.0'
24
+ s.add_dependency 'json', '~> 2.0'
25
+
26
+ if RUBY_VERSION < "2.1"
27
+ s.add_dependency 'nokogiri', '~> 1.6.8'
28
+ else
29
+ s.add_dependency 'nokogiri', '~> 1.8'
30
+ end
31
+ # We also depend on the json gem, but the version we need is
32
+ # Ruby-version-specific. See `ext/mkrf_conf.rb`.
33
+
34
+ s.add_development_dependency 'rake', '~> 13.0'
23
35
  s.add_development_dependency 'rspec', '~> 3.1'
24
- s.add_development_dependency 'json', '~> 1.8'
25
- s.add_dependency 'thor', '~> 0.18'
26
- s.add_dependency 'nokogiri', '~> 1.6'
27
36
  end
@@ -19,9 +19,9 @@ module Approvals
19
19
  # Add a Proc that tests if subject is a kind of format
20
20
  IDENTITIES = {
21
21
  hash: Proc.new(){|subject|subject.respond_to? :each_pair},
22
- array: Proc.new(){|subject|subject.respond_to? :each_with_index},
22
+ array: Proc.new(){|subject|subject.respond_to? :each_with_index},
23
23
  }
24
-
24
+
25
25
  def identify_format
26
26
  IDENTITIES.each_pair do |format, id_test|
27
27
  return format if id_test.call(subject)
@@ -34,6 +34,10 @@ module Approvals
34
34
  @writer ||= Writer.for(@format)
35
35
  end
36
36
 
37
+ def verifier
38
+ @verifier ||= Verifier.for(@format)
39
+ end
40
+
37
41
  def verify
38
42
  unless File.exist?(namer.output_dir)
39
43
  FileUtils.mkdir_p(namer.output_dir)
@@ -63,6 +67,10 @@ module Approvals
63
67
  BINARY_FORMATS = [:binary]
64
68
 
65
69
  def received_matches?
70
+ return verifier
71
+ .new(received_path, approved_path)
72
+ .verify if verifier
73
+
66
74
  if BINARY_FORMATS.include?(@format) # Read without ERB
67
75
  IO.read(received_path).chomp == IO.read(approved_path).chomp
68
76
  else
@@ -16,18 +16,18 @@ module Approvals
16
16
  end
17
17
 
18
18
  def censored value, key=nil
19
- case value
20
- when Array
21
- value.map { |item| censored(item) }
22
- when Hash
23
- Hash[value.map { |inner_key, inner_value| [inner_key, censored(inner_value, inner_key)] }]
19
+ if value.nil?
20
+ nil
21
+ elsif key && placeholder_for(key)
22
+ "<#{placeholder_for(key)}>"
24
23
  else
25
- if value.nil?
26
- nil
27
- elsif key && placeholder_for(key)
28
- "<#{placeholder_for(key)}>"
29
- else
30
- value
24
+ case value
25
+ when Array
26
+ value.map { |item| censored(item) }
27
+ when Hash
28
+ Hash[value.map { |inner_key, inner_value| [inner_key, censored(inner_value, inner_key)] }]
29
+ else
30
+ value
31
31
  end
32
32
  end
33
33
  end
@@ -0,0 +1,15 @@
1
+ require 'approvals/verifiers/json_verifier'
2
+
3
+ module Approvals
4
+ module Verifier
5
+ REGISTRY = {
6
+ json: Verifiers::JsonVerifier,
7
+ }
8
+
9
+ class << self
10
+ def for(format)
11
+ REGISTRY[format]
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,26 @@
1
+ module Approvals
2
+ module Verifiers
3
+ class JsonVerifier
4
+ def initialize(received_path, approved_path)
5
+ self.received_path = received_path
6
+ self.approved_path = approved_path
7
+ end
8
+
9
+ def verify
10
+ approved == received
11
+ end
12
+
13
+ private
14
+
15
+ attr_accessor :approved_path, :received_path
16
+
17
+ def approved
18
+ JSON.parse(File.read(approved_path))
19
+ end
20
+
21
+ def received
22
+ JSON.parse(File.read(received_path))
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module Approvals
2
- VERSION = '0.0.22'
2
+ VERSION = '0.0.26'
3
3
  end
@@ -16,15 +16,21 @@ module Approvals
16
16
  html: Writers::HtmlWriter.new,
17
17
  hash: Writers::HashWriter.new,
18
18
  array: Writers::ArrayWriter.new,
19
+ txt: Writers::TextWriter.new,
19
20
  }
20
21
 
21
22
 
22
23
  class << self
23
24
  def for(format)
24
- if REGISTRY.include?(format)
25
- REGISTRY[format]
26
- else
27
- TextWriter.new
25
+ begin
26
+ REGISTRY[format] || Object.const_get(format).new
27
+ rescue NameError => e
28
+ error = ApprovalError.new(
29
+ "Approval Error: #{ e }. Please define a custom writer as outlined"\
30
+ " in README section 'Customizing formatted output': "\
31
+ "https://github.com/kytrinyx/approvals#customizing-formatted-output"
32
+ )
33
+ raise error
28
34
  end
29
35
  end
30
36
  end
data/lib/approvals.rb CHANGED
@@ -13,6 +13,7 @@ require 'approvals/executable'
13
13
  require 'approvals/reporters'
14
14
  require 'approvals/filter'
15
15
  require 'approvals/writer'
16
+ require 'approvals/verifier'
16
17
  require 'approvals/namers/default_namer'
17
18
 
18
19
  module Approvals
@@ -51,6 +51,32 @@ describe Approvals do
51
51
  Approvals.verify hello, :namer => namer
52
52
  end
53
53
 
54
+ context "custom writer" do
55
+ let(:hello) { Object.new }
56
+
57
+ class MyCustomWriter < Approvals::Writers::TextWriter
58
+ def format(data)
59
+ filter(data)
60
+ end
61
+
62
+ def filter(data)
63
+ data.to_s.chars.reject {|c| c =~ /[a-zA-Z0-9]/}
64
+ end
65
+ end
66
+
67
+ it "verifies a complex object" do
68
+ Approvals.verify hello, :namer => namer, :format => "MyCustomWriter"
69
+ end
70
+
71
+ it "raises an error with an uninitialized custom writer class" do
72
+ expect{
73
+ Approvals.verify hello, :namer => namer, :format => "UninitializedWriter"
74
+ }.to raise_error.with_message(
75
+ /Please define a custom writer as outlined in README section 'Customizing formatted output':/
76
+ )
77
+ end
78
+ end
79
+
54
80
  it "verifies html" do
55
81
  html = <<-HTML
56
82
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"><html><head><title>Approval</title></head><body><h1>An Approval</h1><p>It has a paragraph</p></body></html>
@@ -59,6 +85,7 @@ describe Approvals do
59
85
  end
60
86
 
61
87
  it "verifies a malformed html fragment" do
88
+ pending
62
89
  html = <<-HTML
63
90
  <!DOCTYPE html>
64
91
  <html>
@@ -79,6 +106,11 @@ describe Approvals do
79
106
  Approvals.verify json, :format => :json, :namer => namer
80
107
  end
81
108
 
109
+ it "ignores whitespace differences in json" do
110
+ hash = { foo: {} }
111
+
112
+ Approvals.verify hash, :format => :json, :namer => namer
113
+ end
82
114
 
83
115
  it "verifies json and is newline agnostic" do
84
116
  json = '{"pet":{"species":"turtle","color":"green","name":"Anthony"}}'
data/spec/filter_spec.rb CHANGED
@@ -74,6 +74,40 @@ describe Approvals::Filter do
74
74
  })
75
75
  end
76
76
 
77
+ it "filters array keys" do
78
+ filter = Approvals::Filter.new({foolist: /^foolist$/})
79
+ input = {
80
+ foo: 'bar124',
81
+ foolist: [{foo: 'bar 145', bar: 'foo'}, 'foobar'],
82
+ nonfoo: 'bar',
83
+ }
84
+
85
+ output = filter.apply(input)
86
+
87
+ expect(output).to eq({
88
+ foo: 'bar124',
89
+ foolist: '<foolist>',
90
+ nonfoo: 'bar',
91
+ })
92
+ end
93
+
94
+ it "filters hash keys" do
95
+ filter = Approvals::Filter.new({foohash: /^foohash$/})
96
+ input = {
97
+ foo: 'bar124',
98
+ foohash: {foo: 'bar 145', barlist: ['foo', 'bar']},
99
+ nonfoo: 'bar',
100
+ }
101
+
102
+ output = filter.apply(input)
103
+
104
+ expect(output).to eq({
105
+ foo: 'bar124',
106
+ foohash: '<foohash>',
107
+ nonfoo: 'bar',
108
+ })
109
+ end
110
+
77
111
  it "takes the last applicable filter" do
78
112
  filter = Approvals::Filter.new({foo: /^foo/, bar: /bar$/})
79
113
  input = {
@@ -0,0 +1,3 @@
1
+ {
2
+ "foo": "2017-01-01 00:00:00 +0100"
3
+ }
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Approvals::Verifiers::JsonVerifier do
4
+ subject(:instance) do
5
+ described_class.new(received_path, approved_path)
6
+ end
7
+
8
+ context "with same json content but different formatting" do
9
+ let(:received_path) do
10
+ "./spec/fixtures/json_approval_with_different_whitespace/received.json"
11
+ end
12
+ let(:approved_path) do
13
+ "./spec/fixtures/json_approval_with_different_whitespace/approved.json"
14
+ end
15
+
16
+ it "passes verification" do
17
+ expect(instance.verify).to be_truthy
18
+ end
19
+ end
20
+
21
+ context "with different json content" do
22
+ let(:received_path) do
23
+ "./spec/fixtures/json_approval_with_different_whitespace/received_different_content.json"
24
+ end
25
+ let(:approved_path) do
26
+ "./spec/fixtures/json_approval_with_different_whitespace/approved.json"
27
+ end
28
+
29
+ it "does not passe verification" do
30
+ expect(instance.verify).to be_falsy
31
+ end
32
+ end
33
+ end
metadata CHANGED
@@ -1,37 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: approvals
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.22
4
+ version: 0.0.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-22 00:00:00.000000000 Z
11
+ date: 2022-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
14
+ name: thor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.1'
20
- type: :development
19
+ version: '1.0'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.1'
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
47
  version: '1.8'
34
- type: :development
48
+ type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
@@ -39,34 +53,34 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '1.8'
41
55
  - !ruby/object:Gem::Dependency
42
- name: thor
56
+ name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '0.18'
48
- type: :runtime
61
+ version: '13.0'
62
+ type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '0.18'
68
+ version: '13.0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: nokogiri
70
+ name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '1.6'
62
- type: :runtime
75
+ version: '3.1'
76
+ type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '1.6'
69
- description: Approval Tests for Ruby
82
+ version: '3.1'
83
+ description: A library to make it easier to do golden-master style testing in Ruby
70
84
  email:
71
85
  - katrina.owen@gmail.com
72
86
  executables:
@@ -112,6 +126,8 @@ files:
112
126
  - lib/approvals/rspec.rb
113
127
  - lib/approvals/scrubber.rb
114
128
  - lib/approvals/system_command.rb
129
+ - lib/approvals/verifier.rb
130
+ - lib/approvals/verifiers/json_verifier.rb
115
131
  - lib/approvals/version.rb
116
132
  - lib/approvals/writer.rb
117
133
  - lib/approvals/writers/array_writer.rb
@@ -127,6 +143,8 @@ files:
127
143
  - spec/executable_spec.rb
128
144
  - spec/extensions/rspec_approvals_spec.rb
129
145
  - spec/filter_spec.rb
146
+ - spec/fixtures/approvals/approvals_custom_writer_verifies_a_complex_object.approved.txt
147
+ - spec/fixtures/approvals/approvals_ignores_whitespace_differences_in_json.approved.json
130
148
  - spec/fixtures/approvals/approvals_passes_approved_files_through_erb.approved.txt
131
149
  - spec/fixtures/approvals/approvals_passes_the_received_files_through_erb.approved.txt
132
150
  - spec/fixtures/approvals/approvals_supports_excluded_keys_option_also_supports_an_array_of_hashes.approved.json
@@ -143,6 +161,7 @@ files:
143
161
  - spec/fixtures/approvals/approvals_verifies_html.approved.html
144
162
  - spec/fixtures/approvals/approvals_verifies_json.approved.json
145
163
  - spec/fixtures/approvals/approvals_verifies_json_and_is_newline_agnostic.approved.json
164
+ - spec/fixtures/approvals/approvals_verifies_json_with_a_time_object.approved.json
146
165
  - spec/fixtures/approvals/approvals_verifies_xml.approved.xml
147
166
  - spec/fixtures/approvals/verifications_a_string.approved.txt
148
167
  - spec/fixtures/approvals/verifies_a_complex_object.approved.txt
@@ -163,6 +182,9 @@ files:
163
182
  - spec/fixtures/approvals/verifies_html.approved.html
164
183
  - spec/fixtures/approvals/verifies_json.approved.json
165
184
  - spec/fixtures/approvals/verifies_xml.approved.xml
185
+ - spec/fixtures/json_approval_with_different_whitespace/approved.json
186
+ - spec/fixtures/json_approval_with_different_whitespace/received.json
187
+ - spec/fixtures/json_approval_with_different_whitespace/received_different_content.json
166
188
  - spec/fixtures/one.png
167
189
  - spec/fixtures/one.txt
168
190
  - spec/fixtures/two.png
@@ -180,7 +202,8 @@ files:
180
202
  - spec/scrubber_spec.rb
181
203
  - spec/spec_helper.rb
182
204
  - spec/system_command_spec.rb
183
- homepage: ''
205
+ - spec/verifiers/json_verifier_spec.rb
206
+ homepage: https://github.com/kytrinyx/approvals
184
207
  licenses:
185
208
  - MIT
186
209
  metadata: {}
@@ -199,10 +222,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
222
  - !ruby/object:Gem::Version
200
223
  version: '0'
201
224
  requirements: []
202
- rubyforge_project: approvals
203
- rubygems_version: 2.2.2
225
+ rubygems_version: 3.1.6
204
226
  signing_key:
205
227
  specification_version: 4
206
228
  summary: Approval Tests for Ruby
207
229
  test_files: []
208
- has_rdoc: