super_diff 0.5.3 → 0.6.1
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 +46 -19
- data/lib/super_diff.rb +1 -7
- data/lib/super_diff/colorized_document_extensions.rb +4 -4
- data/lib/super_diff/configuration.rb +32 -22
- data/lib/super_diff/csi.rb +2 -1
- data/lib/super_diff/diff_formatters/collection.rb +1 -1
- data/lib/super_diff/diff_formatters/multiline_string.rb +4 -4
- data/lib/super_diff/equality_matchers/array.rb +2 -2
- data/lib/super_diff/equality_matchers/default.rb +2 -2
- data/lib/super_diff/equality_matchers/hash.rb +2 -2
- data/lib/super_diff/equality_matchers/multiline_string.rb +2 -2
- data/lib/super_diff/equality_matchers/primitive.rb +2 -2
- data/lib/super_diff/equality_matchers/singleline_string.rb +2 -2
- data/lib/super_diff/gem_version.rb +45 -0
- data/lib/super_diff/rspec.rb +7 -0
- data/lib/super_diff/rspec/matcher_text_builders/base.rb +7 -7
- data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +6 -6
- data/lib/super_diff/rspec/matcher_text_builders/contain_exactly.rb +1 -1
- data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +4 -4
- data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +1 -1
- data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +5 -5
- data/lib/super_diff/rspec/monkey_patches.rb +21 -13
- data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +12 -1
- data/lib/super_diff/version.rb +1 -1
- data/spec/examples.txt +390 -5
- data/spec/integration/rspec/be_falsey_matcher_spec.rb +10 -10
- data/spec/integration/rspec/be_matcher_spec.rb +100 -100
- data/spec/integration/rspec/be_nil_matcher_spec.rb +10 -10
- data/spec/integration/rspec/be_predicate_matcher_spec.rb +103 -103
- data/spec/integration/rspec/be_truthy_matcher_spec.rb +10 -10
- data/spec/integration/rspec/contain_exactly_matcher_spec.rb +107 -107
- data/spec/integration/rspec/eq_matcher_spec.rb +230 -230
- data/spec/integration/rspec/have_attributes_matcher_spec.rb +129 -129
- data/spec/integration/rspec/have_predicate_matcher_spec.rb +65 -65
- data/spec/integration/rspec/include_matcher_spec.rb +73 -73
- data/spec/integration/rspec/match_array_matcher_spec.rb +119 -119
- data/spec/integration/rspec/match_matcher_spec.rb +274 -274
- data/spec/integration/rspec/raise_error_matcher_spec.rb +86 -86
- data/spec/integration/rspec/respond_to_matcher_spec.rb +240 -240
- data/spec/integration/rspec/third_party_matcher_spec.rb +8 -8
- data/spec/integration/rspec/unhandled_errors_spec.rb +5 -5
- data/spec/spec_helper.rb +22 -13
- data/spec/support/integration/helpers.rb +6 -2
- data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +1 -1
- data/spec/support/integration/test_programs/base.rb +2 -0
- data/spec/support/integration/test_programs/rspec_active_record.rb +1 -1
- data/spec/support/integration/test_programs/rspec_active_support.rb +17 -0
- data/spec/support/integration/test_programs/rspec_rails.rb +1 -1
- data/spec/support/shared_examples/active_record.rb +108 -108
- data/spec/support/shared_examples/hash_with_indifferent_access.rb +196 -232
- data/spec/tmp/integration_spec.rb +15 -0
- data/spec/unit/equality_matchers/main_spec.rb +403 -403
- data/super_diff.gemspec +1 -1
- metadata +11 -3
| @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            require "spec_helper"
         | 
| 2 2 |  | 
| 3 3 | 
             
            RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integration do
         | 
| 4 | 
            -
              context "when the actual | 
| 4 | 
            +
              context "when the actual   value is an object" do
         | 
| 5 5 | 
             
                context "with a small set of attributes" do
         | 
| 6 | 
            -
                  context "when all of the names are methods on the actual | 
| 6 | 
            +
                  context "when all of the names are methods on the actual   object" do
         | 
| 7 7 | 
             
                    it "produces the correct output when used in the positive" do
         | 
| 8 8 | 
             
                      as_both_colored_and_uncolored do |color_enabled|
         | 
| 9 9 | 
             
                        snippet = <<~TEST.strip
         | 
| 10 10 | 
             
                          expected = { name: "b" }
         | 
| 11 | 
            -
                          actual | 
| 11 | 
            +
                          actual   = SuperDiff::Test::Person.new(name: "a", age: 9)
         | 
| 12 12 | 
             
                          expect(actual).to have_attributes(expected)
         | 
| 13 13 | 
             
                        TEST
         | 
| 14 14 | 
             
                        program = make_plain_test_program(
         | 
| @@ -21,20 +21,20 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 21 21 | 
             
                          snippet: %|expect(actual).to have_attributes(expected)|,
         | 
| 22 22 | 
             
                          expectation: proc {
         | 
| 23 23 | 
             
                            line do
         | 
| 24 | 
            -
                              plain | 
| 25 | 
            -
                               | 
| 26 | 
            -
                              plain  | 
| 27 | 
            -
                               | 
| 28 | 
            -
                              plain | 
| 24 | 
            +
                              plain    %|Expected |
         | 
| 25 | 
            +
                              actual   %|#<SuperDiff::Test::Person name: "a", age: 9>|
         | 
| 26 | 
            +
                              plain    %| to have attributes |
         | 
| 27 | 
            +
                              expected %|(name: "b")|
         | 
| 28 | 
            +
                              plain    %|.|
         | 
| 29 29 | 
             
                            end
         | 
| 30 30 | 
             
                          },
         | 
| 31 31 | 
             
                          diff: proc {
         | 
| 32 | 
            -
                            plain_line | 
| 33 | 
            -
                            #  | 
| 34 | 
            -
                             | 
| 35 | 
            -
                             | 
| 36 | 
            -
                            plain_line | 
| 37 | 
            -
                            plain_line | 
| 32 | 
            +
                            plain_line    %|  #<SuperDiff::Test::Person {|
         | 
| 33 | 
            +
                            # expected_line %|-   name: "b",|  # FIXME
         | 
| 34 | 
            +
                            expected_line %|-   name: "b"|
         | 
| 35 | 
            +
                            actual_line   %|+   name: "a",|
         | 
| 36 | 
            +
                            plain_line    %|    age: 9|
         | 
| 37 | 
            +
                            plain_line    %|  }>|
         | 
| 38 38 | 
             
                          },
         | 
| 39 39 | 
             
                        )
         | 
| 40 40 |  | 
| @@ -48,7 +48,7 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 48 48 | 
             
                      as_both_colored_and_uncolored do |color_enabled|
         | 
| 49 49 | 
             
                        snippet = <<~TEST.strip
         | 
| 50 50 | 
             
                          expected = { name: "a" }
         | 
| 51 | 
            -
                          actual | 
| 51 | 
            +
                          actual   = SuperDiff::Test::Person.new(name: "a", age: 9)
         | 
| 52 52 | 
             
                          expect(actual).not_to have_attributes(expected)
         | 
| 53 53 | 
             
                        TEST
         | 
| 54 54 | 
             
                        program = make_plain_test_program(
         | 
| @@ -61,11 +61,11 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 61 61 | 
             
                          snippet: %|expect(actual).not_to have_attributes(expected)|,
         | 
| 62 62 | 
             
                          expectation: proc {
         | 
| 63 63 | 
             
                            line do
         | 
| 64 | 
            -
                              plain | 
| 65 | 
            -
                               | 
| 66 | 
            -
                              plain  | 
| 67 | 
            -
                               | 
| 68 | 
            -
                              plain | 
| 64 | 
            +
                              plain    %|Expected |
         | 
| 65 | 
            +
                              actual   %|#<SuperDiff::Test::Person name: "a", age: 9>|
         | 
| 66 | 
            +
                              plain    %| not to have attributes |
         | 
| 67 | 
            +
                              expected %|(name: "a")|
         | 
| 68 | 
            +
                              plain    %|.|
         | 
| 69 69 | 
             
                            end
         | 
| 70 70 | 
             
                          },
         | 
| 71 71 | 
             
                        )
         | 
| @@ -77,12 +77,12 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 77 77 | 
             
                    end
         | 
| 78 78 | 
             
                  end
         | 
| 79 79 |  | 
| 80 | 
            -
                  context "when some of the names are not methods on the actual | 
| 80 | 
            +
                  context "when some of the names are not methods on the actual   object" do
         | 
| 81 81 | 
             
                    it "produces the correct output" do
         | 
| 82 82 | 
             
                      as_both_colored_and_uncolored do |color_enabled|
         | 
| 83 83 | 
             
                        snippet = <<~TEST.strip
         | 
| 84 84 | 
             
                          expected = { name: "b", foo: "bar" }
         | 
| 85 | 
            -
                          actual | 
| 85 | 
            +
                          actual   = SuperDiff::Test::Person.new(name: "a", age: 9)
         | 
| 86 86 | 
             
                          expect(actual).to have_attributes(expected)
         | 
| 87 87 | 
             
                        TEST
         | 
| 88 88 | 
             
                        program = make_plain_test_program(
         | 
| @@ -95,23 +95,23 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 95 95 | 
             
                          snippet: %|expect(actual).to have_attributes(expected)|,
         | 
| 96 96 | 
             
                          expectation: proc {
         | 
| 97 97 | 
             
                            line do
         | 
| 98 | 
            -
                              plain | 
| 99 | 
            -
                               | 
| 100 | 
            -
                              plain  | 
| 101 | 
            -
                               | 
| 102 | 
            -
                              plain  | 
| 103 | 
            -
                               | 
| 104 | 
            -
                              plain  | 
| 98 | 
            +
                              plain    %|Expected |
         | 
| 99 | 
            +
                              actual   %|#<SuperDiff::Test::Person name: "a", age: 9>|
         | 
| 100 | 
            +
                              plain    %| to respond to |
         | 
| 101 | 
            +
                              expected %|:foo|
         | 
| 102 | 
            +
                              plain    %| with |
         | 
| 103 | 
            +
                              expected %|0|
         | 
| 104 | 
            +
                              plain    %| arguments.|
         | 
| 105 105 | 
             
                            end
         | 
| 106 106 | 
             
                          },
         | 
| 107 107 | 
             
                          diff: proc {
         | 
| 108 | 
            -
                            plain_line | 
| 109 | 
            -
                            plain_line | 
| 110 | 
            -
                            # plain_line | 
| 111 | 
            -
                            plain_line | 
| 112 | 
            -
                            #  | 
| 113 | 
            -
                             | 
| 114 | 
            -
                            plain_line | 
| 108 | 
            +
                            plain_line    %|  #<SuperDiff::Test::Person {|
         | 
| 109 | 
            +
                            plain_line    %|    name: "a",|
         | 
| 110 | 
            +
                            # plain_line    %|    age: 9,|  # FIXME
         | 
| 111 | 
            +
                            plain_line    %|    age: 9|
         | 
| 112 | 
            +
                            # expected_line %|-   foo: "bar",|  # FIXME
         | 
| 113 | 
            +
                            expected_line %|-   foo: "bar"|
         | 
| 114 | 
            +
                            plain_line    %|  }>|
         | 
| 115 115 | 
             
                          },
         | 
| 116 116 | 
             
                        )
         | 
| 117 117 |  | 
| @@ -124,7 +124,7 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 124 124 | 
             
                end
         | 
| 125 125 |  | 
| 126 126 | 
             
                context "with a large set of attributes" do
         | 
| 127 | 
            -
                  context "when all of the names are methods on the actual | 
| 127 | 
            +
                  context "when all of the names are methods on the actual   object" do
         | 
| 128 128 | 
             
                    it "produces the correct output when used in the positive" do
         | 
| 129 129 | 
             
                      as_both_colored_and_uncolored do |color_enabled|
         | 
| 130 130 | 
             
                        snippet = <<~TEST.strip
         | 
| @@ -134,7 +134,7 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 134 134 | 
             
                            state: "CA",
         | 
| 135 135 | 
             
                            zip: "91234"
         | 
| 136 136 | 
             
                          }
         | 
| 137 | 
            -
                          actual | 
| 137 | 
            +
                          actual   = SuperDiff::Test::ShippingAddress.new(
         | 
| 138 138 | 
             
                            line_1: "456 Ponderosa Ct.",
         | 
| 139 139 | 
             
                            line_2: nil,
         | 
| 140 140 | 
             
                            city: "Hill Valley",
         | 
| @@ -153,27 +153,27 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 153 153 | 
             
                          snippet: %|expect(actual).to have_attributes(expected)|,
         | 
| 154 154 | 
             
                          expectation: proc {
         | 
| 155 155 | 
             
                            line do
         | 
| 156 | 
            -
                              plain | 
| 157 | 
            -
                               | 
| 156 | 
            +
                              plain    %|          Expected |
         | 
| 157 | 
            +
                              actual   %|#<SuperDiff::Test::ShippingAddress line_1: "456 Ponderosa Ct.", line_2: nil, city: "Hill Valley", state: "CA", zip: "90382">|
         | 
| 158 158 | 
             
                            end
         | 
| 159 159 |  | 
| 160 160 | 
             
                            line do
         | 
| 161 | 
            -
                              plain | 
| 162 | 
            -
                               | 
| 161 | 
            +
                              plain    %|to have attributes |
         | 
| 162 | 
            +
                              expected %|(line_1: "123 Main St.", city: "Oakland", state: "CA", zip: "91234")|
         | 
| 163 163 | 
             
                            end
         | 
| 164 164 | 
             
                          },
         | 
| 165 165 | 
             
                          diff: proc {
         | 
| 166 | 
            -
                            plain_line | 
| 167 | 
            -
                             | 
| 168 | 
            -
                             | 
| 169 | 
            -
                            plain_line | 
| 170 | 
            -
                             | 
| 171 | 
            -
                             | 
| 172 | 
            -
                            plain_line | 
| 173 | 
            -
                            #  | 
| 174 | 
            -
                             | 
| 175 | 
            -
                             | 
| 176 | 
            -
                            plain_line | 
| 166 | 
            +
                            plain_line    %|  #<SuperDiff::Test::ShippingAddress {|
         | 
| 167 | 
            +
                            expected_line %|-   line_1: "123 Main St.",|
         | 
| 168 | 
            +
                            actual_line   %|+   line_1: "456 Ponderosa Ct.",|
         | 
| 169 | 
            +
                            plain_line    %|    line_2: nil,|
         | 
| 170 | 
            +
                            expected_line %|-   city: "Oakland",|
         | 
| 171 | 
            +
                            actual_line   %|+   city: "Hill Valley",|
         | 
| 172 | 
            +
                            plain_line    %|    state: "CA",|
         | 
| 173 | 
            +
                            # expected_line %|-   zip: "91234",|  # FIXME
         | 
| 174 | 
            +
                            expected_line %|-   zip: "91234"|
         | 
| 175 | 
            +
                            actual_line   %|+   zip: "90382"|
         | 
| 176 | 
            +
                            plain_line    %|  }>|
         | 
| 177 177 | 
             
                          },
         | 
| 178 178 | 
             
                        )
         | 
| 179 179 |  | 
| @@ -192,7 +192,7 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 192 192 | 
             
                            state: "CA",
         | 
| 193 193 | 
             
                            zip: "91234"
         | 
| 194 194 | 
             
                          }
         | 
| 195 | 
            -
                          actual | 
| 195 | 
            +
                          actual   = SuperDiff::Test::ShippingAddress.new(
         | 
| 196 196 | 
             
                            line_1: "123 Main St.",
         | 
| 197 197 | 
             
                            line_2: nil,
         | 
| 198 198 | 
             
                            city: "Oakland",
         | 
| @@ -212,13 +212,13 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 212 212 | 
             
                          newline_before_expectation: true,
         | 
| 213 213 | 
             
                          expectation: proc {
         | 
| 214 214 | 
             
                            line do
         | 
| 215 | 
            -
                              plain | 
| 216 | 
            -
                               | 
| 215 | 
            +
                              plain    %|              Expected |
         | 
| 216 | 
            +
                              actual   %|#<SuperDiff::Test::ShippingAddress line_1: "123 Main St.", line_2: nil, city: "Oakland", state: "CA", zip: "91234">|
         | 
| 217 217 | 
             
                            end
         | 
| 218 218 |  | 
| 219 219 | 
             
                            line do
         | 
| 220 | 
            -
                              plain | 
| 221 | 
            -
                               | 
| 220 | 
            +
                              plain    %|not to have attributes |
         | 
| 221 | 
            +
                              expected %|(line_1: "123 Main St.", city: "Oakland", state: "CA", zip: "91234")|
         | 
| 222 222 | 
             
                            end
         | 
| 223 223 | 
             
                          },
         | 
| 224 224 | 
             
                        )
         | 
| @@ -230,7 +230,7 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 230 230 | 
             
                    end
         | 
| 231 231 | 
             
                  end
         | 
| 232 232 |  | 
| 233 | 
            -
                  context "when some of the names are not methods on the actual | 
| 233 | 
            +
                  context "when some of the names are not methods on the actual   object" do
         | 
| 234 234 | 
             
                    it "produces the correct output" do
         | 
| 235 235 | 
             
                      as_both_colored_and_uncolored do |color_enabled|
         | 
| 236 236 | 
             
                        snippet = <<~TEST.strip
         | 
| @@ -242,7 +242,7 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 242 242 | 
             
                            foo: "bar",
         | 
| 243 243 | 
             
                            baz: "qux"
         | 
| 244 244 | 
             
                          }
         | 
| 245 | 
            -
                          actual | 
| 245 | 
            +
                          actual   = SuperDiff::Test::ShippingAddress.new(
         | 
| 246 246 | 
             
                            line_1: "456 Ponderosa Ct.",
         | 
| 247 247 | 
             
                            line_2: nil,
         | 
| 248 248 | 
             
                            city: "Hill Valley",
         | 
| @@ -261,32 +261,32 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 261 261 | 
             
                          snippet: %|expect(actual).to have_attributes(expected)|,
         | 
| 262 262 | 
             
                          expectation: proc {
         | 
| 263 263 | 
             
                            line do
         | 
| 264 | 
            -
                              plain | 
| 265 | 
            -
                               | 
| 264 | 
            +
                              plain    %|     Expected |
         | 
| 265 | 
            +
                              actual   %|#<SuperDiff::Test::ShippingAddress line_1: "456 Ponderosa Ct.", line_2: nil, city: "Hill Valley", state: "CA", zip: "90382">|
         | 
| 266 266 | 
             
                            end
         | 
| 267 267 |  | 
| 268 268 | 
             
                            line do
         | 
| 269 | 
            -
                              plain | 
| 270 | 
            -
                               | 
| 271 | 
            -
                              plain  | 
| 272 | 
            -
                               | 
| 273 | 
            -
                              plain  | 
| 274 | 
            -
                               | 
| 275 | 
            -
                              plain  | 
| 269 | 
            +
                              plain    %|to respond to |
         | 
| 270 | 
            +
                              expected %|:foo|
         | 
| 271 | 
            +
                              plain    %| and |
         | 
| 272 | 
            +
                              expected %|:baz|
         | 
| 273 | 
            +
                              plain    %| with |
         | 
| 274 | 
            +
                              expected %|0|
         | 
| 275 | 
            +
                              plain    %| arguments|
         | 
| 276 276 | 
             
                            end
         | 
| 277 277 | 
             
                          },
         | 
| 278 278 | 
             
                          diff: proc {
         | 
| 279 | 
            -
                            plain_line | 
| 280 | 
            -
                            plain_line | 
| 281 | 
            -
                            plain_line | 
| 282 | 
            -
                            plain_line | 
| 283 | 
            -
                            plain_line | 
| 284 | 
            -
                            # plain_line | 
| 285 | 
            -
                            plain_line | 
| 286 | 
            -
                            #  | 
| 287 | 
            -
                             | 
| 288 | 
            -
                             | 
| 289 | 
            -
                            plain_line | 
| 279 | 
            +
                            plain_line    %|  #<SuperDiff::Test::ShippingAddress {|
         | 
| 280 | 
            +
                            plain_line    %|    line_1: "456 Ponderosa Ct.",|
         | 
| 281 | 
            +
                            plain_line    %|    line_2: nil,|
         | 
| 282 | 
            +
                            plain_line    %|    city: "Hill Valley",|
         | 
| 283 | 
            +
                            plain_line    %|    state: "CA",|
         | 
| 284 | 
            +
                            # plain_line    %|    zip: "90382",|  # FIXME
         | 
| 285 | 
            +
                            plain_line    %|    zip: "90382"|
         | 
| 286 | 
            +
                            # expected_line %|-   foo: "bar",|  # FIXME
         | 
| 287 | 
            +
                            expected_line %|-   foo: "bar"|
         | 
| 288 | 
            +
                            expected_line %|-   baz: "qux"|
         | 
| 289 | 
            +
                            plain_line    %|  }>|
         | 
| 290 290 | 
             
                          },
         | 
| 291 291 | 
             
                        )
         | 
| 292 292 |  | 
| @@ -299,12 +299,12 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 299 299 | 
             
                end
         | 
| 300 300 | 
             
              end
         | 
| 301 301 |  | 
| 302 | 
            -
              context "when the actual | 
| 302 | 
            +
              context "when the actual   value is actually a hash instead of an object" do
         | 
| 303 303 | 
             
                it "displays the diff as if we were comparing hashes" do
         | 
| 304 304 | 
             
                  as_both_colored_and_uncolored do |color_enabled|
         | 
| 305 305 | 
             
                    snippet = <<~TEST.strip
         | 
| 306 306 | 
             
                      expected = { name: "Elliot", age: 32 }
         | 
| 307 | 
            -
                      actual | 
| 307 | 
            +
                      actual   = {}
         | 
| 308 308 | 
             
                      expect(actual).to have_attributes(expected)
         | 
| 309 309 | 
             
                    TEST
         | 
| 310 310 |  | 
| @@ -315,22 +315,22 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 315 315 | 
             
                      snippet: %|expect(actual).to have_attributes(expected)|,
         | 
| 316 316 | 
             
                      expectation: proc {
         | 
| 317 317 | 
             
                        line do
         | 
| 318 | 
            -
                          plain | 
| 319 | 
            -
                           | 
| 320 | 
            -
                          plain  | 
| 321 | 
            -
                           | 
| 322 | 
            -
                          plain  | 
| 323 | 
            -
                           | 
| 324 | 
            -
                          plain  | 
| 325 | 
            -
                           | 
| 326 | 
            -
                          plain  | 
| 318 | 
            +
                          plain    %|Expected |
         | 
| 319 | 
            +
                          actual   %|{}|
         | 
| 320 | 
            +
                          plain    %| to respond to |
         | 
| 321 | 
            +
                          expected %|:name|
         | 
| 322 | 
            +
                          plain    %| and |
         | 
| 323 | 
            +
                          expected %|:age|
         | 
| 324 | 
            +
                          plain    %| with |
         | 
| 325 | 
            +
                          expected %|0|
         | 
| 326 | 
            +
                          plain    %| arguments.|
         | 
| 327 327 | 
             
                        end
         | 
| 328 328 | 
             
                      },
         | 
| 329 329 | 
             
                      diff: proc {
         | 
| 330 | 
            -
                        plain_line | 
| 331 | 
            -
                         | 
| 332 | 
            -
                         | 
| 333 | 
            -
                        plain_line | 
| 330 | 
            +
                        plain_line    %|  {|
         | 
| 331 | 
            +
                        expected_line %|-   name: "Elliot",|
         | 
| 332 | 
            +
                        expected_line %|-   age: 32|
         | 
| 333 | 
            +
                        plain_line    %|  }|
         | 
| 334 334 | 
             
                      },
         | 
| 335 335 | 
             
                    )
         | 
| 336 336 |  | 
| @@ -359,7 +359,7 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 359 359 | 
             
                          created_at: a_value_within(1).of(Time.utc(2020, 4, 9))
         | 
| 360 360 | 
             
                        }
         | 
| 361 361 |  | 
| 362 | 
            -
                        actual | 
| 362 | 
            +
                        actual   = {}
         | 
| 363 363 |  | 
| 364 364 | 
             
                        expect(actual).to have_attributes(expected)
         | 
| 365 365 | 
             
                      TEST
         | 
| @@ -374,45 +374,45 @@ RSpec.describe "Integration with RSpec's #have_attributes matcher", type: :integ | |
| 374 374 | 
             
                        snippet: %|expect(actual).to have_attributes(expected)|,
         | 
| 375 375 | 
             
                        expectation: proc {
         | 
| 376 376 | 
             
                          line do
         | 
| 377 | 
            -
                            plain | 
| 378 | 
            -
                             | 
| 377 | 
            +
                            plain    %|     Expected |
         | 
| 378 | 
            +
                            actual   %|{}|
         | 
| 379 379 | 
             
                          end
         | 
| 380 380 |  | 
| 381 381 | 
             
                          line do
         | 
| 382 | 
            -
                            plain | 
| 383 | 
            -
                             | 
| 384 | 
            -
                            plain  | 
| 385 | 
            -
                             | 
| 386 | 
            -
                            plain  | 
| 387 | 
            -
                             | 
| 388 | 
            -
                            plain  | 
| 389 | 
            -
                             | 
| 390 | 
            -
                            plain  | 
| 391 | 
            -
                             | 
| 392 | 
            -
                            plain  | 
| 393 | 
            -
                             | 
| 394 | 
            -
                            plain  | 
| 382 | 
            +
                            plain    %|to respond to |
         | 
| 383 | 
            +
                            expected %|:name|
         | 
| 384 | 
            +
                            plain    %|, |
         | 
| 385 | 
            +
                            expected %|:shipping_address|
         | 
| 386 | 
            +
                            plain    %|, |
         | 
| 387 | 
            +
                            expected %|:order_ids|
         | 
| 388 | 
            +
                            plain    %|, |
         | 
| 389 | 
            +
                            expected %|:data|
         | 
| 390 | 
            +
                            plain    %| and |
         | 
| 391 | 
            +
                            expected %|:created_at|
         | 
| 392 | 
            +
                            plain    %| with |
         | 
| 393 | 
            +
                            expected %|0|
         | 
| 394 | 
            +
                            plain    %| arguments|
         | 
| 395 395 | 
             
                          end
         | 
| 396 396 | 
             
                        },
         | 
| 397 397 | 
             
                        diff: proc {
         | 
| 398 | 
            -
                          plain_line | 
| 399 | 
            -
                           | 
| 400 | 
            -
                           | 
| 401 | 
            -
                           | 
| 402 | 
            -
                           | 
| 403 | 
            -
                           | 
| 404 | 
            -
                           | 
| 405 | 
            -
                           | 
| 406 | 
            -
                           | 
| 407 | 
            -
                           | 
| 408 | 
            -
                           | 
| 409 | 
            -
                           | 
| 410 | 
            -
                           | 
| 411 | 
            -
                           | 
| 412 | 
            -
                           | 
| 413 | 
            -
                           | 
| 414 | 
            -
                           | 
| 415 | 
            -
                          plain_line | 
| 398 | 
            +
                          plain_line    %|  {|
         | 
| 399 | 
            +
                          expected_line %|-   name: "Elliot",|
         | 
| 400 | 
            +
                          expected_line %|-   shipping_address: #<an object having attributes (|
         | 
| 401 | 
            +
                          expected_line %|-     line_1: #<a kind of String>,|
         | 
| 402 | 
            +
                          expected_line %|-     line_2: nil,|
         | 
| 403 | 
            +
                          expected_line %|-     city: #<an instance of String>,|
         | 
| 404 | 
            +
                          expected_line %|-     state: "CA",|
         | 
| 405 | 
            +
                          expected_line %|-     zip: "91234"|
         | 
| 406 | 
            +
                          expected_line %|-   )>,|
         | 
| 407 | 
            +
                          expected_line %|-   order_ids: #<a collection including (|
         | 
| 408 | 
            +
                          expected_line %|-     1,|
         | 
| 409 | 
            +
                          expected_line %|-     2|
         | 
| 410 | 
            +
                          expected_line %|-   )>,|
         | 
| 411 | 
            +
                          expected_line %|-   data: #<a hash including (|
         | 
| 412 | 
            +
                          expected_line %|-     active: true|
         | 
| 413 | 
            +
                          expected_line %|-   )>,|
         | 
| 414 | 
            +
                          expected_line %|-   created_at: #<a value within 1 of 2020-04-09 00:00:00.000 UTC +00:00 (Time)>|
         | 
| 415 | 
            +
                          plain_line    %|  }|
         | 
| 416 416 | 
             
                        },
         | 
| 417 417 | 
             
                      )
         | 
| 418 418 |  | 
| @@ -16,11 +16,11 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 16 16 | 
             
                        snippet: snippet,
         | 
| 17 17 | 
             
                        expectation: proc {
         | 
| 18 18 | 
             
                          line do
         | 
| 19 | 
            -
                            plain | 
| 20 | 
            -
                             | 
| 21 | 
            -
                            plain  | 
| 22 | 
            -
                             | 
| 23 | 
            -
                            plain | 
| 19 | 
            +
                            plain    %|Expected |
         | 
| 20 | 
            +
                            actual   %|:words|
         | 
| 21 | 
            +
                            plain    %| to respond to |
         | 
| 22 | 
            +
                            expected %|has_power?|
         | 
| 23 | 
            +
                            plain    %|.|
         | 
| 24 24 | 
             
                          end
         | 
| 25 25 | 
             
                        },
         | 
| 26 26 | 
             
                      )
         | 
| @@ -32,7 +32,7 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 32 32 | 
             
                  end
         | 
| 33 33 | 
             
                end
         | 
| 34 34 |  | 
| 35 | 
            -
                context "when the inspected version of the actual | 
| 35 | 
            +
                context "when the inspected version of the actual   value is long" do
         | 
| 36 36 | 
             
                  it "produces the correct failure message" do
         | 
| 37 37 | 
             
                    as_both_colored_and_uncolored do |color_enabled|
         | 
| 38 38 | 
             
                      snippet = <<~TEST.strip
         | 
| @@ -50,13 +50,13 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 50 50 | 
             
                        newline_before_expectation: true,
         | 
| 51 51 | 
             
                        expectation: proc {
         | 
| 52 52 | 
             
                          line do
         | 
| 53 | 
            -
                            plain | 
| 54 | 
            -
                             | 
| 53 | 
            +
                            plain    %|     Expected |
         | 
| 54 | 
            +
                            actual   %|{ a: "lot", of: "keys", and: "things", like: "that", lets: "add", more: "keys" }|
         | 
| 55 55 | 
             
                          end
         | 
| 56 56 |  | 
| 57 57 | 
             
                          line do
         | 
| 58 | 
            -
                            plain | 
| 59 | 
            -
                             | 
| 58 | 
            +
                            plain    %|to respond to |
         | 
| 59 | 
            +
                            expected %|has_mapping?|
         | 
| 60 60 | 
             
                          end
         | 
| 61 61 | 
             
                        },
         | 
| 62 62 | 
             
                      )
         | 
| @@ -71,7 +71,7 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 71 71 |  | 
| 72 72 | 
             
              context "when the predicate method exists on the object" do
         | 
| 73 73 | 
             
                context "but is private" do
         | 
| 74 | 
            -
                  context "when the inspected version of the actual | 
| 74 | 
            +
                  context "when the inspected version of the actual   value is short" do
         | 
| 75 75 | 
             
                    it "produces the correct failure message" do
         | 
| 76 76 | 
             
                      as_both_colored_and_uncolored do |color_enabled|
         | 
| 77 77 | 
             
                        snippet = <<~TEST.strip
         | 
| @@ -91,11 +91,11 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 91 91 | 
             
                          snippet: %|expect(Robot.new).to have_arms|,
         | 
| 92 92 | 
             
                          expectation: proc {
         | 
| 93 93 | 
             
                            line do
         | 
| 94 | 
            -
                              plain | 
| 95 | 
            -
                               | 
| 96 | 
            -
                              plain  | 
| 97 | 
            -
                               | 
| 98 | 
            -
                              plain | 
| 94 | 
            +
                              plain    %|Expected |
         | 
| 95 | 
            +
                              actual   %|#<Robot>|
         | 
| 96 | 
            +
                              plain    %| to have a public method |
         | 
| 97 | 
            +
                              expected %|has_arms?|
         | 
| 98 | 
            +
                              plain    %|.|
         | 
| 99 99 | 
             
                            end
         | 
| 100 100 | 
             
                          },
         | 
| 101 101 | 
             
                        )
         | 
| @@ -108,7 +108,7 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 108 108 | 
             
                    end
         | 
| 109 109 | 
             
                  end
         | 
| 110 110 |  | 
| 111 | 
            -
                  context "when the inspected version of the actual | 
| 111 | 
            +
                  context "when the inspected version of the actual   value is long" do
         | 
| 112 112 | 
             
                    it "produces the correct failure message" do
         | 
| 113 113 | 
             
                      as_both_colored_and_uncolored do |color_enabled|
         | 
| 114 114 | 
             
                        snippet = <<~TEST.strip
         | 
| @@ -131,13 +131,13 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 131 131 | 
             
                          newline_before_expectation: true,
         | 
| 132 132 | 
             
                          expectation: proc {
         | 
| 133 133 | 
             
                            line do
         | 
| 134 | 
            -
                              plain | 
| 135 | 
            -
                               | 
| 134 | 
            +
                              plain    %|               Expected |
         | 
| 135 | 
            +
                              actual   %|{ a: "lot", of: "keys", and: "things", like: "that", lets: "add", more: "keys" }|
         | 
| 136 136 | 
             
                            end
         | 
| 137 137 |  | 
| 138 138 | 
             
                            line do
         | 
| 139 | 
            -
                              plain | 
| 140 | 
            -
                               | 
| 139 | 
            +
                              plain    %|to have a public method |
         | 
| 140 | 
            +
                              expected %|has_mapping?|
         | 
| 141 141 | 
             
                            end
         | 
| 142 142 | 
             
                          },
         | 
| 143 143 | 
             
                        )
         | 
| @@ -154,7 +154,7 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 154 154 | 
             
                context "and is public" do
         | 
| 155 155 | 
             
                  context "and returns false" do
         | 
| 156 156 | 
             
                    context "and takes arguments" do
         | 
| 157 | 
            -
                      context "when the inspected version of the actual | 
| 157 | 
            +
                      context "when the inspected version of the actual   value is short" do
         | 
| 158 158 | 
             
                        it "produces the correct failure message" do
         | 
| 159 159 | 
             
                          as_both_colored_and_uncolored do |color_enabled|
         | 
| 160 160 | 
             
                            snippet = <<~TEST.strip
         | 
| @@ -174,11 +174,11 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 174 174 | 
             
                              snippet: %|expect(Drink.new).to have_ingredients(:vodka)|,
         | 
| 175 175 | 
             
                              expectation: proc {
         | 
| 176 176 | 
             
                                line do
         | 
| 177 | 
            -
                                  plain | 
| 178 | 
            -
                                   | 
| 179 | 
            -
                                  plain  | 
| 180 | 
            -
                                   | 
| 181 | 
            -
                                  plain | 
| 177 | 
            +
                                  plain    %|Expected |
         | 
| 178 | 
            +
                                  actual   %|#<Drink>|
         | 
| 179 | 
            +
                                  plain    %| to return a truthy result for |
         | 
| 180 | 
            +
                                  expected %|has_ingredients?(:vodka)|
         | 
| 181 | 
            +
                                  plain    %|.|
         | 
| 182 182 | 
             
                                end
         | 
| 183 183 | 
             
                              },
         | 
| 184 184 | 
             
                            )
         | 
| @@ -191,7 +191,7 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 191 191 | 
             
                        end
         | 
| 192 192 | 
             
                      end
         | 
| 193 193 |  | 
| 194 | 
            -
                      context "when the inspected version of the actual | 
| 194 | 
            +
                      context "when the inspected version of the actual   value is long" do
         | 
| 195 195 | 
             
                        it "produces the correct failure message" do
         | 
| 196 196 | 
             
                          as_both_colored_and_uncolored do |color_enabled|
         | 
| 197 197 | 
             
                            snippet = <<~TEST.strip
         | 
| @@ -214,13 +214,13 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 214 214 | 
             
                              newline_before_expectation: true,
         | 
| 215 215 | 
             
                              expectation: proc {
         | 
| 216 216 | 
             
                                line do
         | 
| 217 | 
            -
                                  plain | 
| 218 | 
            -
                                   | 
| 217 | 
            +
                                  plain    %|                     Expected |
         | 
| 218 | 
            +
                                  actual   %|{ a: "lot", of: "keys", and: "things", like: "that", lets: "add", more: "keys" }|
         | 
| 219 219 | 
             
                                end
         | 
| 220 220 |  | 
| 221 221 | 
             
                                line do
         | 
| 222 | 
            -
                                  plain | 
| 223 | 
            -
                                   | 
| 222 | 
            +
                                  plain    %|to return a truthy result for |
         | 
| 223 | 
            +
                                  expected %|has_contents?("keys", "upon", "keys")|
         | 
| 224 224 | 
             
                                end
         | 
| 225 225 | 
             
                              },
         | 
| 226 226 | 
             
                            )
         | 
| @@ -235,7 +235,7 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 235 235 | 
             
                    end
         | 
| 236 236 |  | 
| 237 237 | 
             
                    context "and takes no arguments" do
         | 
| 238 | 
            -
                      context "when the inspected version of the actual | 
| 238 | 
            +
                      context "when the inspected version of the actual   value is short" do
         | 
| 239 239 | 
             
                        it "produces the correct failure message" do
         | 
| 240 240 | 
             
                          as_both_colored_and_uncolored do |color_enabled|
         | 
| 241 241 | 
             
                            snippet = <<~TEST.strip
         | 
| @@ -255,11 +255,11 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 255 255 | 
             
                              snippet: %|expect(Robot.new).to have_arms|,
         | 
| 256 256 | 
             
                              expectation: proc {
         | 
| 257 257 | 
             
                                line do
         | 
| 258 | 
            -
                                  plain | 
| 259 | 
            -
                                   | 
| 260 | 
            -
                                  plain  | 
| 261 | 
            -
                                   | 
| 262 | 
            -
                                  plain | 
| 258 | 
            +
                                  plain    %|Expected |
         | 
| 259 | 
            +
                                  actual   %|#<Robot>|
         | 
| 260 | 
            +
                                  plain    %| to return a truthy result for |
         | 
| 261 | 
            +
                                  expected %|has_arms?|
         | 
| 262 | 
            +
                                  plain    %|.|
         | 
| 263 263 | 
             
                                end
         | 
| 264 264 | 
             
                              },
         | 
| 265 265 | 
             
                            )
         | 
| @@ -272,7 +272,7 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 272 272 | 
             
                        end
         | 
| 273 273 | 
             
                      end
         | 
| 274 274 |  | 
| 275 | 
            -
                      context "when the inspected version of the actual | 
| 275 | 
            +
                      context "when the inspected version of the actual   value is long" do
         | 
| 276 276 | 
             
                        it "produces the correct failure message" do
         | 
| 277 277 | 
             
                          as_both_colored_and_uncolored do |color_enabled|
         | 
| 278 278 | 
             
                            snippet = <<~TEST.strip
         | 
| @@ -295,13 +295,13 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 295 295 | 
             
                              newline_before_expectation: true,
         | 
| 296 296 | 
             
                              expectation: proc {
         | 
| 297 297 | 
             
                                line do
         | 
| 298 | 
            -
                                  plain | 
| 299 | 
            -
                                   | 
| 298 | 
            +
                                  plain    %|                     Expected |
         | 
| 299 | 
            +
                                  actual   %|{ a: "lot", of: "keys", and: "things", like: "that", lets: "add", more: "keys" }|
         | 
| 300 300 | 
             
                                end
         | 
| 301 301 |  | 
| 302 302 | 
             
                                line do
         | 
| 303 | 
            -
                                  plain | 
| 304 | 
            -
                                   | 
| 303 | 
            +
                                  plain    %|to return a truthy result for |
         | 
| 304 | 
            +
                                  expected %|has_mapping?|
         | 
| 305 305 | 
             
                                end
         | 
| 306 306 | 
             
                              },
         | 
| 307 307 | 
             
                            )
         | 
| @@ -318,7 +318,7 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 318 318 |  | 
| 319 319 | 
             
                  context "and returns true" do
         | 
| 320 320 | 
             
                    context "and takes arguments" do
         | 
| 321 | 
            -
                      context "when the inspected version of the actual | 
| 321 | 
            +
                      context "when the inspected version of the actual   value is short" do
         | 
| 322 322 | 
             
                        it "produces the correct failure message" do
         | 
| 323 323 | 
             
                          as_both_colored_and_uncolored do |color_enabled|
         | 
| 324 324 | 
             
                            snippet = <<~TEST.strip
         | 
| @@ -338,11 +338,11 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 338 338 | 
             
                              snippet: %|expect(Drink.new).not_to have_ingredients(:vodka)|,
         | 
| 339 339 | 
             
                              expectation: proc {
         | 
| 340 340 | 
             
                                line do
         | 
| 341 | 
            -
                                  plain | 
| 342 | 
            -
                                   | 
| 343 | 
            -
                                  plain  | 
| 344 | 
            -
                                   | 
| 345 | 
            -
                                  plain | 
| 341 | 
            +
                                  plain    %|Expected |
         | 
| 342 | 
            +
                                  actual   %|#<Drink>|
         | 
| 343 | 
            +
                                  plain    %| not to return a truthy result for |
         | 
| 344 | 
            +
                                  expected %|has_ingredients?(:vodka)|
         | 
| 345 | 
            +
                                  plain    %|.|
         | 
| 346 346 | 
             
                                end
         | 
| 347 347 | 
             
                              },
         | 
| 348 348 | 
             
                            )
         | 
| @@ -355,7 +355,7 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 355 355 | 
             
                        end
         | 
| 356 356 | 
             
                      end
         | 
| 357 357 |  | 
| 358 | 
            -
                      context "when the inspected version of the actual | 
| 358 | 
            +
                      context "when the inspected version of the actual   value is long" do
         | 
| 359 359 | 
             
                        it "produces the correct failure message" do
         | 
| 360 360 | 
             
                          as_both_colored_and_uncolored do |color_enabled|
         | 
| 361 361 | 
             
                            snippet = <<~TEST.strip
         | 
| @@ -378,13 +378,13 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 378 378 | 
             
                              newline_before_expectation: true,
         | 
| 379 379 | 
             
                              expectation: proc {
         | 
| 380 380 | 
             
                                line do
         | 
| 381 | 
            -
                                  plain | 
| 382 | 
            -
                                   | 
| 381 | 
            +
                                  plain    %|                         Expected |
         | 
| 382 | 
            +
                                  actual   %|{ a: "lot", of: "keys", and: "things", like: "that", lets: "add", more: "keys" }|
         | 
| 383 383 | 
             
                                end
         | 
| 384 384 |  | 
| 385 385 | 
             
                                line do
         | 
| 386 | 
            -
                                  plain | 
| 387 | 
            -
                                   | 
| 386 | 
            +
                                  plain    %|not to return a truthy result for |
         | 
| 387 | 
            +
                                  expected %|has_contents?("keys", "upon", "keys")|
         | 
| 388 388 | 
             
                                end
         | 
| 389 389 | 
             
                              },
         | 
| 390 390 | 
             
                            )
         | 
| @@ -399,7 +399,7 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 399 399 | 
             
                    end
         | 
| 400 400 |  | 
| 401 401 | 
             
                    context "and takes no arguments" do
         | 
| 402 | 
            -
                      context "when the inspected version of the actual | 
| 402 | 
            +
                      context "when the inspected version of the actual   value is short" do
         | 
| 403 403 | 
             
                        it "produces the correct failure message when used in the negative" do
         | 
| 404 404 | 
             
                          as_both_colored_and_uncolored do |color_enabled|
         | 
| 405 405 | 
             
                            snippet = <<~TEST.strip
         | 
| @@ -419,11 +419,11 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 419 419 | 
             
                              snippet: %|expect(Robot.new).not_to have_arms|,
         | 
| 420 420 | 
             
                              expectation: proc {
         | 
| 421 421 | 
             
                                line do
         | 
| 422 | 
            -
                                  plain | 
| 423 | 
            -
                                   | 
| 424 | 
            -
                                  plain  | 
| 425 | 
            -
                                   | 
| 426 | 
            -
                                  plain | 
| 422 | 
            +
                                  plain    %|Expected |
         | 
| 423 | 
            +
                                  actual   %|#<Robot>|
         | 
| 424 | 
            +
                                  plain    %| not to return a truthy result for |
         | 
| 425 | 
            +
                                  expected %|has_arms?|
         | 
| 426 | 
            +
                                  plain    %|.|
         | 
| 427 427 | 
             
                                end
         | 
| 428 428 | 
             
                              },
         | 
| 429 429 | 
             
                            )
         | 
| @@ -436,7 +436,7 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 436 436 | 
             
                        end
         | 
| 437 437 | 
             
                      end
         | 
| 438 438 |  | 
| 439 | 
            -
                      context "when the inspected version of the actual | 
| 439 | 
            +
                      context "when the inspected version of the actual   value is long" do
         | 
| 440 440 | 
             
                        it "produces the correct failure message when used in the negative" do
         | 
| 441 441 | 
             
                          as_both_colored_and_uncolored do |color_enabled|
         | 
| 442 442 | 
             
                            snippet = <<~TEST.strip
         | 
| @@ -459,13 +459,13 @@ RSpec.describe "Integration with RSpec's #have_<predicate> matcher", type: :inte | |
| 459 459 | 
             
                              newline_before_expectation: true,
         | 
| 460 460 | 
             
                              expectation: proc {
         | 
| 461 461 | 
             
                                line do
         | 
| 462 | 
            -
                                  plain | 
| 463 | 
            -
                                   | 
| 462 | 
            +
                                  plain    %|                         Expected |
         | 
| 463 | 
            +
                                  actual   %|{ a: "lot", of: "keys", and: "things", like: "that", lets: "add", more: "keys" }|
         | 
| 464 464 | 
             
                                end
         | 
| 465 465 |  | 
| 466 466 | 
             
                                line do
         | 
| 467 | 
            -
                                  plain | 
| 468 | 
            -
                                   | 
| 467 | 
            +
                                  plain    %|not to return a truthy result for |
         | 
| 468 | 
            +
                                  expected %|has_mapping?|
         | 
| 469 469 | 
             
                                end
         | 
| 470 470 | 
             
                              },
         | 
| 471 471 | 
             
                            )
         |