rspec-approvals 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -5,10 +5,14 @@ Approvals are based on the idea of the *_golden master_*.
5
5
  You take a snapshot of an object, and then compare all future
6
6
  versions of the object to the snapshot.
7
7
 
8
- See [ApprovalTests](http://www.approvaltests.com) for videos and additional documentation about the general concept.
8
+ Big hat tip to Llewellyn Falco who developed the approvals concept, as
9
+ well as the original approvals libraries (.NET, Java, Ruby, PHP,
10
+ probably others).
9
11
 
10
- The original Approvals libraries for Java and C# were developed by Llewellyn Falco.
12
+ See [ApprovalTests](http://www.approvaltests.com) for videos and additional documentation about the general concept.
11
13
 
14
+ Also, check out Herding Code's podcast #117 http://t.co/GLn88R5 in
15
+ which Llewellyn Falco is interviewed about approvals.
12
16
 
13
17
  ## Configuration
14
18
 
@@ -32,11 +36,11 @@ The basic format of the approval is modeled after RSpec's `it`:
32
36
  end
33
37
 
34
38
 
35
- The `:to_s` method on the object will be used to generate the output for
39
+ The `:inspect` method on the object will be used to generate the output for
36
40
  the `*.received.txt` file. For custom objects you will need to override
37
- the `:to_s` to get helpful output, rather than the default:
41
+ the `:inspect` to get helpful output, rather than the default:
38
42
 
39
- #<Object:0x0000010105ea40>
43
+ #<Object:0x0000010105ea40> # or whatever the object id is
40
44
 
41
45
  The first time the specs are run, two files will be created:
42
46
 
@@ -5,6 +5,12 @@ module RSpec
5
5
 
6
6
  class ReceivedDiffersError < RSpec::Expectations::ExpectationNotMetError; end
7
7
 
8
+ class EmptyApproval
9
+ def inspect
10
+ ""
11
+ end
12
+ end
13
+
8
14
  class Approval
9
15
 
10
16
  def self.normalize(s)
@@ -26,7 +32,7 @@ module RSpec
26
32
  :approved => approved_path,
27
33
  }
28
34
 
29
- write(:approved, '') unless File.exists?(approved_path)
35
+ write(:approved, EmptyApproval.new) unless File.exists?(approved_path)
30
36
  write(:received, received)
31
37
  end
32
38
 
@@ -40,7 +46,17 @@ module RSpec
40
46
 
41
47
  def write(suffix, contents)
42
48
  File.open("#{@path}.#{suffix}.txt", 'w') do |f|
43
- f.write contents
49
+ if contents.respond_to?(:each_pair)
50
+ contents.each_pair do |k,v|
51
+ f.write "#{k.inspect} => #{v.inspect}\n"
52
+ end
53
+ elsif contents.respond_to?(:each_with_index)
54
+ contents.each_with_index do |v,i|
55
+ f.write "[#{i.inspect}] #{v.inspect}\n"
56
+ end
57
+ else
58
+ f.write contents.inspect
59
+ end
44
60
  end
45
61
  end
46
62
 
@@ -56,7 +72,7 @@ module RSpec
56
72
  #{approved_path}
57
73
 
58
74
  If you like what you see in the *.received.txt file, you can approve it
59
- like so:
75
+ by renaming it with the .approved.txt suffix.
60
76
 
61
77
  mv #{received_path} #{approved_path}
62
78
 
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module Approvals
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
@@ -88,7 +88,7 @@ The::Class \t \r\n \fname
88
88
  approval = Approvals::Approval.new(example, 'oooh, shiney!')
89
89
 
90
90
  File.exists?(@received_file).should be_true
91
- File.read(@received_file).should eq("oooh, shiney!")
91
+ File.read(@received_file).should eq('"oooh, shiney!"')
92
92
  end
93
93
  end
94
94
 
@@ -144,7 +144,7 @@ The::Class \t \r\n \fname
144
144
  #{approval.approved_path}
145
145
 
146
146
  If you like what you see in the *.received.txt file, you can approve it
147
- like so:
147
+ by renaming it with the .approved.txt suffix.
148
148
 
149
149
  mv #{approval.received_path} #{approval.approved_path}
150
150
 
@@ -1 +1 @@
1
- Hello, World!
1
+ #<The World Says: Hello!>
@@ -1 +1,3 @@
1
- {:universe=>{:side=>:dark, :other_side=>:light}, :force=>true}
1
+ :universe => {:side=>:dark, :other_side=>:light}
2
+ :force => true
3
+ :evil => "undecided"
@@ -1 +1 @@
1
- We have, I fear, confused power with greatness.
1
+ "We have, I fear, confused power with greatness."
@@ -1 +1,4 @@
1
- ["abc", 123, ["cheese", "burger", "ribs", "steak", "bacon"]]
1
+ [0] "abc"
2
+ [1] 123
3
+ [2] :zomg_fooooood
4
+ [3] ["cheese", "burger", "ribs", "steak", "bacon"]
@@ -36,7 +36,8 @@ describe Approvals do
36
36
  :side => :dark,
37
37
  :other_side => :light
38
38
  },
39
- :force => true
39
+ :force => true,
40
+ :evil => "undecided"
40
41
  }
41
42
  end
42
43
 
@@ -44,6 +45,7 @@ describe Approvals do
44
45
  [
45
46
  "abc",
46
47
  123,
48
+ :zomg_fooooood,
47
49
  %w(cheese burger ribs steak bacon)
48
50
  ]
49
51
  end
@@ -55,10 +57,10 @@ describe Approvals do
55
57
  end
56
58
 
57
59
  def hello.inspect
58
- "<HelloWorld id:#{object_id}>"
60
+ "#<The World Says: Hello!>"
59
61
  end
60
62
 
61
- hello # => output matches hello.to_s
63
+ hello # => output matches hello.inspect
62
64
  end
63
65
 
64
66
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 2
9
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Katrina Owen
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-07-11 00:00:00 +02:00
17
+ date: 2011-07-27 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency