super_diff 0.2.0 → 0.5.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.
- checksums.yaml +4 -4
- data/README.md +108 -74
- data/lib/super_diff.rb +20 -11
- data/lib/super_diff/active_record.rb +21 -23
- data/lib/super_diff/active_record/diff_formatters/active_record_relation.rb +3 -3
- data/lib/super_diff/active_record/differs/active_record_relation.rb +3 -5
- data/lib/super_diff/active_record/monkey_patches.rb +9 -0
- data/lib/super_diff/active_record/object_inspection/inspectors/active_record_model.rb +32 -22
- data/lib/super_diff/active_record/object_inspection/inspectors/active_record_relation.rb +17 -7
- data/lib/super_diff/active_record/operation_tree_builders.rb +14 -0
- data/lib/super_diff/active_record/{operational_sequencers → operation_tree_builders}/active_record_model.rb +2 -2
- data/lib/super_diff/active_record/{operational_sequencers → operation_tree_builders}/active_record_relation.rb +4 -4
- data/lib/super_diff/active_record/{operation_sequences.rb → operation_trees.rb} +2 -2
- data/lib/super_diff/active_record/{operation_sequences → operation_trees}/active_record_relation.rb +2 -2
- data/lib/super_diff/active_support.rb +16 -19
- data/lib/super_diff/active_support/diff_formatters/hash_with_indifferent_access.rb +3 -3
- data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +3 -5
- data/lib/super_diff/active_support/object_inspection/inspectors/hash_with_indifferent_access.rb +17 -7
- data/lib/super_diff/active_support/operation_tree_builders.rb +10 -0
- data/lib/super_diff/active_support/{operational_sequencers → operation_tree_builders}/hash_with_indifferent_access.rb +2 -2
- data/lib/super_diff/active_support/{operation_sequences.rb → operation_trees.rb} +2 -2
- data/lib/super_diff/active_support/{operation_sequences → operation_trees}/hash_with_indifferent_access.rb +2 -2
- data/lib/super_diff/configuration.rb +60 -0
- data/lib/super_diff/csi.rb +4 -0
- data/lib/super_diff/diff_formatters.rb +3 -3
- data/lib/super_diff/diff_formatters/array.rb +3 -3
- data/lib/super_diff/diff_formatters/base.rb +3 -2
- data/lib/super_diff/diff_formatters/collection.rb +2 -2
- data/lib/super_diff/diff_formatters/custom_object.rb +3 -3
- data/lib/super_diff/diff_formatters/default_object.rb +6 -8
- data/lib/super_diff/diff_formatters/defaults.rb +10 -0
- data/lib/super_diff/diff_formatters/hash.rb +3 -3
- data/lib/super_diff/diff_formatters/main.rb +41 -0
- data/lib/super_diff/diff_formatters/multiline_string.rb +3 -3
- data/lib/super_diff/differs.rb +4 -9
- data/lib/super_diff/differs/array.rb +2 -11
- data/lib/super_diff/differs/base.rb +20 -3
- data/lib/super_diff/differs/custom_object.rb +2 -11
- data/lib/super_diff/differs/default_object.rb +2 -8
- data/lib/super_diff/differs/defaults.rb +12 -0
- data/lib/super_diff/differs/hash.rb +2 -11
- data/lib/super_diff/differs/main.rb +48 -0
- data/lib/super_diff/differs/multiline_string.rb +2 -14
- data/lib/super_diff/differs/time_like.rb +15 -0
- data/lib/super_diff/equality_matchers.rb +3 -9
- data/lib/super_diff/equality_matchers/array.rb +1 -7
- data/lib/super_diff/equality_matchers/base.rb +1 -1
- data/lib/super_diff/equality_matchers/default.rb +2 -8
- data/lib/super_diff/equality_matchers/defaults.rb +12 -0
- data/lib/super_diff/equality_matchers/hash.rb +1 -7
- data/lib/super_diff/equality_matchers/main.rb +21 -0
- data/lib/super_diff/equality_matchers/multiline_string.rb +1 -7
- data/lib/super_diff/errors.rb +16 -0
- data/lib/super_diff/errors/no_diff_formatter_available_error.rb +21 -0
- data/lib/super_diff/errors/no_differ_available_error.rb +24 -0
- data/lib/super_diff/errors/no_operational_sequencer_available_error.rb +22 -0
- data/lib/super_diff/implementation_checks.rb +19 -0
- data/lib/super_diff/object_inspection.rb +1 -10
- data/lib/super_diff/object_inspection/inspection_tree.rb +6 -2
- data/lib/super_diff/object_inspection/inspectors.rb +5 -0
- data/lib/super_diff/object_inspection/inspectors/array.rb +20 -10
- data/lib/super_diff/object_inspection/inspectors/base.rb +36 -0
- data/lib/super_diff/object_inspection/inspectors/custom_object.rb +24 -14
- data/lib/super_diff/object_inspection/inspectors/default_object.rb +44 -30
- data/lib/super_diff/object_inspection/inspectors/defaults.rb +15 -0
- data/lib/super_diff/object_inspection/inspectors/hash.rb +20 -10
- data/lib/super_diff/object_inspection/inspectors/main.rb +35 -0
- data/lib/super_diff/object_inspection/inspectors/primitive.rb +20 -5
- data/lib/super_diff/object_inspection/inspectors/string.rb +15 -5
- data/lib/super_diff/object_inspection/inspectors/time_like.rb +23 -0
- data/lib/super_diff/object_inspection/nodes/inspection.rb +9 -2
- data/lib/super_diff/operation_tree_builders.rb +18 -0
- data/lib/super_diff/{operational_sequencers → operation_tree_builders}/array.rb +38 -59
- data/lib/super_diff/operation_tree_builders/base.rb +98 -0
- data/lib/super_diff/{operational_sequencers → operation_tree_builders}/custom_object.rb +3 -3
- data/lib/super_diff/{operational_sequencers → operation_tree_builders}/default_object.rb +8 -3
- data/lib/super_diff/operation_tree_builders/defaults.rb +5 -0
- data/lib/super_diff/operation_tree_builders/hash.rb +226 -0
- data/lib/super_diff/operation_tree_builders/main.rb +42 -0
- data/lib/super_diff/{operational_sequencers → operation_tree_builders}/multiline_string.rb +3 -3
- data/lib/super_diff/operation_tree_builders/time_like.rb +34 -0
- data/lib/super_diff/operation_trees.rb +13 -0
- data/lib/super_diff/{operation_sequences → operation_trees}/array.rb +5 -1
- data/lib/super_diff/operation_trees/base.rb +31 -0
- data/lib/super_diff/{operation_sequences → operation_trees}/custom_object.rb +5 -1
- data/lib/super_diff/{operation_sequences → operation_trees}/default_object.rb +10 -8
- data/lib/super_diff/operation_trees/defaults.rb +5 -0
- data/lib/super_diff/{operation_sequences → operation_trees}/hash.rb +5 -1
- data/lib/super_diff/operation_trees/main.rb +35 -0
- data/lib/super_diff/operation_trees/multiline_string.rb +18 -0
- data/lib/super_diff/operations/unary_operation.rb +3 -0
- data/lib/super_diff/rspec.rb +54 -22
- data/lib/super_diff/rspec/augmented_matcher.rb +1 -1
- data/lib/super_diff/rspec/differ.rb +2 -17
- data/lib/super_diff/rspec/differs.rb +9 -3
- data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +3 -8
- data/lib/super_diff/rspec/differs/collection_including.rb +18 -0
- data/lib/super_diff/rspec/differs/hash_including.rb +18 -0
- data/lib/super_diff/rspec/differs/object_having_attributes.rb +17 -0
- data/lib/super_diff/rspec/matcher_text_builders.rb +4 -0
- data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +26 -7
- data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +61 -0
- data/lib/super_diff/rspec/matcher_text_builders/match.rb +1 -1
- data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +13 -1
- data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +1 -1
- data/lib/super_diff/rspec/matcher_text_template.rb +1 -1
- data/lib/super_diff/rspec/monkey_patches.rb +226 -115
- data/lib/super_diff/rspec/object_inspection.rb +0 -1
- data/lib/super_diff/rspec/object_inspection/inspectors.rb +22 -6
- data/lib/super_diff/rspec/object_inspection/inspectors/collection_containing_exactly.rb +17 -8
- data/lib/super_diff/rspec/object_inspection/inspectors/collection_including.rb +28 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/hash_including.rb +31 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/instance_of.rb +23 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/kind_of.rb +23 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/object_having_attributes.rb +31 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/primitive.rb +13 -0
- data/lib/super_diff/rspec/object_inspection/inspectors/value_within.rb +29 -0
- data/lib/super_diff/rspec/operation_tree_builders.rb +22 -0
- data/lib/super_diff/rspec/{operational_sequencers → operation_tree_builders}/collection_containing_exactly.rb +6 -6
- data/lib/super_diff/rspec/{operational_sequencers/partial_array.rb → operation_tree_builders/collection_including.rb} +4 -3
- data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +25 -0
- data/lib/super_diff/rspec/{operational_sequencers/partial_object.rb → operation_tree_builders/object_having_attributes.rb} +5 -11
- data/lib/super_diff/version.rb +1 -1
- data/spec/examples.txt +397 -328
- data/spec/integration/rails/active_record_spec.rb +1 -1
- data/spec/integration/rails/hash_with_indifferent_access_spec.rb +1 -1
- data/spec/integration/rspec/be_predicate_matcher_spec.rb +111 -59
- data/spec/integration/rspec/eq_matcher_spec.rb +139 -3
- data/spec/integration/rspec/have_attributes_matcher_spec.rb +354 -227
- data/spec/integration/rspec/have_predicate_matcher_spec.rb +484 -0
- data/spec/integration/rspec/include_matcher_spec.rb +2 -2
- data/spec/integration/rspec/match_array_matcher_spec.rb +372 -0
- data/spec/integration/rspec/match_matcher_spec.rb +8 -8
- data/spec/integration/rspec/raise_error_matcher_spec.rb +605 -226
- data/spec/integration/rspec/third_party_matcher_spec.rb +241 -0
- data/spec/integration/rspec/unhandled_errors_spec.rb +110 -58
- data/spec/spec_helper.rb +18 -7
- data/spec/support/command_runner.rb +3 -0
- data/spec/support/integration/helpers.rb +14 -90
- data/spec/support/integration/matchers.rb +143 -0
- data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +14 -29
- data/spec/support/integration/test_programs/base.rb +120 -0
- data/spec/support/integration/test_programs/plain.rb +13 -0
- data/spec/support/integration/test_programs/rspec_active_record.rb +17 -0
- data/spec/support/integration/test_programs/rspec_rails.rb +17 -0
- data/spec/support/models/active_record/person.rb +4 -11
- data/spec/support/models/active_record/query.rb +15 -0
- data/spec/support/models/active_record/shipping_address.rb +10 -14
- data/spec/support/object_id.rb +27 -0
- data/spec/support/ruby_versions.rb +4 -0
- data/spec/support/shared_examples/active_record.rb +71 -0
- data/spec/support/shared_examples/hash_with_indifferent_access.rb +724 -208
- data/spec/tmp/integration_spec.rb +15 -0
- data/spec/unit/{equality_matcher_spec.rb → equality_matchers/main_spec.rb} +165 -9
- data/spec/unit/object_inspection_spec.rb +94 -18
- data/spec/unit/rspec/matchers/have_predicate_spec.rb +21 -0
- data/spec/unit/rspec/matchers/match_array_spec.rb +11 -0
- data/spec/unit/rspec/matchers/raise_error_spec.rb +16 -0
- data/super_diff.gemspec +3 -6
- metadata +99 -91
- data/lib/super_diff/active_record/object_inspection/map_extension.rb +0 -18
- data/lib/super_diff/active_record/operational_sequencers.rb +0 -14
- data/lib/super_diff/active_support/object_inspection/map_extension.rb +0 -15
- data/lib/super_diff/active_support/operational_sequencers.rb +0 -10
- data/lib/super_diff/diff_formatter.rb +0 -32
- data/lib/super_diff/differ.rb +0 -51
- data/lib/super_diff/equality_matcher.rb +0 -32
- data/lib/super_diff/no_differ_available_error.rb +0 -22
- data/lib/super_diff/no_operational_sequencer_available_error.rb +0 -20
- data/lib/super_diff/object_inspection/inspector.rb +0 -27
- data/lib/super_diff/object_inspection/map.rb +0 -28
- data/lib/super_diff/operation_sequences.rb +0 -9
- data/lib/super_diff/operation_sequences/base.rb +0 -11
- data/lib/super_diff/operational_sequencer.rb +0 -48
- data/lib/super_diff/operational_sequencers.rb +0 -16
- data/lib/super_diff/operational_sequencers/base.rb +0 -89
- data/lib/super_diff/operational_sequencers/hash.rb +0 -85
- data/lib/super_diff/rspec/configuration.rb +0 -31
- data/lib/super_diff/rspec/differs/partial_array.rb +0 -22
- data/lib/super_diff/rspec/differs/partial_hash.rb +0 -22
- data/lib/super_diff/rspec/differs/partial_object.rb +0 -22
- data/lib/super_diff/rspec/object_inspection/inspectors/partial_array.rb +0 -22
- data/lib/super_diff/rspec/object_inspection/inspectors/partial_hash.rb +0 -21
- data/lib/super_diff/rspec/object_inspection/inspectors/partial_object.rb +0 -21
- data/lib/super_diff/rspec/object_inspection/map_extension.rb +0 -23
- data/lib/super_diff/rspec/operational_sequencers.rb +0 -22
- data/lib/super_diff/rspec/operational_sequencers/partial_hash.rb +0 -32
@@ -0,0 +1,15 @@
|
|
1
|
+
require "/Users/elliot/code/github/mine/super_diff/spec/config/zeus_plan.rb"
|
2
|
+
|
3
|
+
zeus_plan = CustomZeusPlan.new
|
4
|
+
zeus_plan.boot
|
5
|
+
|
6
|
+
zeus_plan.run_plain_test
|
7
|
+
|
8
|
+
RSpec.describe "test" do
|
9
|
+
it "passes" do
|
10
|
+
expected = "This is a line\nAnd that's a line\nAnd there's a line too\n"
|
11
|
+
actual = "This is a line\nSomething completely different\nAnd there's a line too\n"
|
12
|
+
expect(actual).to eq(expected)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
RSpec.describe SuperDiff::
|
3
|
+
RSpec.describe SuperDiff::EqualityMatchers::Main do
|
4
4
|
describe "#call" do
|
5
5
|
context "given the same integers" do
|
6
6
|
it "returns an empty string" do
|
@@ -1056,6 +1056,162 @@ RSpec.describe SuperDiff::EqualityMatcher do
|
|
1056
1056
|
end
|
1057
1057
|
end
|
1058
1058
|
|
1059
|
+
context "given two equal-size, one-dimensional hashes where there is a mixture of missing and extra keys in relatively the same order" do
|
1060
|
+
context "and the actual value is in relatively the same order as the expected" do
|
1061
|
+
it "preserves the order of the keys as they are defined" do
|
1062
|
+
actual_output = described_class.call(
|
1063
|
+
expected: {
|
1064
|
+
listed_count: 37_009,
|
1065
|
+
created_at: "Tue Jan 13 19:28:24 +0000 2009",
|
1066
|
+
favourites_count: 38,
|
1067
|
+
geo_enabled: false,
|
1068
|
+
verified: true,
|
1069
|
+
statuses_count: 273_860,
|
1070
|
+
media_count: 51_044,
|
1071
|
+
contributors_enabled: false,
|
1072
|
+
profile_background_color: "FFF1E0",
|
1073
|
+
profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png",
|
1074
|
+
profile_background_tile: false,
|
1075
|
+
profile_image_url: "http://pbs.twimg.com/profile_images/931156393108885504/EqEMtLhM_normal.jpg",
|
1076
|
+
profile_image_url_https: "https://pbs.twimg.com/profile_images/931156393108885504/EqEMtLhM_normal.jpg",
|
1077
|
+
profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592",
|
1078
|
+
},
|
1079
|
+
actual: {
|
1080
|
+
listed_count: 37_009,
|
1081
|
+
created_at: "Tue Jan 13 19:28:24 +0000 2009",
|
1082
|
+
favourites_count: 38,
|
1083
|
+
utc_offset: nil,
|
1084
|
+
time_zone: nil,
|
1085
|
+
statuses_count: 273_860,
|
1086
|
+
media_count: 51_044,
|
1087
|
+
contributors_enabled: false,
|
1088
|
+
is_translator: false,
|
1089
|
+
is_translation_enabled: false,
|
1090
|
+
profile_background_color: "FFF1E0",
|
1091
|
+
profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png",
|
1092
|
+
profile_background_tile: false,
|
1093
|
+
profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592",
|
1094
|
+
}
|
1095
|
+
)
|
1096
|
+
|
1097
|
+
expected_output = <<~STR.strip
|
1098
|
+
Differing hashes.
|
1099
|
+
|
1100
|
+
#{
|
1101
|
+
colored do
|
1102
|
+
alpha_line %(Expected: { listed_count: 37009, created_at: "Tue Jan 13 19:28:24 +0000 2009", favourites_count: 38, geo_enabled: false, verified: true, statuses_count: 273860, media_count: 51044, contributors_enabled: false, profile_background_color: "FFF1E0", profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png", profile_background_tile: false, profile_image_url: "http://pbs.twimg.com/profile_images/931156393108885504/EqEMtLhM_normal.jpg", profile_image_url_https: "https://pbs.twimg.com/profile_images/931156393108885504/EqEMtLhM_normal.jpg", profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592" })
|
1103
|
+
beta_line %( Actual: { listed_count: 37009, created_at: "Tue Jan 13 19:28:24 +0000 2009", favourites_count: 38, utc_offset: nil, time_zone: nil, statuses_count: 273860, media_count: 51044, contributors_enabled: false, is_translator: false, is_translation_enabled: false, profile_background_color: "FFF1E0", profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png", profile_background_tile: false, profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592" })
|
1104
|
+
end
|
1105
|
+
}
|
1106
|
+
|
1107
|
+
Diff:
|
1108
|
+
|
1109
|
+
#{
|
1110
|
+
colored do
|
1111
|
+
plain_line %( {)
|
1112
|
+
plain_line %( listed_count: 37009,)
|
1113
|
+
plain_line %( created_at: "Tue Jan 13 19:28:24 +0000 2009",)
|
1114
|
+
plain_line %( favourites_count: 38,)
|
1115
|
+
alpha_line %(- geo_enabled: false,)
|
1116
|
+
alpha_line %(- verified: true,)
|
1117
|
+
beta_line %(+ utc_offset: nil,)
|
1118
|
+
beta_line %(+ time_zone: nil,)
|
1119
|
+
plain_line %( statuses_count: 273860,)
|
1120
|
+
plain_line %( media_count: 51044,)
|
1121
|
+
plain_line %( contributors_enabled: false,)
|
1122
|
+
beta_line %(+ is_translator: false,)
|
1123
|
+
beta_line %(+ is_translation_enabled: false,)
|
1124
|
+
plain_line %( profile_background_color: "FFF1E0",)
|
1125
|
+
plain_line %( profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png",)
|
1126
|
+
plain_line %( profile_background_tile: false,)
|
1127
|
+
alpha_line %(- profile_image_url: "http://pbs.twimg.com/profile_images/931156393108885504/EqEMtLhM_normal.jpg",)
|
1128
|
+
alpha_line %(- profile_image_url_https: "https://pbs.twimg.com/profile_images/931156393108885504/EqEMtLhM_normal.jpg",)
|
1129
|
+
plain_line %( profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592")
|
1130
|
+
plain_line %( })
|
1131
|
+
end
|
1132
|
+
}
|
1133
|
+
STR
|
1134
|
+
|
1135
|
+
expect(actual_output).to eq(expected_output)
|
1136
|
+
end
|
1137
|
+
end
|
1138
|
+
|
1139
|
+
context "and the actual value is in a different order than the expected" do
|
1140
|
+
it "preserves the order of the keys as they are defined" do
|
1141
|
+
actual_output = described_class.call(
|
1142
|
+
expected: {
|
1143
|
+
created_at: "Tue Jan 13 19:28:24 +0000 2009",
|
1144
|
+
favourites_count: 38,
|
1145
|
+
geo_enabled: false,
|
1146
|
+
verified: true,
|
1147
|
+
media_count: 51_044,
|
1148
|
+
statuses_count: 273_860,
|
1149
|
+
contributors_enabled: false,
|
1150
|
+
profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png",
|
1151
|
+
profile_background_color: "FFF1E0",
|
1152
|
+
profile_background_tile: false,
|
1153
|
+
profile_image_url: "http://pbs.twimg.com/profile_images/931156393108885504/EqEMtLhM_normal.jpg",
|
1154
|
+
listed_count: 37_009,
|
1155
|
+
profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592",
|
1156
|
+
},
|
1157
|
+
actual: {
|
1158
|
+
listed_count: 37_009,
|
1159
|
+
created_at: "Tue Jan 13 19:28:24 +0000 2009",
|
1160
|
+
favourites_count: 38,
|
1161
|
+
utc_offset: nil,
|
1162
|
+
statuses_count: 273_860,
|
1163
|
+
media_count: 51_044,
|
1164
|
+
contributors_enabled: false,
|
1165
|
+
is_translator: false,
|
1166
|
+
is_translation_enabled: false,
|
1167
|
+
profile_background_color: "FFF1E0",
|
1168
|
+
profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png",
|
1169
|
+
profile_background_tile: false,
|
1170
|
+
profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592",
|
1171
|
+
}
|
1172
|
+
)
|
1173
|
+
|
1174
|
+
expected_output = <<~STR.strip
|
1175
|
+
Differing hashes.
|
1176
|
+
|
1177
|
+
#{
|
1178
|
+
colored do
|
1179
|
+
alpha_line %(Expected: { created_at: "Tue Jan 13 19:28:24 +0000 2009", favourites_count: 38, geo_enabled: false, verified: true, media_count: 51044, statuses_count: 273860, contributors_enabled: false, profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png", profile_background_color: "FFF1E0", profile_background_tile: false, profile_image_url: "http://pbs.twimg.com/profile_images/931156393108885504/EqEMtLhM_normal.jpg", listed_count: 37009, profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592" })
|
1180
|
+
beta_line %( Actual: { listed_count: 37009, created_at: "Tue Jan 13 19:28:24 +0000 2009", favourites_count: 38, utc_offset: nil, statuses_count: 273860, media_count: 51044, contributors_enabled: false, is_translator: false, is_translation_enabled: false, profile_background_color: "FFF1E0", profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png", profile_background_tile: false, profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592" })
|
1181
|
+
end
|
1182
|
+
}
|
1183
|
+
|
1184
|
+
Diff:
|
1185
|
+
|
1186
|
+
#{
|
1187
|
+
colored do
|
1188
|
+
plain_line %( {)
|
1189
|
+
plain_line %( listed_count: 37009,)
|
1190
|
+
plain_line %( created_at: "Tue Jan 13 19:28:24 +0000 2009",)
|
1191
|
+
plain_line %( favourites_count: 38,)
|
1192
|
+
alpha_line %(- geo_enabled: false,)
|
1193
|
+
alpha_line %(- verified: true,)
|
1194
|
+
beta_line %(+ utc_offset: nil,)
|
1195
|
+
plain_line %( statuses_count: 273860,)
|
1196
|
+
plain_line %( media_count: 51044,)
|
1197
|
+
plain_line %( contributors_enabled: false,)
|
1198
|
+
beta_line %(+ is_translator: false,)
|
1199
|
+
beta_line %(+ is_translation_enabled: false,)
|
1200
|
+
plain_line %( profile_background_color: "FFF1E0",)
|
1201
|
+
plain_line %( profile_background_image_url_https: "https://abs.twimg.com/images/themes/theme1/bg.png",)
|
1202
|
+
plain_line %( profile_background_tile: false,)
|
1203
|
+
alpha_line %(- profile_image_url: "http://pbs.twimg.com/profile_images/931156393108885504/EqEMtLhM_normal.jpg",)
|
1204
|
+
plain_line %( profile_banner_url: "https://pbs.twimg.com/profile_banners/18949452/1581526592")
|
1205
|
+
plain_line %( })
|
1206
|
+
end
|
1207
|
+
}
|
1208
|
+
STR
|
1209
|
+
|
1210
|
+
expect(actual_output).to eq(expected_output)
|
1211
|
+
end
|
1212
|
+
end
|
1213
|
+
end
|
1214
|
+
|
1059
1215
|
context "given two hashes containing arrays with differing values" do
|
1060
1216
|
it "returns a message along with the diff" do
|
1061
1217
|
actual_output = described_class.call(
|
@@ -1375,13 +1531,13 @@ RSpec.describe SuperDiff::EqualityMatcher do
|
|
1375
1531
|
if SuperDiff::Test.jruby?
|
1376
1532
|
# Source: <https://github.com/jruby/jruby/blob/master/core/src/main/java/org/jruby/RubyBasicObject.java>
|
1377
1533
|
colored do
|
1378
|
-
alpha_line %(Expected: #<SuperDiff::Test::Player:#{
|
1379
|
-
beta_line %( Actual: #<SuperDiff::Test::Player:#{
|
1534
|
+
alpha_line %(Expected: #<SuperDiff::Test::Player:#{SuperDiff::Test.object_id_hex(expected)} @inventory=["flatline", "purple body shield"], @character="mirage", @handle="martymcfly", @ultimate=0.8, @shields=0.6, @health=0.3>)
|
1535
|
+
beta_line %( Actual: #<SuperDiff::Test::Player:#{SuperDiff::Test.object_id_hex(actual)} @inventory=["wingman", "mastiff"], @character="lifeline", @handle="docbrown", @ultimate=0.8, @shields=0.6, @health=0.3>)
|
1380
1536
|
end
|
1381
1537
|
else
|
1382
1538
|
colored do
|
1383
|
-
alpha_line %(Expected: #<SuperDiff::Test::Player:#{
|
1384
|
-
beta_line %( Actual: #<SuperDiff::Test::Player:#{
|
1539
|
+
alpha_line %(Expected: #<SuperDiff::Test::Player:#{SuperDiff::Test.object_id_hex(expected)} @handle="martymcfly", @character="mirage", @inventory=["flatline", "purple body shield"], @shields=0.6, @health=0.3, @ultimate=0.8>)
|
1540
|
+
beta_line %( Actual: #<SuperDiff::Test::Player:#{SuperDiff::Test.object_id_hex(actual)} @handle="docbrown", @character="lifeline", @inventory=["wingman", "mastiff"], @shields=0.6, @health=0.3, @ultimate=0.8>)
|
1385
1541
|
end
|
1386
1542
|
end
|
1387
1543
|
}
|
@@ -1466,13 +1622,13 @@ RSpec.describe SuperDiff::EqualityMatcher do
|
|
1466
1622
|
if SuperDiff::Test.jruby?
|
1467
1623
|
# Source: <https://github.com/jruby/jruby/blob/master/core/src/main/java/org/jruby/RubyBasicObject.java>
|
1468
1624
|
colored do
|
1469
|
-
alpha_line %(Expected: #<SuperDiff::Test::Item:#{
|
1470
|
-
beta_line %( Actual: #<SuperDiff::Test::Player:#{
|
1625
|
+
alpha_line %(Expected: #<SuperDiff::Test::Item:#{SuperDiff::Test.object_id_hex(expected)} @name="camera", @quantity=3>)
|
1626
|
+
beta_line %( Actual: #<SuperDiff::Test::Player:#{SuperDiff::Test.object_id_hex(actual)} @inventory=["sword"], @character="Jon", @handle="mcmire", @ultimate=true, @shields=11.4, @health=4>)
|
1471
1627
|
end
|
1472
1628
|
else
|
1473
1629
|
colored do
|
1474
|
-
alpha_line %(Expected: #<SuperDiff::Test::Item:#{
|
1475
|
-
beta_line %( Actual: #<SuperDiff::Test::Player:#{
|
1630
|
+
alpha_line %(Expected: #<SuperDiff::Test::Item:#{SuperDiff::Test.object_id_hex(expected)} @name="camera", @quantity=3>)
|
1631
|
+
beta_line %( Actual: #<SuperDiff::Test::Player:#{SuperDiff::Test.object_id_hex(actual)} @handle="mcmire", @character="Jon", @inventory=["sword"], @shields=11.4, @health=4, @ultimate=true>)
|
1476
1632
|
end
|
1477
1633
|
end
|
1478
1634
|
}
|
@@ -601,16 +601,16 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
601
601
|
as_single_line: false,
|
602
602
|
)
|
603
603
|
expect(inspection).to match(
|
604
|
-
/#<SuperDiff::Test::EmptyClass:0x[a-z0-9]
|
604
|
+
/#<SuperDiff::Test::EmptyClass:0x[a-z0-9]+>/,
|
605
605
|
)
|
606
606
|
end
|
607
607
|
end
|
608
608
|
end
|
609
609
|
end
|
610
610
|
|
611
|
-
context "given a
|
611
|
+
context "given a hash-including-<something>" do
|
612
612
|
context "given as_single_line: true" do
|
613
|
-
it "returns a representation of the
|
613
|
+
it "returns a representation of the object on a single line" do
|
614
614
|
inspection = described_class.inspect(
|
615
615
|
a_hash_including(foo: "bar", baz: "qux"),
|
616
616
|
as_single_line: true,
|
@@ -623,7 +623,7 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
623
623
|
end
|
624
624
|
|
625
625
|
context "given as_single_line: false" do
|
626
|
-
it "returns a representation of the
|
626
|
+
it "returns a representation of the object across multiple lines" do
|
627
627
|
inspection = described_class.inspect(
|
628
628
|
a_hash_including(foo: "bar", baz: "qux"),
|
629
629
|
as_single_line: false,
|
@@ -639,9 +639,9 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
639
639
|
end
|
640
640
|
end
|
641
641
|
|
642
|
-
context "given a
|
642
|
+
context "given a collection-including-<something>" do
|
643
643
|
context "given as_single_line: true" do
|
644
|
-
it "returns a representation of the
|
644
|
+
it "returns a representation of the object on a single line" do
|
645
645
|
inspection = described_class.inspect(
|
646
646
|
a_collection_including(1, 2, 3),
|
647
647
|
as_single_line: true,
|
@@ -654,7 +654,7 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
654
654
|
end
|
655
655
|
|
656
656
|
context "given as_single_line: false" do
|
657
|
-
it "returns a representation of the
|
657
|
+
it "returns a representation of the object across multiple lines" do
|
658
658
|
inspection = described_class.inspect(
|
659
659
|
a_collection_including(1, 2, 3),
|
660
660
|
as_single_line: false,
|
@@ -671,9 +671,9 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
671
671
|
end
|
672
672
|
end
|
673
673
|
|
674
|
-
context "given a
|
674
|
+
context "given a fuzzy object" do
|
675
675
|
context "given as_single_line: true" do
|
676
|
-
it "returns a representation of the
|
676
|
+
it "returns a representation of the object on a single line" do
|
677
677
|
inspection = described_class.inspect(
|
678
678
|
an_object_having_attributes(foo: "bar", baz: "qux"),
|
679
679
|
as_single_line: true,
|
@@ -686,7 +686,7 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
686
686
|
end
|
687
687
|
|
688
688
|
context "given as_single_line: false" do
|
689
|
-
it "returns a representation of the
|
689
|
+
it "returns a representation of the object across multiple lines" do
|
690
690
|
inspection = described_class.inspect(
|
691
691
|
an_object_having_attributes(foo: "bar", baz: "qux"),
|
692
692
|
as_single_line: false,
|
@@ -702,9 +702,9 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
702
702
|
end
|
703
703
|
end
|
704
704
|
|
705
|
-
context "given a
|
705
|
+
context "given a collection-containing-exactly-<something>" do
|
706
706
|
context "given as_single_line: true" do
|
707
|
-
it "returns a representation of the
|
707
|
+
it "returns a representation of the object on a single line" do
|
708
708
|
inspection = described_class.inspect(
|
709
709
|
a_collection_containing_exactly("foo", "bar", "baz"),
|
710
710
|
as_single_line: true,
|
@@ -717,7 +717,7 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
717
717
|
end
|
718
718
|
|
719
719
|
context "given as_single_line: false" do
|
720
|
-
it "returns a representation of the
|
720
|
+
it "returns a representation of the object across multiple lines" do
|
721
721
|
inspection = described_class.inspect(
|
722
722
|
a_collection_containing_exactly("foo", "bar", "baz"),
|
723
723
|
as_single_line: false,
|
@@ -734,10 +734,86 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
734
734
|
end
|
735
735
|
end
|
736
736
|
|
737
|
+
context "given a kind-of-<something>" do
|
738
|
+
context "given as_single_line: true" do
|
739
|
+
it "returns a representation of the object on a single line" do
|
740
|
+
inspection = described_class.inspect(
|
741
|
+
a_kind_of(Symbol),
|
742
|
+
as_single_line: true,
|
743
|
+
)
|
744
|
+
|
745
|
+
expect(inspection).to eq(%(#<a kind of Symbol>))
|
746
|
+
end
|
747
|
+
end
|
748
|
+
|
749
|
+
context "given as_single_line: false" do
|
750
|
+
it "returns a representation of the object on a single line" do
|
751
|
+
inspection = described_class.inspect(
|
752
|
+
a_kind_of(Symbol),
|
753
|
+
as_single_line: false,
|
754
|
+
)
|
755
|
+
|
756
|
+
expect(inspection).to eq(%(#<a kind of Symbol>))
|
757
|
+
end
|
758
|
+
end
|
759
|
+
end
|
760
|
+
|
761
|
+
context "given an-instance-of-<something>" do
|
762
|
+
context "given as_single_line: true" do
|
763
|
+
it "returns a representation of the object on a single line" do
|
764
|
+
inspection = described_class.inspect(
|
765
|
+
an_instance_of(Symbol),
|
766
|
+
as_single_line: true,
|
767
|
+
)
|
768
|
+
|
769
|
+
expect(inspection).to eq(%(#<an instance of Symbol>))
|
770
|
+
end
|
771
|
+
end
|
772
|
+
|
773
|
+
context "given as_single_line: false" do
|
774
|
+
it "returns a representation of the object on a single line" do
|
775
|
+
inspection = described_class.inspect(
|
776
|
+
an_instance_of(Symbol),
|
777
|
+
as_single_line: false,
|
778
|
+
)
|
779
|
+
|
780
|
+
expect(inspection).to eq(%(#<an instance of Symbol>))
|
781
|
+
end
|
782
|
+
end
|
783
|
+
end
|
784
|
+
|
785
|
+
context "given a-value-within-<something>" do
|
786
|
+
context "given as_single_line: true" do
|
787
|
+
it "returns a representation of the object on a single line" do
|
788
|
+
inspection = described_class.inspect(
|
789
|
+
a_value_within(1).of(Time.utc(2020, 4, 9)),
|
790
|
+
as_single_line: true,
|
791
|
+
)
|
792
|
+
|
793
|
+
expect(inspection).to eq(
|
794
|
+
%(#<a value within 1 of 2020-04-09 00:00:00.000 UTC +00:00 (Time)>),
|
795
|
+
)
|
796
|
+
end
|
797
|
+
end
|
798
|
+
|
799
|
+
context "given as_single_line: false" do
|
800
|
+
it "returns a representation of the object on a single line" do
|
801
|
+
inspection = described_class.inspect(
|
802
|
+
a_value_within(1).of(Time.utc(2020, 4, 9)),
|
803
|
+
as_single_line: false,
|
804
|
+
)
|
805
|
+
|
806
|
+
expect(inspection).to eq(
|
807
|
+
%(#<a value within 1 of 2020-04-09 00:00:00.000 UTC +00:00 (Time)>),
|
808
|
+
)
|
809
|
+
end
|
810
|
+
end
|
811
|
+
end
|
812
|
+
|
737
813
|
context "given a Double" do
|
738
814
|
context "that is anonymous" do
|
739
815
|
context "given as_single_line: true" do
|
740
|
-
it "returns a representation of the
|
816
|
+
it "returns a representation of the object on a single line" do
|
741
817
|
inspection = described_class.inspect(
|
742
818
|
double(foo: "bar", baz: "qux"),
|
743
819
|
as_single_line: true,
|
@@ -748,7 +824,7 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
748
824
|
end
|
749
825
|
|
750
826
|
context "given as_single_line: false" do
|
751
|
-
it "returns a representation of the
|
827
|
+
it "returns a representation of the object across multiple lines" do
|
752
828
|
inspection = described_class.inspect(
|
753
829
|
double(foo: "bar", baz: "qux"),
|
754
830
|
as_single_line: false,
|
@@ -760,7 +836,7 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
760
836
|
end
|
761
837
|
end
|
762
838
|
|
763
|
-
context "given an ActiveRecord object" do
|
839
|
+
context "given an ActiveRecord object", active_record: true do
|
764
840
|
context "given as_single_line: true" do
|
765
841
|
it "returns a representation of the object on a single line" do
|
766
842
|
inspection = described_class.inspect(
|
@@ -798,7 +874,7 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
798
874
|
end
|
799
875
|
end
|
800
876
|
|
801
|
-
context "given an ActiveRecord::Relation object" do
|
877
|
+
context "given an ActiveRecord::Relation object", active_record: true do
|
802
878
|
context "given as_single_line: true" do
|
803
879
|
it "returns a representation of the Relation on a single line" do
|
804
880
|
SuperDiff::Test::Models::ActiveRecord::Person.create!(
|
@@ -855,7 +931,7 @@ RSpec.describe SuperDiff::ObjectInspection do
|
|
855
931
|
end
|
856
932
|
end
|
857
933
|
|
858
|
-
context "given a HashWithIndifferentAccess" do
|
934
|
+
context "given a HashWithIndifferentAccess", active_record: true do
|
859
935
|
context "given as_single_line: true" do
|
860
936
|
it "returns a representation of the object on a single line" do
|
861
937
|
inspection = described_class.inspect(
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "RSpec's `have_<predicate>` matcher" do
|
4
|
+
describe "#description" do
|
5
|
+
context "given nothing" do
|
6
|
+
it "returns the correct output" do
|
7
|
+
expect(have_experience.description).to eq(
|
8
|
+
"return true for `has_experience?`",
|
9
|
+
)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context "given an argument" do
|
14
|
+
it "returns the correct output" do
|
15
|
+
expect(have_ingredients(:sugar).description).to eq(
|
16
|
+
"return true for `has_ingredients?(:sugar)`",
|
17
|
+
)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|