super_diff 0.12.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -19
  3. data/lib/super_diff/active_record/differs/active_record_relation.rb +2 -0
  4. data/lib/super_diff/active_record/differs.rb +3 -1
  5. data/lib/super_diff/active_record/inspection_tree_builders/active_record_model.rb +7 -5
  6. data/lib/super_diff/active_record/inspection_tree_builders/active_record_relation.rb +12 -10
  7. data/lib/super_diff/active_record/inspection_tree_builders.rb +4 -2
  8. data/lib/super_diff/active_record/monkey_patches.rb +4 -2
  9. data/lib/super_diff/active_record/object_inspection.rb +6 -4
  10. data/lib/super_diff/active_record/operation_tree_builders/active_record_model.rb +3 -1
  11. data/lib/super_diff/active_record/operation_tree_builders/active_record_relation.rb +3 -1
  12. data/lib/super_diff/active_record/operation_tree_builders.rb +4 -2
  13. data/lib/super_diff/active_record/operation_tree_flatteners/active_record_relation.rb +4 -2
  14. data/lib/super_diff/active_record/operation_tree_flatteners.rb +3 -1
  15. data/lib/super_diff/active_record/operation_trees/active_record_relation.rb +2 -0
  16. data/lib/super_diff/active_record/operation_trees.rb +3 -1
  17. data/lib/super_diff/active_record.rb +10 -8
  18. data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +2 -0
  19. data/lib/super_diff/active_support/differs.rb +3 -1
  20. data/lib/super_diff/active_support/inspection_tree_builders/hash_with_indifferent_access.rb +16 -14
  21. data/lib/super_diff/active_support/inspection_tree_builders/ordered_options.rb +16 -14
  22. data/lib/super_diff/active_support/inspection_tree_builders.rb +4 -2
  23. data/lib/super_diff/active_support/object_inspection.rb +6 -4
  24. data/lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb +6 -4
  25. data/lib/super_diff/active_support/operation_tree_builders.rb +3 -1
  26. data/lib/super_diff/active_support/operation_tree_flatteners/hash_with_indifferent_access.rb +4 -2
  27. data/lib/super_diff/active_support/operation_tree_flatteners.rb +3 -1
  28. data/lib/super_diff/active_support/operation_trees/hash_with_indifferent_access.rb +2 -0
  29. data/lib/super_diff/active_support/operation_trees.rb +3 -1
  30. data/lib/super_diff/active_support.rb +8 -6
  31. data/lib/super_diff/basic/diff_formatters/collection.rb +18 -18
  32. data/lib/super_diff/basic/diff_formatters/multiline_string.rb +2 -0
  33. data/lib/super_diff/basic/diff_formatters.rb +4 -2
  34. data/lib/super_diff/basic/differs/array.rb +2 -0
  35. data/lib/super_diff/basic/differs/custom_object.rb +3 -1
  36. data/lib/super_diff/basic/differs/date_like.rb +2 -0
  37. data/lib/super_diff/basic/differs/default_object.rb +3 -1
  38. data/lib/super_diff/basic/differs/hash.rb +2 -0
  39. data/lib/super_diff/basic/differs/multiline_string.rb +2 -0
  40. data/lib/super_diff/basic/differs/time_like.rb +2 -0
  41. data/lib/super_diff/basic/differs.rb +11 -9
  42. data/lib/super_diff/basic/inspection_tree_builders/array.rb +5 -3
  43. data/lib/super_diff/basic/inspection_tree_builders/custom_object.rb +5 -3
  44. data/lib/super_diff/basic/inspection_tree_builders/data_object.rb +42 -0
  45. data/lib/super_diff/basic/inspection_tree_builders/date_like.rb +7 -5
  46. data/lib/super_diff/basic/inspection_tree_builders/default_object.rb +7 -5
  47. data/lib/super_diff/basic/inspection_tree_builders/hash.rb +7 -5
  48. data/lib/super_diff/basic/inspection_tree_builders/primitive.rb +3 -1
  49. data/lib/super_diff/basic/inspection_tree_builders/range_object.rb +19 -0
  50. data/lib/super_diff/basic/inspection_tree_builders/time_like.rb +8 -8
  51. data/lib/super_diff/basic/inspection_tree_builders.rb +18 -8
  52. data/lib/super_diff/basic/operation_tree_builders/array.rb +6 -4
  53. data/lib/super_diff/basic/operation_tree_builders/custom_object.rb +3 -1
  54. data/lib/super_diff/basic/operation_tree_builders/data_object.rb +20 -0
  55. data/lib/super_diff/basic/operation_tree_builders/date_like.rb +2 -0
  56. data/lib/super_diff/basic/operation_tree_builders/default_object.rb +32 -31
  57. data/lib/super_diff/basic/operation_tree_builders/hash.rb +49 -46
  58. data/lib/super_diff/basic/operation_tree_builders/multiline_string.rb +5 -3
  59. data/lib/super_diff/basic/operation_tree_builders/time_like.rb +5 -3
  60. data/lib/super_diff/basic/operation_tree_builders.rb +15 -9
  61. data/lib/super_diff/basic/operation_tree_flatteners/array.rb +4 -2
  62. data/lib/super_diff/basic/operation_tree_flatteners/collection.rb +11 -11
  63. data/lib/super_diff/basic/operation_tree_flatteners/custom_object.rb +5 -3
  64. data/lib/super_diff/basic/operation_tree_flatteners/default_object.rb +6 -5
  65. data/lib/super_diff/basic/operation_tree_flatteners/hash.rb +5 -3
  66. data/lib/super_diff/basic/operation_tree_flatteners/multiline_string.rb +3 -1
  67. data/lib/super_diff/basic/operation_tree_flatteners.rb +8 -6
  68. data/lib/super_diff/basic/operation_trees/array.rb +2 -0
  69. data/lib/super_diff/basic/operation_trees/custom_object.rb +2 -0
  70. data/lib/super_diff/basic/operation_trees/default_object.rb +6 -4
  71. data/lib/super_diff/basic/operation_trees/hash.rb +2 -0
  72. data/lib/super_diff/basic/operation_trees/multiline_string.rb +3 -1
  73. data/lib/super_diff/basic/operation_trees.rb +9 -7
  74. data/lib/super_diff/basic.rb +12 -7
  75. data/lib/super_diff/core/abstract_differ.rb +2 -0
  76. data/lib/super_diff/core/abstract_inspection_tree_builder.rb +2 -0
  77. data/lib/super_diff/core/abstract_operation_tree.rb +4 -2
  78. data/lib/super_diff/core/abstract_operation_tree_builder.rb +15 -18
  79. data/lib/super_diff/core/abstract_operation_tree_flattener.rb +5 -3
  80. data/lib/super_diff/core/binary_operation.rb +3 -1
  81. data/lib/super_diff/core/colorized_document_extensions.rb +2 -0
  82. data/lib/super_diff/core/configuration.rb +23 -43
  83. data/lib/super_diff/core/differ_dispatcher.rb +4 -2
  84. data/lib/super_diff/core/gem_version.rb +2 -0
  85. data/lib/super_diff/core/helpers.rb +14 -12
  86. data/lib/super_diff/core/implementation_checks.rb +6 -2
  87. data/lib/super_diff/core/inspection_tree.rb +38 -38
  88. data/lib/super_diff/core/inspection_tree_builder_dispatcher.rb +5 -5
  89. data/lib/super_diff/core/inspection_tree_nodes/as_lines_when_rendering_to_lines.rb +3 -1
  90. data/lib/super_diff/core/inspection_tree_nodes/as_prefix_when_rendering_to_lines.rb +2 -0
  91. data/lib/super_diff/core/inspection_tree_nodes/as_prelude_when_rendering_to_lines.rb +2 -0
  92. data/lib/super_diff/core/inspection_tree_nodes/as_single_line.rb +2 -0
  93. data/lib/super_diff/core/inspection_tree_nodes/base.rb +9 -9
  94. data/lib/super_diff/core/inspection_tree_nodes/inspection.rb +2 -0
  95. data/lib/super_diff/core/inspection_tree_nodes/nesting.rb +2 -0
  96. data/lib/super_diff/core/inspection_tree_nodes/only_when.rb +5 -1
  97. data/lib/super_diff/core/inspection_tree_nodes/text.rb +2 -0
  98. data/lib/super_diff/core/inspection_tree_nodes/when_empty.rb +3 -1
  99. data/lib/super_diff/core/inspection_tree_nodes/when_non_empty.rb +3 -1
  100. data/lib/super_diff/core/inspection_tree_nodes/when_rendering_to_lines.rb +3 -1
  101. data/lib/super_diff/core/inspection_tree_nodes/when_rendering_to_string.rb +2 -0
  102. data/lib/super_diff/core/inspection_tree_nodes.rb +16 -14
  103. data/lib/super_diff/core/line.rb +9 -7
  104. data/lib/super_diff/core/no_differ_available_error.rb +7 -5
  105. data/lib/super_diff/core/no_inspection_tree_builder_available_error.rb +5 -3
  106. data/lib/super_diff/core/no_operation_tree_available_error.rb +4 -2
  107. data/lib/super_diff/core/no_operation_tree_builder_available_error.rb +7 -5
  108. data/lib/super_diff/core/operation_tree_builder_dispatcher.rb +3 -3
  109. data/lib/super_diff/core/operation_tree_finder.rb +8 -8
  110. data/lib/super_diff/core/prefix_for_next_inspection_tree_node.rb +2 -0
  111. data/lib/super_diff/core/prelude_for_next_inspection_tree_node.rb +2 -0
  112. data/lib/super_diff/core/recursion_guard.rb +6 -4
  113. data/lib/super_diff/core/tiered_lines.rb +2 -0
  114. data/lib/super_diff/core/tiered_lines_elider.rb +53 -54
  115. data/lib/super_diff/core/tiered_lines_formatter.rb +6 -4
  116. data/lib/super_diff/core/unary_operation.rb +2 -0
  117. data/lib/super_diff/core.rb +31 -29
  118. data/lib/super_diff/csi/bold_sequence.rb +2 -0
  119. data/lib/super_diff/csi/color.rb +4 -4
  120. data/lib/super_diff/csi/color_sequence_block.rb +3 -1
  121. data/lib/super_diff/csi/colorized_document.rb +7 -9
  122. data/lib/super_diff/csi/document.rb +15 -18
  123. data/lib/super_diff/csi/eight_bit_color.rb +32 -37
  124. data/lib/super_diff/csi/four_bit_color.rb +12 -9
  125. data/lib/super_diff/csi/reset_sequence.rb +2 -0
  126. data/lib/super_diff/csi/twenty_four_bit_color.rb +22 -21
  127. data/lib/super_diff/csi/uncolorized_document.rb +2 -0
  128. data/lib/super_diff/csi.rb +12 -42
  129. data/lib/super_diff/differs.rb +6 -4
  130. data/lib/super_diff/equality_matchers/array.rb +18 -16
  131. data/lib/super_diff/equality_matchers/base.rb +6 -4
  132. data/lib/super_diff/equality_matchers/default.rb +5 -3
  133. data/lib/super_diff/equality_matchers/defaults.rb +3 -1
  134. data/lib/super_diff/equality_matchers/hash.rb +18 -16
  135. data/lib/super_diff/equality_matchers/main.rb +3 -1
  136. data/lib/super_diff/equality_matchers/multiline_string.rb +18 -16
  137. data/lib/super_diff/equality_matchers/primitive.rb +15 -13
  138. data/lib/super_diff/equality_matchers/singleline_string.rb +16 -14
  139. data/lib/super_diff/equality_matchers.rb +11 -9
  140. data/lib/super_diff/errors.rb +4 -2
  141. data/lib/super_diff/object_inspection.rb +17 -15
  142. data/lib/super_diff/operation_tree_builders.rb +6 -4
  143. data/lib/super_diff/operation_tree_flatteners.rb +6 -4
  144. data/lib/super_diff/operation_trees.rb +6 -4
  145. data/lib/super_diff/operations.rb +4 -2
  146. data/lib/super_diff/rails.rb +4 -2
  147. data/lib/super_diff/rspec/augmented_matcher.rb +3 -1
  148. data/lib/super_diff/rspec/differ.rb +16 -7
  149. data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +2 -0
  150. data/lib/super_diff/rspec/differs/collection_including.rb +2 -0
  151. data/lib/super_diff/rspec/differs/hash_including.rb +2 -0
  152. data/lib/super_diff/rspec/differs/object_having_attributes.rb +2 -0
  153. data/lib/super_diff/rspec/differs.rb +6 -4
  154. data/lib/super_diff/rspec/inspection_tree_builders/collection_containing_exactly.rb +12 -10
  155. data/lib/super_diff/rspec/inspection_tree_builders/collection_including.rb +10 -8
  156. data/lib/super_diff/rspec/inspection_tree_builders/double.rb +20 -18
  157. data/lib/super_diff/rspec/inspection_tree_builders/generic_describable_matcher.rb +2 -0
  158. data/lib/super_diff/rspec/inspection_tree_builders/hash_including.rb +10 -8
  159. data/lib/super_diff/rspec/inspection_tree_builders/instance_of.rb +2 -0
  160. data/lib/super_diff/rspec/inspection_tree_builders/kind_of.rb +2 -0
  161. data/lib/super_diff/rspec/inspection_tree_builders/object_having_attributes.rb +12 -10
  162. data/lib/super_diff/rspec/inspection_tree_builders/primitive.rb +2 -0
  163. data/lib/super_diff/rspec/inspection_tree_builders/value_within.rb +6 -4
  164. data/lib/super_diff/rspec/inspection_tree_builders.rb +12 -10
  165. data/lib/super_diff/rspec/matcher_text_builders/base.rb +12 -12
  166. data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +19 -17
  167. data/lib/super_diff/rspec/matcher_text_builders/contain_exactly.rb +3 -1
  168. data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +7 -5
  169. data/lib/super_diff/rspec/matcher_text_builders/match.rb +6 -4
  170. data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +5 -3
  171. data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +20 -18
  172. data/lib/super_diff/rspec/matcher_text_builders.rb +9 -7
  173. data/lib/super_diff/rspec/matcher_text_template.rb +34 -39
  174. data/lib/super_diff/rspec/monkey_patches.rb +129 -56
  175. data/lib/super_diff/rspec/object_inspection.rb +7 -5
  176. data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +4 -4
  177. data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +2 -0
  178. data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +2 -0
  179. data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +2 -0
  180. data/lib/super_diff/rspec/operation_tree_builders.rb +6 -4
  181. data/lib/super_diff/rspec-rails.rb +4 -2
  182. data/lib/super_diff/rspec.rb +27 -14
  183. data/lib/super_diff/version.rb +3 -1
  184. data/lib/super_diff.rb +24 -27
  185. data/super_diff.gemspec +20 -18
  186. metadata +15 -182
  187. data/spec/examples.txt +0 -704
  188. data/spec/integration/rails/active_record_spec.rb +0 -21
  189. data/spec/integration/rails/active_support_spec.rb +0 -19
  190. data/spec/integration/rails/engines_spec.rb +0 -25
  191. data/spec/integration/rails/hash_with_indifferent_access_spec.rb +0 -21
  192. data/spec/integration/rspec/be_falsey_matcher_spec.rb +0 -58
  193. data/spec/integration/rspec/be_matcher_spec.rb +0 -605
  194. data/spec/integration/rspec/be_nil_matcher_spec.rb +0 -57
  195. data/spec/integration/rspec/be_predicate_matcher_spec.rb +0 -615
  196. data/spec/integration/rspec/be_truthy_matcher_spec.rb +0 -62
  197. data/spec/integration/rspec/contain_exactly_matcher_spec.rb +0 -377
  198. data/spec/integration/rspec/eq_matcher_spec.rb +0 -1066
  199. data/spec/integration/rspec/generic_describable_matchers_spec.rb +0 -177
  200. data/spec/integration/rspec/have_attributes_matcher_spec.rb +0 -443
  201. data/spec/integration/rspec/have_predicate_matcher_spec.rb +0 -478
  202. data/spec/integration/rspec/include_matcher_spec.rb +0 -452
  203. data/spec/integration/rspec/magic_metadata_spec.rb +0 -51
  204. data/spec/integration/rspec/match_array_matcher_spec.rb +0 -424
  205. data/spec/integration/rspec/match_matcher_spec.rb +0 -1359
  206. data/spec/integration/rspec/raise_error_matcher_spec.rb +0 -1488
  207. data/spec/integration/rspec/respond_to_matcher_spec.rb +0 -999
  208. data/spec/integration/rspec/third_party_matcher_spec.rb +0 -245
  209. data/spec/integration/rspec/unhandled_errors_spec.rb +0 -150
  210. data/spec/internal/log/test.log +0 -0
  211. data/spec/spec_helper.rb +0 -90
  212. data/spec/support/colorizer.rb +0 -9
  213. data/spec/support/command_runner.rb +0 -253
  214. data/spec/support/helpers.rb +0 -21
  215. data/spec/support/integration/helpers.rb +0 -124
  216. data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +0 -104
  217. data/spec/support/integration/matchers.rb +0 -177
  218. data/spec/support/integration/test_programs/base.rb +0 -143
  219. data/spec/support/integration/test_programs/plain.rb +0 -19
  220. data/spec/support/integration/test_programs/rspec_active_record.rb +0 -20
  221. data/spec/support/integration/test_programs/rspec_active_support.rb +0 -20
  222. data/spec/support/integration/test_programs/rspec_rails.rb +0 -20
  223. data/spec/support/integration/test_programs/rspec_rails_engine.rb +0 -20
  224. data/spec/support/models/a.rb +0 -11
  225. data/spec/support/models/active_record/person.rb +0 -28
  226. data/spec/support/models/active_record/query.rb +0 -15
  227. data/spec/support/models/active_record/shipping_address.rb +0 -24
  228. data/spec/support/models/customer.rb +0 -22
  229. data/spec/support/models/empty_class.rb +0 -6
  230. data/spec/support/models/item.rb +0 -10
  231. data/spec/support/models/order.rb +0 -9
  232. data/spec/support/models/person.rb +0 -20
  233. data/spec/support/models/player.rb +0 -30
  234. data/spec/support/models/shipping_address.rb +0 -25
  235. data/spec/support/shared_examples/active_record.rb +0 -428
  236. data/spec/support/shared_examples/active_support.rb +0 -188
  237. data/spec/support/shared_examples/elided_diffs.rb +0 -938
  238. data/spec/support/shared_examples/hash_with_indifferent_access.rb +0 -749
  239. data/spec/support/shared_examples/key.rb +0 -123
  240. data/spec/support/unit/helpers.rb +0 -24
  241. data/spec/support/unit/matchers/be_deprecated_in_favor_of.rb +0 -39
  242. data/spec/support/unit/matchers/match_output.rb +0 -40
  243. data/spec/unit/active_record/object_inspection_spec.rb +0 -289
  244. data/spec/unit/active_support/object_inspection_spec.rb +0 -170
  245. data/spec/unit/basic/operation_tree_flatteners/array_spec.rb +0 -637
  246. data/spec/unit/basic/operation_tree_flatteners/custom_object_spec.rb +0 -685
  247. data/spec/unit/basic/operation_tree_flatteners/default_object_spec.rb +0 -685
  248. data/spec/unit/basic/operation_tree_flatteners/hash_spec.rb +0 -671
  249. data/spec/unit/basic/operation_tree_flatteners/multiline_string_spec.rb +0 -131
  250. data/spec/unit/core/helpers_spec.rb +0 -68
  251. data/spec/unit/core/tiered_lines_elider_spec.rb +0 -6328
  252. data/spec/unit/core/tiered_lines_formatter_spec.rb +0 -131
  253. data/spec/unit/deprecations_spec.rb +0 -176
  254. data/spec/unit/equality_matchers/main_spec.rb +0 -1842
  255. data/spec/unit/rspec/matchers/be_compared_to_spec.rb +0 -23
  256. data/spec/unit/rspec/matchers/be_falsey_spec.rb +0 -9
  257. data/spec/unit/rspec/matchers/be_nil_spec.rb +0 -9
  258. data/spec/unit/rspec/matchers/be_predicate_spec.rb +0 -31
  259. data/spec/unit/rspec/matchers/be_spec.rb +0 -17
  260. data/spec/unit/rspec/matchers/be_truthy_spec.rb +0 -9
  261. data/spec/unit/rspec/matchers/contain_exactly_spec.rb +0 -11
  262. data/spec/unit/rspec/matchers/eq_spec.rb +0 -9
  263. data/spec/unit/rspec/matchers/have_attributes_spec.rb +0 -11
  264. data/spec/unit/rspec/matchers/have_predicate_spec.rb +0 -21
  265. data/spec/unit/rspec/matchers/include_spec.rb +0 -21
  266. data/spec/unit/rspec/matchers/match_array_spec.rb +0 -11
  267. data/spec/unit/rspec/matchers/match_spec.rb +0 -9
  268. data/spec/unit/rspec/matchers/raise_error_spec.rb +0 -77
  269. data/spec/unit/rspec/matchers/respond_to_spec.rb +0 -85
  270. data/spec/unit/rspec/object_inspection/rspec_matcher_spec.rb +0 -91
  271. data/spec/unit/rspec/object_inspection_spec.rb +0 -471
  272. data/spec/unit/super_diff_spec.rb +0 -2115
@@ -1,615 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "Integration with RSpec's #be_<predicate> matcher",
4
- type: :integration do
5
- # rubocop:disable Metrics/BlockLength
6
- %w[be be_a be_an].each do |prefix|
7
- # rubocop:enable Metrics/BlockLength
8
- context "using #{prefix}_<predicate>" do
9
- context "when the predicate method doesn't exist on the object" do
10
- context "when the inspected version of the actual value is short" do
11
- it "produces the correct failure message" do
12
- as_both_colored_and_uncolored do |color_enabled|
13
- snippet = %|expect(:foo).to #{prefix}_strong|
14
- program =
15
- make_plain_test_program(snippet, color_enabled: color_enabled)
16
-
17
- expected_output =
18
- build_expected_output(
19
- color_enabled: color_enabled,
20
- snippet: snippet,
21
- expectation:
22
- proc do
23
- line do
24
- plain "Expected "
25
- actual ":foo"
26
- plain " to respond to "
27
- expected "strong?"
28
- plain " or "
29
- expected "strongs?"
30
- plain "."
31
- end
32
- end
33
- )
34
-
35
- expect(program).to produce_output_when_run(
36
- expected_output
37
- ).in_color(color_enabled)
38
- end
39
- end
40
- end
41
-
42
- context "when the inspected version of the actual value is long" do
43
- it "produces the correct failure message" do
44
- as_both_colored_and_uncolored do |color_enabled|
45
- snippet = <<~TEST.strip
46
- hash = { foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz", aaaaaa: "bbbbbb" }
47
- expect(hash).to #{prefix}_strong
48
- TEST
49
- program =
50
- make_plain_test_program(snippet, color_enabled: color_enabled)
51
-
52
- expected_output =
53
- build_expected_output(
54
- color_enabled: color_enabled,
55
- snippet: %|expect(hash).to #{prefix}_strong|,
56
- newline_before_expectation: true,
57
- expectation:
58
- proc do
59
- line do
60
- plain " Expected "
61
- actual %|{ foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz", aaaaaa: "bbbbbb" }|
62
- end
63
-
64
- line do
65
- plain "to respond to "
66
- expected "strong?"
67
- plain " or "
68
- expected "strongs?"
69
- end
70
- end
71
- )
72
-
73
- expect(program).to produce_output_when_run(
74
- expected_output
75
- ).in_color(color_enabled)
76
- end
77
- end
78
- end
79
- end
80
-
81
- context "when the predicate method exists on the object" do
82
- context "but is private" do
83
- context "when the inspected version of the actual value is short" do
84
- it "produces the correct failure message" do
85
- as_both_colored_and_uncolored do |color_enabled|
86
- snippet = <<~TEST.strip
87
- class Foo
88
- private def strong?; end
89
- end
90
-
91
- expect(Foo.new).to #{prefix}_strong
92
- TEST
93
- program =
94
- make_plain_test_program(snippet, color_enabled: color_enabled)
95
-
96
- expected_output =
97
- build_expected_output(
98
- color_enabled: color_enabled,
99
- snippet: %|expect(Foo.new).to #{prefix}_strong|,
100
- expectation:
101
- proc do
102
- line do
103
- plain "Expected "
104
- actual "#<Foo>"
105
- plain " to have a public method "
106
- expected "strong?"
107
- plain " or "
108
- expected "strongs?"
109
- plain "."
110
- end
111
- end
112
- )
113
-
114
- expect(program).to produce_output_when_run(
115
- expected_output
116
- ).in_color(color_enabled).removing_object_ids
117
- end
118
- end
119
- end
120
-
121
- context "when the inspected version of the actual value is long" do
122
- it "produces the correct failure message" do
123
- as_both_colored_and_uncolored do |color_enabled|
124
- snippet = <<~TEST.strip
125
- hash = { foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz" }
126
-
127
- class << hash
128
- private def strong?; end
129
- end
130
-
131
- expect(hash).to #{prefix}_strong
132
- TEST
133
- program =
134
- make_plain_test_program(snippet, color_enabled: color_enabled)
135
-
136
- expected_output =
137
- build_expected_output(
138
- color_enabled: color_enabled,
139
- snippet: %|expect(hash).to #{prefix}_strong|,
140
- newline_before_expectation: true,
141
- expectation:
142
- proc do
143
- line do
144
- plain " Expected "
145
- actual %|{ foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz" }|
146
- end
147
-
148
- line do
149
- plain "to have a public method "
150
- expected "strong?"
151
- plain " or "
152
- expected "strongs?"
153
- end
154
- end
155
- )
156
-
157
- expect(program).to produce_output_when_run(
158
- expected_output
159
- ).in_color(color_enabled).removing_object_ids
160
- end
161
- end
162
- end
163
- end
164
-
165
- context "and is public" do
166
- context "and returns false" do
167
- context "but is called #true?" do
168
- context "when the inspected version of the actual value is short" do
169
- it "produces the correct failure message" do
170
- as_both_colored_and_uncolored do |color_enabled|
171
- snippet = <<~TEST.strip
172
- class Foo
173
- def true?; false; end
174
- end
175
-
176
- expect(Foo.new).to #{prefix}_true
177
- TEST
178
- program =
179
- make_plain_test_program(
180
- snippet,
181
- color_enabled: color_enabled
182
- )
183
-
184
- expected_output =
185
- build_expected_output(
186
- color_enabled: color_enabled,
187
- snippet: %|expect(Foo.new).to #{prefix}_true|,
188
- newline_before_expectation: true,
189
- expectation:
190
- proc do
191
- line do
192
- plain "Expected "
193
- actual "#<Foo>"
194
- plain " to return a truthy result for "
195
- expected "true?"
196
- plain " or "
197
- expected "trues?"
198
- plain "."
199
- end
200
-
201
- newline
202
-
203
- line do
204
- plain "(Perhaps you want to use "
205
- blue "be(true)"
206
- plain " or "
207
- blue "be_truthy"
208
- plain " instead?)"
209
- end
210
- end
211
- )
212
-
213
- expect(program).to produce_output_when_run(
214
- expected_output
215
- ).in_color(color_enabled).removing_object_ids
216
- end
217
- end
218
- end
219
-
220
- context "when the inspected version of the actual value is long" do
221
- it "produces the correct failure message" do
222
- as_both_colored_and_uncolored do |color_enabled|
223
- snippet = <<~TEST.strip
224
- hash = {
225
- foo: "bar",
226
- baz: "qux",
227
- blargh: "foz",
228
- fizz: "buzz"
229
- }
230
-
231
- class << hash
232
- def true?; false; end
233
- end
234
-
235
- expect(hash).to #{prefix}_true
236
- TEST
237
- program =
238
- make_plain_test_program(
239
- snippet,
240
- color_enabled: color_enabled
241
- )
242
-
243
- expected_output =
244
- build_expected_output(
245
- color_enabled: color_enabled,
246
- snippet: %|expect(hash).to #{prefix}_true|,
247
- newline_before_expectation: true,
248
- expectation:
249
- proc do
250
- line do
251
- plain " Expected "
252
- actual %|{ foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz" }|
253
- end
254
-
255
- line do
256
- plain "to return a truthy result for "
257
- expected "true?"
258
- plain " or "
259
- expected "trues?"
260
- end
261
-
262
- newline
263
-
264
- line do
265
- plain "(Perhaps you want to use "
266
- blue "be(true)"
267
- plain " or "
268
- blue "be_truthy"
269
- plain " instead?)"
270
- end
271
- end
272
- )
273
-
274
- expect(program).to produce_output_when_run(
275
- expected_output
276
- ).in_color(color_enabled).removing_object_ids
277
- end
278
- end
279
- end
280
- end
281
-
282
- context "but is called #false?" do
283
- it "produces the correct failure message" do
284
- as_both_colored_and_uncolored do |color_enabled|
285
- snippet = <<~TEST.strip
286
- class X
287
- def false?; false; end
288
- end
289
-
290
- expect(X.new).to #{prefix}_false
291
- TEST
292
- program =
293
- make_plain_test_program(
294
- snippet,
295
- color_enabled: color_enabled
296
- )
297
-
298
- expected_output =
299
- build_expected_output(
300
- color_enabled: color_enabled,
301
- snippet: %|expect(X.new).to #{prefix}_false|,
302
- newline_before_expectation: true,
303
- expectation:
304
- proc do
305
- line do
306
- plain "Expected "
307
- actual "#<X>"
308
- plain " to return a truthy result for "
309
- expected "false?"
310
- plain " or "
311
- expected "falses?"
312
- plain "."
313
- end
314
- end
315
- )
316
-
317
- expect(program).to produce_output_when_run(
318
- expected_output
319
- ).in_color(color_enabled).removing_object_ids
320
- end
321
- end
322
- end
323
-
324
- context "and is called neither #true? nor #false?" do
325
- context "and is singular" do
326
- context "when the inspected version of the actual value is short" do
327
- it "produces the correct failure message" do
328
- as_both_colored_and_uncolored do |color_enabled|
329
- snippet = <<~TEST.strip
330
- class X
331
- def y?; false; end
332
- end
333
-
334
- expect(X.new).to #{prefix}_y
335
- TEST
336
- program =
337
- make_plain_test_program(
338
- snippet,
339
- color_enabled: color_enabled
340
- )
341
-
342
- expected_output =
343
- build_expected_output(
344
- color_enabled: color_enabled,
345
- snippet: %|expect(X.new).to #{prefix}_y|,
346
- expectation:
347
- proc do
348
- line do
349
- plain "Expected "
350
- actual "#<X>"
351
- plain " to return a truthy result for "
352
- expected "y?"
353
- plain " or "
354
- expected "ys?"
355
- plain "."
356
- end
357
- end
358
- )
359
-
360
- expect(program).to produce_output_when_run(
361
- expected_output
362
- ).in_color(color_enabled).removing_object_ids
363
- end
364
- end
365
- end
366
-
367
- context "when the inspected version of the actual value is long" do
368
- it "produces the correct failure message" do
369
- as_both_colored_and_uncolored do |color_enabled|
370
- snippet = <<~TEST.strip
371
- hash = {
372
- foo: "bar",
373
- baz: "qux",
374
- blargh: "foz",
375
- fizz: "buzz",
376
- aaaaaa: "bbbbbb"
377
- }
378
-
379
- class << hash
380
- def y?; false; end
381
- end
382
-
383
- expect(hash).to #{prefix}_y
384
- TEST
385
- program =
386
- make_plain_test_program(
387
- snippet,
388
- color_enabled: color_enabled
389
- )
390
-
391
- expected_output =
392
- build_expected_output(
393
- color_enabled: color_enabled,
394
- snippet: %|expect(hash).to #{prefix}_y|,
395
- newline_before_expectation: true,
396
- expectation:
397
- proc do
398
- line do
399
- plain " Expected "
400
- actual %|{ foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz", aaaaaa: "bbbbbb" }|
401
- end
402
-
403
- line do
404
- plain "to return a truthy result for "
405
- expected "y?"
406
- plain " or "
407
- expected "ys?"
408
- end
409
- end
410
- )
411
-
412
- expect(program).to produce_output_when_run(
413
- expected_output
414
- ).in_color(color_enabled).removing_object_ids
415
- end
416
- end
417
- end
418
- end
419
-
420
- context "and is plural" do
421
- context "when the inspected version of the actual value is short" do
422
- it "produces the correct failure message" do
423
- as_both_colored_and_uncolored do |color_enabled|
424
- snippet = <<~TEST.strip
425
- class X
426
- def ys?; false; end
427
- end
428
-
429
- expect(X.new).to #{prefix}_y
430
- TEST
431
- program =
432
- make_plain_test_program(
433
- snippet,
434
- color_enabled: color_enabled
435
- )
436
-
437
- expected_output =
438
- build_expected_output(
439
- color_enabled: color_enabled,
440
- snippet: %|expect(X.new).to #{prefix}_y|,
441
- expectation:
442
- proc do
443
- line do
444
- plain "Expected "
445
- actual "#<X>"
446
- plain " to return a truthy result for "
447
- expected "y?"
448
- plain " or "
449
- expected "ys?"
450
- plain "."
451
- end
452
- end
453
- )
454
-
455
- expect(program).to produce_output_when_run(
456
- expected_output
457
- ).in_color(color_enabled).removing_object_ids
458
- end
459
- end
460
- end
461
-
462
- context "when the inspected version of the actual value is long" do
463
- it "produces the correct failure message" do
464
- as_both_colored_and_uncolored do |color_enabled|
465
- snippet = <<~TEST.strip
466
- hash = {
467
- foo: "bar",
468
- baz: "qux",
469
- blargh: "foz",
470
- fizz: "buzz",
471
- aaaaaa: "bbbbbb"
472
- }
473
-
474
- class << hash
475
- def ys?; false; end
476
- end
477
-
478
- expect(hash).to #{prefix}_y
479
- TEST
480
- program =
481
- make_plain_test_program(
482
- snippet,
483
- color_enabled: color_enabled
484
- )
485
-
486
- expected_output =
487
- build_expected_output(
488
- color_enabled: color_enabled,
489
- snippet: %|expect(hash).to #{prefix}_y|,
490
- newline_before_expectation: true,
491
- expectation:
492
- proc do
493
- line do
494
- plain " Expected "
495
- actual %|{ foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz", aaaaaa: "bbbbbb" }|
496
- end
497
-
498
- line do
499
- plain "to return a truthy result for "
500
- expected "y?"
501
- plain " or "
502
- expected "ys?"
503
- end
504
- end
505
- )
506
-
507
- expect(program).to produce_output_when_run(
508
- expected_output
509
- ).in_color(color_enabled).removing_object_ids
510
- end
511
- end
512
- end
513
- end
514
- end
515
- end
516
-
517
- context "and returns true" do
518
- context "when the inspected version of the actual value is short" do
519
- it "produces the correct failure message when used in the negative" do
520
- as_both_colored_and_uncolored do |color_enabled|
521
- snippet = <<~TEST.strip
522
- class Foo
523
- def strong?; true; end
524
- end
525
-
526
- expect(Foo.new).not_to #{prefix}_strong
527
- TEST
528
- program =
529
- make_plain_test_program(
530
- snippet,
531
- color_enabled: color_enabled
532
- )
533
-
534
- expected_output =
535
- build_expected_output(
536
- color_enabled: color_enabled,
537
- snippet: %|expect(Foo.new).not_to #{prefix}_strong|,
538
- expectation:
539
- proc do
540
- line do
541
- plain "Expected "
542
- actual "#<Foo>"
543
- plain " not to return a truthy result for "
544
- expected "strong?"
545
- plain " or "
546
- expected "strongs?"
547
- plain "."
548
- end
549
- end
550
- )
551
-
552
- expect(program).to produce_output_when_run(
553
- expected_output
554
- ).in_color(color_enabled).removing_object_ids
555
- end
556
- end
557
- end
558
-
559
- context "when the inspected version of the actual value is long" do
560
- it "produces the correct failure message when used in the negative" do
561
- as_both_colored_and_uncolored do |color_enabled|
562
- snippet = <<~TEST.strip
563
- hash = {
564
- foo: "bar",
565
- baz: "qux",
566
- blargh: "foz",
567
- fizz: "buzz",
568
- aaaaaa: "bbbbbb"
569
- }
570
-
571
- class << hash
572
- def ys?; true; end
573
- end
574
-
575
- expect(hash).not_to #{prefix}_y
576
- TEST
577
- program =
578
- make_plain_test_program(
579
- snippet,
580
- color_enabled: color_enabled
581
- )
582
-
583
- expected_output =
584
- build_expected_output(
585
- color_enabled: color_enabled,
586
- snippet: %|expect(hash).not_to #{prefix}_y|,
587
- newline_before_expectation: true,
588
- expectation:
589
- proc do
590
- line do
591
- plain " Expected "
592
- actual %|{ foo: "bar", baz: "qux", blargh: "foz", fizz: "buzz", aaaaaa: "bbbbbb" }|
593
- end
594
-
595
- line do
596
- plain "not to return a truthy result for "
597
- expected "y?"
598
- plain " or "
599
- expected "ys?"
600
- end
601
- end
602
- )
603
-
604
- expect(program).to produce_output_when_run(
605
- expected_output
606
- ).in_color(color_enabled).removing_object_ids
607
- end
608
- end
609
- end
610
- end
611
- end
612
- end
613
- end
614
- end
615
- end
@@ -1,62 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "Integration with RSpec's #be_truthy matcher",
4
- type: :integration do
5
- it "produces the correct failure message when used in the positive" do
6
- as_both_colored_and_uncolored do |color_enabled|
7
- program =
8
- make_plain_test_program(<<~TEST.strip, color_enabled: color_enabled)
9
- expect(nil).to be_truthy
10
- TEST
11
-
12
- expected_output =
13
- build_expected_output(
14
- color_enabled: color_enabled,
15
- snippet: "expect(nil).to be_truthy",
16
- expectation:
17
- proc do
18
- line do
19
- plain "Expected "
20
- actual "nil"
21
- plain " to be "
22
- expected "truthy"
23
- plain "."
24
- end
25
- end
26
- )
27
-
28
- expect(program).to produce_output_when_run(expected_output).in_color(
29
- color_enabled
30
- )
31
- end
32
- end
33
-
34
- it "produces the correct failure message when used in the negative" do
35
- as_both_colored_and_uncolored do |color_enabled|
36
- program =
37
- make_plain_test_program(<<~TEST.strip, color_enabled: color_enabled)
38
- expect(true).not_to be_truthy
39
- TEST
40
-
41
- expected_output =
42
- build_expected_output(
43
- color_enabled: color_enabled,
44
- snippet: "expect(true).not_to be_truthy",
45
- expectation:
46
- proc do
47
- line do
48
- plain "Expected "
49
- actual "true"
50
- plain " not to be "
51
- expected "truthy"
52
- plain "."
53
- end
54
- end
55
- )
56
-
57
- expect(program).to produce_output_when_run(expected_output).in_color(
58
- color_enabled
59
- )
60
- end
61
- end
62
- end