super_diff 0.9.0 → 0.10.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 +65 -26
- data/lib/super_diff/active_record/differs/active_record_relation.rb +1 -2
- data/lib/super_diff/active_record/differs.rb +1 -1
- data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_model.rb +5 -13
- data/lib/super_diff/active_record/object_inspection/inspection_tree_builders/active_record_relation.rb +1 -3
- data/lib/super_diff/active_record/object_inspection/inspection_tree_builders.rb +2 -2
- data/lib/super_diff/active_record/object_inspection.rb +1 -1
- data/lib/super_diff/active_record/operation_tree_builders/active_record_model.rb +1 -2
- data/lib/super_diff/active_record/operation_tree_builders/active_record_relation.rb +1 -2
- data/lib/super_diff/active_record/operation_tree_builders.rb +2 -2
- data/lib/super_diff/active_record/operation_tree_flatteners.rb +1 -1
- data/lib/super_diff/active_record/operation_trees.rb +1 -1
- data/lib/super_diff/active_record.rb +7 -15
- data/lib/super_diff/active_support/differs/hash_with_indifferent_access.rb +5 -6
- data/lib/super_diff/active_support/differs.rb +1 -1
- data/lib/super_diff/active_support/object_inspection/inspection_tree_builders/hash_with_indifferent_access.rb +3 -9
- data/lib/super_diff/active_support/object_inspection/inspection_tree_builders.rb +1 -1
- data/lib/super_diff/active_support/object_inspection.rb +1 -1
- data/lib/super_diff/active_support/operation_tree_builders/hash_with_indifferent_access.rb +5 -6
- data/lib/super_diff/active_support/operation_tree_builders.rb +1 -1
- data/lib/super_diff/active_support/operation_tree_flatteners.rb +1 -1
- data/lib/super_diff/active_support/operation_trees.rb +1 -1
- data/lib/super_diff/active_support.rb +6 -11
- data/lib/super_diff/colorized_document_extensions.rb +2 -4
- data/lib/super_diff/configuration.rb +14 -8
- data/lib/super_diff/csi/color.rb +4 -4
- data/lib/super_diff/csi/colorized_document.rb +12 -16
- data/lib/super_diff/csi/document.rb +8 -19
- data/lib/super_diff/csi/eight_bit_color.rb +19 -19
- data/lib/super_diff/csi/four_bit_color.rb +82 -31
- data/lib/super_diff/csi/twenty_four_bit_color.rb +12 -11
- data/lib/super_diff/csi/uncolorized_document.rb +2 -6
- data/lib/super_diff/csi.rb +10 -14
- data/lib/super_diff/diff_formatters/collection.rb +35 -41
- data/lib/super_diff/differs/default_object.rb +1 -1
- data/lib/super_diff/differs/defaults.rb +1 -1
- data/lib/super_diff/differs/main.rb +2 -13
- data/lib/super_diff/equality_matchers/array.rb +10 -12
- data/lib/super_diff/equality_matchers/base.rb +1 -1
- data/lib/super_diff/equality_matchers/default.rb +2 -4
- data/lib/super_diff/equality_matchers/defaults.rb +1 -1
- data/lib/super_diff/equality_matchers/hash.rb +10 -12
- data/lib/super_diff/equality_matchers/multiline_string.rb +11 -13
- data/lib/super_diff/equality_matchers/primitive.rb +10 -12
- data/lib/super_diff/equality_matchers/singleline_string.rb +10 -12
- data/lib/super_diff/equality_matchers.rb +1 -1
- data/lib/super_diff/errors.rb +3 -3
- data/lib/super_diff/gem_version.rb +3 -3
- data/lib/super_diff/helpers.rb +10 -10
- data/lib/super_diff/implementation_checks.rb +2 -2
- data/lib/super_diff/line.rb +3 -3
- data/lib/super_diff/object_inspection/inspection_tree.rb +46 -60
- data/lib/super_diff/object_inspection/inspection_tree_builders/array.rb +2 -6
- data/lib/super_diff/object_inspection/inspection_tree_builders/custom_object.rb +3 -9
- data/lib/super_diff/object_inspection/inspection_tree_builders/default_object.rb +5 -14
- data/lib/super_diff/object_inspection/inspection_tree_builders/defaults.rb +1 -1
- data/lib/super_diff/object_inspection/inspection_tree_builders/hash.rb +4 -12
- data/lib/super_diff/object_inspection/inspection_tree_builders/time_like.rb +6 -23
- data/lib/super_diff/object_inspection/inspection_tree_builders.rb +9 -9
- data/lib/super_diff/object_inspection/nodes/as_lines_when_rendering_to_lines.rb +8 -20
- data/lib/super_diff/object_inspection/nodes/as_prefix_when_rendering_to_lines.rb +1 -5
- data/lib/super_diff/object_inspection/nodes/as_prelude_when_rendering_to_lines.rb +1 -5
- data/lib/super_diff/object_inspection/nodes/as_single_line.rb +3 -7
- data/lib/super_diff/object_inspection/nodes/base.rb +9 -14
- data/lib/super_diff/object_inspection/nodes/inspection.rb +26 -34
- data/lib/super_diff/object_inspection/nodes/nesting.rb +1 -1
- data/lib/super_diff/object_inspection/nodes/only_when.rb +2 -6
- data/lib/super_diff/object_inspection/nodes/text.rb +1 -5
- data/lib/super_diff/object_inspection/nodes/when_empty.rb +2 -6
- data/lib/super_diff/object_inspection/nodes/when_non_empty.rb +2 -6
- data/lib/super_diff/object_inspection/nodes/when_rendering_to_lines.rb +1 -1
- data/lib/super_diff/object_inspection/nodes/when_rendering_to_string.rb +1 -5
- data/lib/super_diff/object_inspection/nodes.rb +7 -7
- data/lib/super_diff/object_inspection.rb +3 -3
- data/lib/super_diff/operation_tree_builders/array.rb +12 -11
- data/lib/super_diff/operation_tree_builders/base.rb +17 -15
- data/lib/super_diff/operation_tree_builders/custom_object.rb +8 -6
- data/lib/super_diff/operation_tree_builders/default_object.rb +29 -21
- data/lib/super_diff/operation_tree_builders/hash.rb +23 -24
- data/lib/super_diff/operation_tree_builders/main.rb +4 -11
- data/lib/super_diff/operation_tree_builders/multiline_string.rb +3 -3
- data/lib/super_diff/operation_tree_builders/time_like.rb +1 -11
- data/lib/super_diff/operation_tree_builders.rb +1 -1
- data/lib/super_diff/operation_tree_flatteners/base.rb +1 -5
- data/lib/super_diff/operation_tree_flatteners/collection.rb +13 -16
- data/lib/super_diff/operation_tree_flatteners/default_object.rb +1 -2
- data/lib/super_diff/operation_tree_flatteners/hash.rb +2 -10
- data/lib/super_diff/operation_tree_flatteners/multiline_string.rb +2 -1
- data/lib/super_diff/operation_tree_flatteners.rb +3 -3
- data/lib/super_diff/operation_trees/base.rb +3 -5
- data/lib/super_diff/operation_trees/default_object.rb +1 -3
- data/lib/super_diff/operations/binary_operation.rb +2 -2
- data/lib/super_diff/operations/unary_operation.rb +1 -1
- data/lib/super_diff/rails.rb +2 -1
- data/lib/super_diff/recursion_guard.rb +5 -4
- data/lib/super_diff/rspec/augmented_matcher.rb +4 -5
- data/lib/super_diff/rspec/differ.rb +6 -13
- data/lib/super_diff/rspec/differs/collection_containing_exactly.rb +3 -2
- data/lib/super_diff/rspec/differs/collection_including.rb +1 -1
- data/lib/super_diff/rspec/differs/hash_including.rb +1 -1
- data/lib/super_diff/rspec/differs.rb +3 -3
- data/lib/super_diff/rspec/matcher_text_builders/base.rb +13 -15
- data/lib/super_diff/rspec/matcher_text_builders/be_predicate.rb +5 -7
- data/lib/super_diff/rspec/matcher_text_builders/have_predicate.rb +3 -5
- data/lib/super_diff/rspec/matcher_text_builders/raise_error.rb +1 -5
- data/lib/super_diff/rspec/matcher_text_builders/respond_to.rb +2 -6
- data/lib/super_diff/rspec/matcher_text_builders.rb +5 -8
- data/lib/super_diff/rspec/matcher_text_template.rb +13 -16
- data/lib/super_diff/rspec/monkey_patches.rb +122 -116
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/collection_including.rb +8 -6
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/double.rb +11 -16
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/hash_including.rb +2 -1
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/instance_of.rb +8 -6
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders/kind_of.rb +8 -6
- data/lib/super_diff/rspec/object_inspection/inspection_tree_builders.rb +9 -9
- data/lib/super_diff/rspec/object_inspection.rb +1 -1
- data/lib/super_diff/rspec/operation_tree_builders/collection_containing_exactly.rb +11 -10
- data/lib/super_diff/rspec/operation_tree_builders/collection_including.rb +7 -6
- data/lib/super_diff/rspec/operation_tree_builders/hash_including.rb +11 -10
- data/lib/super_diff/rspec/operation_tree_builders/object_having_attributes.rb +22 -17
- data/lib/super_diff/rspec/operation_tree_builders.rb +4 -4
- data/lib/super_diff/rspec.rb +11 -13
- data/lib/super_diff/tiered_lines_elider.rb +87 -115
- data/lib/super_diff/tiered_lines_formatter.rb +5 -9
- data/lib/super_diff/version.rb +1 -1
- data/lib/super_diff.rb +4 -9
- data/spec/examples.txt +493 -485
- data/spec/integration/rails/active_record_spec.rb +3 -1
- data/spec/integration/rails/engines_spec.rb +20 -0
- data/spec/integration/rails/hash_with_indifferent_access_spec.rb +3 -1
- data/spec/integration/rspec/be_falsey_matcher_spec.rb +40 -35
- data/spec/integration/rspec/be_matcher_spec.rb +360 -320
- data/spec/integration/rspec/be_nil_matcher_spec.rb +38 -34
- data/spec/integration/rspec/be_predicate_matcher_spec.rb +376 -359
- data/spec/integration/rspec/be_truthy_matcher_spec.rb +38 -33
- data/spec/integration/rspec/contain_exactly_matcher_spec.rb +242 -239
- data/spec/integration/rspec/eq_matcher_spec.rb +595 -557
- data/spec/integration/rspec/have_attributes_matcher_spec.rb +294 -286
- data/spec/integration/rspec/have_predicate_matcher_spec.rb +291 -297
- data/spec/integration/rspec/include_matcher_spec.rb +317 -215
- data/spec/integration/rspec/match_array_matcher_spec.rb +276 -273
- data/spec/integration/rspec/match_matcher_spec.rb +847 -834
- data/spec/integration/rspec/raise_error_matcher_spec.rb +468 -453
- data/spec/integration/rspec/respond_to_matcher_spec.rb +702 -697
- data/spec/integration/rspec/third_party_matcher_spec.rb +142 -138
- data/spec/integration/rspec/unhandled_errors_spec.rb +88 -84
- data/spec/spec_helper.rb +17 -20
- data/spec/support/command_runner.rb +34 -57
- data/spec/support/integration/helpers.rb +35 -28
- data/spec/support/integration/matchers/produce_output_when_run_matcher.rb +28 -23
- data/spec/support/integration/test_programs/base.rb +12 -17
- data/spec/support/integration/test_programs/plain.rb +6 -0
- data/spec/support/integration/test_programs/rspec_active_record.rb +4 -1
- data/spec/support/integration/test_programs/rspec_active_support.rb +4 -1
- data/spec/support/integration/test_programs/rspec_rails.rb +4 -1
- data/spec/support/integration/test_programs/rspec_rails_engine.rb +30 -0
- data/spec/support/models/active_record/person.rb +6 -4
- data/spec/support/models/active_record/shipping_address.rb +9 -10
- data/spec/support/models/customer.rb +2 -4
- data/spec/support/models/player.rb +3 -6
- data/spec/support/models/shipping_address.rb +4 -13
- data/spec/support/shared_examples/active_record.rb +232 -214
- data/spec/support/shared_examples/active_support.rb +53 -51
- data/spec/support/shared_examples/elided_diffs.rb +405 -381
- data/spec/support/shared_examples/hash_with_indifferent_access.rb +424 -388
- data/spec/support/shared_examples/key.rb +123 -0
- data/spec/support/unit/helpers.rb +1 -3
- data/spec/support/unit/matchers/match_output.rb +12 -13
- data/spec/unit/active_record/object_inspection_spec.rb +222 -206
- data/spec/unit/equality_matchers/main_spec.rb +1049 -984
- data/spec/unit/helpers_spec.rb +14 -21
- data/spec/unit/operation_tree_flatteners/array_spec.rb +557 -524
- data/spec/unit/operation_tree_flatteners/custom_object_spec.rb +619 -601
- data/spec/unit/operation_tree_flatteners/default_object_spec.rb +619 -621
- data/spec/unit/operation_tree_flatteners/hash_spec.rb +595 -556
- data/spec/unit/operation_tree_flatteners/multiline_string_spec.rb +102 -92
- data/spec/unit/rspec/matchers/be_compared_to_spec.rb +3 -3
- data/spec/unit/rspec/matchers/be_predicate_spec.rb +3 -3
- data/spec/unit/rspec/matchers/contain_exactly_spec.rb +1 -1
- data/spec/unit/rspec/matchers/have_attributes_spec.rb +1 -1
- data/spec/unit/rspec/matchers/have_predicate_spec.rb +2 -2
- data/spec/unit/rspec/matchers/include_spec.rb +2 -2
- data/spec/unit/rspec/matchers/match_array_spec.rb +2 -2
- data/spec/unit/rspec/matchers/raise_error_spec.rb +5 -5
- data/spec/unit/rspec/matchers/respond_to_spec.rb +23 -16
- data/spec/unit/rspec/object_inspection_spec.rb +349 -324
- data/spec/unit/super_diff_spec.rb +1542 -1449
- data/spec/unit/tiered_lines_elider_spec.rb +3508 -3536
- data/spec/unit/tiered_lines_formatter_spec.rb +54 -116
- data/super_diff.gemspec +13 -12
- metadata +73 -73
- data/spec/tmp/warnings_logger/all_warnings.txt +0 -2
@@ -12,19 +12,22 @@ RSpec.describe SuperDiff, type: :unit do
|
|
12
12
|
|
13
13
|
context "given as_lines: true" do
|
14
14
|
it "returns nil wrapped in a single Line" do
|
15
|
-
tiered_lines =
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
indentation_level: 1,
|
20
|
-
)
|
21
|
-
expect(tiered_lines).to match([
|
22
|
-
an_object_having_attributes(
|
15
|
+
tiered_lines =
|
16
|
+
described_class.inspect_object(
|
17
|
+
nil,
|
18
|
+
as_lines: true,
|
23
19
|
type: :delete,
|
24
|
-
indentation_level: 1
|
25
|
-
|
26
|
-
|
27
|
-
|
20
|
+
indentation_level: 1
|
21
|
+
)
|
22
|
+
expect(tiered_lines).to match(
|
23
|
+
[
|
24
|
+
an_object_having_attributes(
|
25
|
+
type: :delete,
|
26
|
+
indentation_level: 1,
|
27
|
+
value: "nil"
|
28
|
+
)
|
29
|
+
]
|
30
|
+
)
|
28
31
|
end
|
29
32
|
end
|
30
33
|
end
|
@@ -39,19 +42,22 @@ RSpec.describe SuperDiff, type: :unit do
|
|
39
42
|
|
40
43
|
context "given as_lines: true" do
|
41
44
|
it "returns true wrapped in a single Line" do
|
42
|
-
tiered_lines =
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
indentation_level: 1,
|
47
|
-
)
|
48
|
-
expect(tiered_lines).to match([
|
49
|
-
an_object_having_attributes(
|
45
|
+
tiered_lines =
|
46
|
+
described_class.inspect_object(
|
47
|
+
true,
|
48
|
+
as_lines: true,
|
50
49
|
type: :delete,
|
51
|
-
indentation_level: 1
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
indentation_level: 1
|
51
|
+
)
|
52
|
+
expect(tiered_lines).to match(
|
53
|
+
[
|
54
|
+
an_object_having_attributes(
|
55
|
+
type: :delete,
|
56
|
+
indentation_level: 1,
|
57
|
+
value: "true"
|
58
|
+
)
|
59
|
+
]
|
60
|
+
)
|
55
61
|
end
|
56
62
|
end
|
57
63
|
end
|
@@ -66,19 +72,22 @@ RSpec.describe SuperDiff, type: :unit do
|
|
66
72
|
|
67
73
|
context "given as_lines: true" do
|
68
74
|
it "returns false wrapped in a single Line" do
|
69
|
-
tiered_lines =
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
indentation_level: 1,
|
74
|
-
)
|
75
|
-
expect(tiered_lines).to match([
|
76
|
-
an_object_having_attributes(
|
75
|
+
tiered_lines =
|
76
|
+
described_class.inspect_object(
|
77
|
+
false,
|
78
|
+
as_lines: true,
|
77
79
|
type: :delete,
|
78
|
-
indentation_level: 1
|
79
|
-
|
80
|
-
|
81
|
-
|
80
|
+
indentation_level: 1
|
81
|
+
)
|
82
|
+
expect(tiered_lines).to match(
|
83
|
+
[
|
84
|
+
an_object_having_attributes(
|
85
|
+
type: :delete,
|
86
|
+
indentation_level: 1,
|
87
|
+
value: "false"
|
88
|
+
)
|
89
|
+
]
|
90
|
+
)
|
82
91
|
end
|
83
92
|
end
|
84
93
|
end
|
@@ -93,19 +102,22 @@ RSpec.describe SuperDiff, type: :unit do
|
|
93
102
|
|
94
103
|
context "given as_lines: true" do
|
95
104
|
it "returns the number wrapped in a single Line" do
|
96
|
-
tiered_lines =
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
indentation_level: 1,
|
101
|
-
)
|
102
|
-
expect(tiered_lines).to match([
|
103
|
-
an_object_having_attributes(
|
105
|
+
tiered_lines =
|
106
|
+
described_class.inspect_object(
|
107
|
+
3,
|
108
|
+
as_lines: true,
|
104
109
|
type: :delete,
|
105
|
-
indentation_level: 1
|
106
|
-
|
107
|
-
|
108
|
-
|
110
|
+
indentation_level: 1
|
111
|
+
)
|
112
|
+
expect(tiered_lines).to match(
|
113
|
+
[
|
114
|
+
an_object_having_attributes(
|
115
|
+
type: :delete,
|
116
|
+
indentation_level: 1,
|
117
|
+
value: "3"
|
118
|
+
)
|
119
|
+
]
|
120
|
+
)
|
109
121
|
end
|
110
122
|
end
|
111
123
|
end
|
@@ -120,19 +132,22 @@ RSpec.describe SuperDiff, type: :unit do
|
|
120
132
|
|
121
133
|
context "given as_lines: true" do
|
122
134
|
it "returns an inspected version of the symbol wrapped in a single Line" do
|
123
|
-
tiered_lines =
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
indentation_level: 1,
|
128
|
-
)
|
129
|
-
expect(tiered_lines).to match([
|
130
|
-
an_object_having_attributes(
|
135
|
+
tiered_lines =
|
136
|
+
described_class.inspect_object(
|
137
|
+
:foo,
|
138
|
+
as_lines: true,
|
131
139
|
type: :delete,
|
132
|
-
indentation_level: 1
|
133
|
-
|
134
|
-
|
135
|
-
|
140
|
+
indentation_level: 1
|
141
|
+
)
|
142
|
+
expect(tiered_lines).to match(
|
143
|
+
[
|
144
|
+
an_object_having_attributes(
|
145
|
+
type: :delete,
|
146
|
+
indentation_level: 1,
|
147
|
+
value: ":foo"
|
148
|
+
)
|
149
|
+
]
|
150
|
+
)
|
136
151
|
end
|
137
152
|
end
|
138
153
|
end
|
@@ -147,19 +162,22 @@ RSpec.describe SuperDiff, type: :unit do
|
|
147
162
|
|
148
163
|
context "given as_lines: true" do
|
149
164
|
it "returns an inspected version of the regex wrapped in a single Line" do
|
150
|
-
tiered_lines =
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
indentation_level: 1,
|
155
|
-
)
|
156
|
-
expect(tiered_lines).to match([
|
157
|
-
an_object_having_attributes(
|
165
|
+
tiered_lines =
|
166
|
+
described_class.inspect_object(
|
167
|
+
/foo/,
|
168
|
+
as_lines: true,
|
158
169
|
type: :delete,
|
159
|
-
indentation_level: 1
|
160
|
-
|
161
|
-
|
162
|
-
|
170
|
+
indentation_level: 1
|
171
|
+
)
|
172
|
+
expect(tiered_lines).to match(
|
173
|
+
[
|
174
|
+
an_object_having_attributes(
|
175
|
+
type: :delete,
|
176
|
+
indentation_level: 1,
|
177
|
+
value: "/foo/"
|
178
|
+
)
|
179
|
+
]
|
180
|
+
)
|
163
181
|
end
|
164
182
|
end
|
165
183
|
end
|
@@ -174,19 +192,22 @@ RSpec.describe SuperDiff, type: :unit do
|
|
174
192
|
|
175
193
|
context "given as_lines: true" do
|
176
194
|
it "returns an inspected version of the string wrapped in a single Line" do
|
177
|
-
tiered_lines =
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
indentation_level: 1,
|
182
|
-
)
|
183
|
-
expect(tiered_lines).to match([
|
184
|
-
an_object_having_attributes(
|
195
|
+
tiered_lines =
|
196
|
+
described_class.inspect_object(
|
197
|
+
"Marty",
|
198
|
+
as_lines: true,
|
185
199
|
type: :delete,
|
186
|
-
indentation_level: 1
|
187
|
-
|
188
|
-
|
189
|
-
|
200
|
+
indentation_level: 1
|
201
|
+
)
|
202
|
+
expect(tiered_lines).to match(
|
203
|
+
[
|
204
|
+
an_object_having_attributes(
|
205
|
+
type: :delete,
|
206
|
+
indentation_level: 1,
|
207
|
+
value: %("Marty")
|
208
|
+
)
|
209
|
+
]
|
210
|
+
)
|
190
211
|
end
|
191
212
|
end
|
192
213
|
end
|
@@ -195,31 +216,36 @@ RSpec.describe SuperDiff, type: :unit do
|
|
195
216
|
context "that does not contain color codes" do
|
196
217
|
context "given as_lines: false" do
|
197
218
|
it "returns an inspected version of the string, with newline characters escaped" do
|
198
|
-
string =
|
199
|
-
|
200
|
-
|
201
|
-
|
219
|
+
string =
|
220
|
+
described_class.inspect_object(
|
221
|
+
"This is a line\nAnd that's a line\nAnd there's a line too",
|
222
|
+
as_lines: false
|
223
|
+
)
|
202
224
|
expect(string).to eq(
|
203
|
-
%("This is a line\\nAnd that's a line\\nAnd there's a line too")
|
225
|
+
%("This is a line\\nAnd that's a line\\nAnd there's a line too")
|
204
226
|
)
|
205
227
|
end
|
206
228
|
end
|
207
229
|
|
208
230
|
context "given as_lines: true" do
|
209
231
|
it "returns an inspected version of the string, with newline characters escaped, wrapped in a Line" do
|
210
|
-
tiered_lines =
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
indentation_level: 1,
|
215
|
-
)
|
216
|
-
expect(tiered_lines).to match([
|
217
|
-
an_object_having_attributes(
|
232
|
+
tiered_lines =
|
233
|
+
described_class.inspect_object(
|
234
|
+
"This is a line\nAnd that's a line\nAnd there's a line too",
|
235
|
+
as_lines: true,
|
218
236
|
type: :delete,
|
219
|
-
indentation_level: 1
|
220
|
-
|
221
|
-
|
222
|
-
|
237
|
+
indentation_level: 1
|
238
|
+
)
|
239
|
+
expect(tiered_lines).to match(
|
240
|
+
[
|
241
|
+
an_object_having_attributes(
|
242
|
+
type: :delete,
|
243
|
+
indentation_level: 1,
|
244
|
+
value:
|
245
|
+
%("This is a line\\nAnd that's a line\\nAnd there's a line too")
|
246
|
+
)
|
247
|
+
]
|
248
|
+
)
|
223
249
|
end
|
224
250
|
end
|
225
251
|
end
|
@@ -233,29 +259,27 @@ RSpec.describe SuperDiff, type: :unit do
|
|
233
259
|
red: 3,
|
234
260
|
green: 8,
|
235
261
|
blue: 4,
|
236
|
-
layer: :foreground
|
262
|
+
layer: :foreground
|
237
263
|
),
|
238
264
|
SuperDiff::Csi::TwentyFourBitColor.new(
|
239
265
|
red: 47,
|
240
266
|
green: 164,
|
241
267
|
blue: 59,
|
242
|
-
layer: :foreground
|
243
|
-
)
|
268
|
+
layer: :foreground
|
269
|
+
)
|
244
270
|
]
|
245
271
|
string_to_inspect = [
|
246
272
|
colored("This is a line", colors[0]),
|
247
273
|
colored("And that's a line", colors[1]),
|
248
|
-
colored("And there's a line too", colors[2])
|
274
|
+
colored("And there's a line too", colors[2])
|
249
275
|
].join("\n")
|
250
276
|
|
251
|
-
inspection =
|
252
|
-
string_to_inspect,
|
253
|
-
as_lines: false,
|
254
|
-
)
|
277
|
+
inspection =
|
278
|
+
described_class.inspect_object(string_to_inspect, as_lines: false)
|
255
279
|
# TODO: Figure out how to represent a colorized string inside of an
|
256
280
|
# already colorized string
|
257
281
|
expect(inspection).to eq(
|
258
|
-
%("\\e[34mThis is a line\\e[0m\\n\\e[38;5;176mAnd that's a line\\e[0m\\n\\e[38;2;47;59;164mAnd there's a line too\\e[0m")
|
282
|
+
%("\\e[34mThis is a line\\e[0m\\n\\e[38;5;176mAnd that's a line\\e[0m\\n\\e[38;2;47;59;164mAnd there's a line too\\e[0m")
|
259
283
|
)
|
260
284
|
end
|
261
285
|
end
|
@@ -268,36 +292,40 @@ RSpec.describe SuperDiff, type: :unit do
|
|
268
292
|
red: 3,
|
269
293
|
green: 8,
|
270
294
|
blue: 4,
|
271
|
-
layer: :foreground
|
295
|
+
layer: :foreground
|
272
296
|
),
|
273
297
|
SuperDiff::Csi::TwentyFourBitColor.new(
|
274
298
|
red: 47,
|
275
299
|
green: 164,
|
276
300
|
blue: 59,
|
277
|
-
layer: :foreground
|
278
|
-
)
|
301
|
+
layer: :foreground
|
302
|
+
)
|
279
303
|
]
|
280
304
|
string_to_inspect = [
|
281
305
|
colored("This is a line", colors[0]),
|
282
306
|
colored("And that's a line", colors[1]),
|
283
|
-
colored("And there's a line too", colors[2])
|
307
|
+
colored("And there's a line too", colors[2])
|
284
308
|
].join("\n")
|
285
309
|
|
286
|
-
tiered_lines =
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
310
|
+
tiered_lines =
|
311
|
+
described_class.inspect_object(
|
312
|
+
string_to_inspect,
|
313
|
+
as_lines: true,
|
314
|
+
type: :delete,
|
315
|
+
indentation_level: 1
|
316
|
+
)
|
292
317
|
# TODO: Figure out how to represent a colorized string inside of an
|
293
318
|
# already colorized string
|
294
|
-
expect(tiered_lines).to match(
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
319
|
+
expect(tiered_lines).to match(
|
320
|
+
[
|
321
|
+
an_object_having_attributes(
|
322
|
+
type: :delete,
|
323
|
+
indentation_level: 1,
|
324
|
+
value:
|
325
|
+
%("\\e[34mThis is a line\\e[0m\\n\\e[38;5;176mAnd that's a line\\e[0m\\n\\e[38;2;47;59;164mAnd there's a line too\\e[0m")
|
326
|
+
)
|
327
|
+
]
|
328
|
+
)
|
301
329
|
end
|
302
330
|
end
|
303
331
|
end
|
@@ -307,54 +335,55 @@ RSpec.describe SuperDiff, type: :unit do
|
|
307
335
|
context "containing only primitive values" do
|
308
336
|
context "given as_lines: false" do
|
309
337
|
it "returns an inspected version of the array" do
|
310
|
-
string =
|
311
|
-
["foo", 2, :baz],
|
312
|
-
as_lines: false,
|
313
|
-
)
|
338
|
+
string =
|
339
|
+
described_class.inspect_object(["foo", 2, :baz], as_lines: false)
|
314
340
|
expect(string).to eq(%(["foo", 2, :baz]))
|
315
341
|
end
|
316
342
|
end
|
317
343
|
|
318
344
|
context "given as_lines: true" do
|
319
345
|
it "returns an inspected version of the array as multiple Lines" do
|
320
|
-
tiered_lines =
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
indentation_level: 1,
|
325
|
-
)
|
326
|
-
expect(tiered_lines).to match([
|
327
|
-
an_object_having_attributes(
|
328
|
-
type: :delete,
|
329
|
-
indentation_level: 1,
|
330
|
-
value: %([),
|
331
|
-
collection_bookend: :open,
|
332
|
-
),
|
333
|
-
an_object_having_attributes(
|
334
|
-
type: :delete,
|
335
|
-
indentation_level: 2,
|
336
|
-
value: %("foo"),
|
337
|
-
add_comma: true,
|
338
|
-
),
|
339
|
-
an_object_having_attributes(
|
340
|
-
type: :delete,
|
341
|
-
indentation_level: 2,
|
342
|
-
value: %(2),
|
343
|
-
add_comma: true,
|
344
|
-
),
|
345
|
-
an_object_having_attributes(
|
346
|
-
type: :delete,
|
347
|
-
indentation_level: 2,
|
348
|
-
value: %(:baz),
|
349
|
-
add_comma: false,
|
350
|
-
),
|
351
|
-
an_object_having_attributes(
|
346
|
+
tiered_lines =
|
347
|
+
described_class.inspect_object(
|
348
|
+
["foo", 2, :baz],
|
349
|
+
as_lines: true,
|
352
350
|
type: :delete,
|
353
|
-
indentation_level: 1
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
351
|
+
indentation_level: 1
|
352
|
+
)
|
353
|
+
expect(tiered_lines).to match(
|
354
|
+
[
|
355
|
+
an_object_having_attributes(
|
356
|
+
type: :delete,
|
357
|
+
indentation_level: 1,
|
358
|
+
value: "[",
|
359
|
+
collection_bookend: :open
|
360
|
+
),
|
361
|
+
an_object_having_attributes(
|
362
|
+
type: :delete,
|
363
|
+
indentation_level: 2,
|
364
|
+
value: %("foo"),
|
365
|
+
add_comma: true
|
366
|
+
),
|
367
|
+
an_object_having_attributes(
|
368
|
+
type: :delete,
|
369
|
+
indentation_level: 2,
|
370
|
+
value: "2",
|
371
|
+
add_comma: true
|
372
|
+
),
|
373
|
+
an_object_having_attributes(
|
374
|
+
type: :delete,
|
375
|
+
indentation_level: 2,
|
376
|
+
value: ":baz",
|
377
|
+
add_comma: false
|
378
|
+
),
|
379
|
+
an_object_having_attributes(
|
380
|
+
type: :delete,
|
381
|
+
indentation_level: 1,
|
382
|
+
value: "]",
|
383
|
+
collection_bookend: :close
|
384
|
+
)
|
385
|
+
]
|
386
|
+
)
|
358
387
|
end
|
359
388
|
end
|
360
389
|
end
|
@@ -362,81 +391,77 @@ RSpec.describe SuperDiff, type: :unit do
|
|
362
391
|
context "containing other arrays" do
|
363
392
|
context "given as_lines: false" do
|
364
393
|
it "returns an inspected version of the array" do
|
365
|
-
string =
|
366
|
-
|
367
|
-
"foo",
|
368
|
-
|
369
|
-
|
370
|
-
],
|
371
|
-
as_lines: false,
|
372
|
-
)
|
394
|
+
string =
|
395
|
+
described_class.inspect_object(
|
396
|
+
["foo", %w[bar baz], "qux"],
|
397
|
+
as_lines: false
|
398
|
+
)
|
373
399
|
expect(string).to eq(%(["foo", ["bar", "baz"], "qux"]))
|
374
400
|
end
|
375
401
|
end
|
376
402
|
|
377
403
|
context "given as_lines: true" do
|
378
404
|
it "returns an inspected version of the array as multiple Lines" do
|
379
|
-
tiered_lines =
|
405
|
+
tiered_lines =
|
406
|
+
described_class.inspect_object(
|
407
|
+
["foo", %w[bar baz], "qux"],
|
408
|
+
as_lines: true,
|
409
|
+
type: :delete,
|
410
|
+
indentation_level: 1
|
411
|
+
)
|
412
|
+
expect(tiered_lines).to match(
|
380
413
|
[
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
414
|
+
an_object_having_attributes(
|
415
|
+
type: :delete,
|
416
|
+
indentation_level: 1,
|
417
|
+
value: "[",
|
418
|
+
collection_bookend: :open
|
419
|
+
),
|
420
|
+
an_object_having_attributes(
|
421
|
+
type: :delete,
|
422
|
+
indentation_level: 2,
|
423
|
+
value: %("foo"),
|
424
|
+
add_comma: true
|
425
|
+
),
|
426
|
+
an_object_having_attributes(
|
427
|
+
type: :delete,
|
428
|
+
indentation_level: 2,
|
429
|
+
value: "[",
|
430
|
+
collection_bookend: :open
|
431
|
+
),
|
432
|
+
an_object_having_attributes(
|
433
|
+
type: :delete,
|
434
|
+
indentation_level: 3,
|
435
|
+
value: %("bar"),
|
436
|
+
add_comma: true
|
437
|
+
),
|
438
|
+
an_object_having_attributes(
|
439
|
+
type: :delete,
|
440
|
+
indentation_level: 3,
|
441
|
+
value: %("baz"),
|
442
|
+
add_comma: false
|
443
|
+
),
|
444
|
+
an_object_having_attributes(
|
445
|
+
type: :delete,
|
446
|
+
indentation_level: 2,
|
447
|
+
value: "]",
|
448
|
+
add_comma: true,
|
449
|
+
collection_bookend: :close
|
450
|
+
),
|
451
|
+
an_object_having_attributes(
|
452
|
+
type: :delete,
|
453
|
+
indentation_level: 2,
|
454
|
+
value: %("qux"),
|
455
|
+
add_comma: false
|
456
|
+
),
|
457
|
+
an_object_having_attributes(
|
458
|
+
type: :delete,
|
459
|
+
indentation_level: 1,
|
460
|
+
value: "]",
|
461
|
+
collection_bookend: :close
|
462
|
+
)
|
463
|
+
]
|
388
464
|
)
|
389
|
-
expect(tiered_lines).to match([
|
390
|
-
an_object_having_attributes(
|
391
|
-
type: :delete,
|
392
|
-
indentation_level: 1,
|
393
|
-
value: %([),
|
394
|
-
collection_bookend: :open,
|
395
|
-
),
|
396
|
-
an_object_having_attributes(
|
397
|
-
type: :delete,
|
398
|
-
indentation_level: 2,
|
399
|
-
value: %("foo"),
|
400
|
-
add_comma: true,
|
401
|
-
),
|
402
|
-
an_object_having_attributes(
|
403
|
-
type: :delete,
|
404
|
-
indentation_level: 2,
|
405
|
-
value: %([),
|
406
|
-
collection_bookend: :open,
|
407
|
-
),
|
408
|
-
an_object_having_attributes(
|
409
|
-
type: :delete,
|
410
|
-
indentation_level: 3,
|
411
|
-
value: %("bar"),
|
412
|
-
add_comma: true,
|
413
|
-
),
|
414
|
-
an_object_having_attributes(
|
415
|
-
type: :delete,
|
416
|
-
indentation_level: 3,
|
417
|
-
value: %("baz"),
|
418
|
-
add_comma: false,
|
419
|
-
),
|
420
|
-
an_object_having_attributes(
|
421
|
-
type: :delete,
|
422
|
-
indentation_level: 2,
|
423
|
-
value: %(]),
|
424
|
-
add_comma: true,
|
425
|
-
collection_bookend: :close,
|
426
|
-
),
|
427
|
-
an_object_having_attributes(
|
428
|
-
type: :delete,
|
429
|
-
indentation_level: 2,
|
430
|
-
value: %("qux"),
|
431
|
-
add_comma: false,
|
432
|
-
),
|
433
|
-
an_object_having_attributes(
|
434
|
-
type: :delete,
|
435
|
-
indentation_level: 1,
|
436
|
-
value: %(]),
|
437
|
-
collection_bookend: :close,
|
438
|
-
),
|
439
|
-
])
|
440
465
|
end
|
441
466
|
end
|
442
467
|
end
|
@@ -445,25 +470,28 @@ RSpec.describe SuperDiff, type: :unit do
|
|
445
470
|
context "given as_lines: false" do
|
446
471
|
it "returns an inspected version of the array" do
|
447
472
|
string = described_class.inspect_object([], as_lines: false)
|
448
|
-
expect(string).to eq(
|
473
|
+
expect(string).to eq("[]")
|
449
474
|
end
|
450
475
|
end
|
451
476
|
|
452
477
|
context "given as_lines: true" do
|
453
478
|
it "returns an inspected version of the array as multiple Lines" do
|
454
|
-
tiered_lines =
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
indentation_level: 1,
|
459
|
-
)
|
460
|
-
expect(tiered_lines).to match([
|
461
|
-
an_object_having_attributes(
|
479
|
+
tiered_lines =
|
480
|
+
described_class.inspect_object(
|
481
|
+
[],
|
482
|
+
as_lines: true,
|
462
483
|
type: :delete,
|
463
|
-
indentation_level: 1
|
464
|
-
|
465
|
-
|
466
|
-
|
484
|
+
indentation_level: 1
|
485
|
+
)
|
486
|
+
expect(tiered_lines).to match(
|
487
|
+
[
|
488
|
+
an_object_having_attributes(
|
489
|
+
type: :delete,
|
490
|
+
indentation_level: 1,
|
491
|
+
value: "[]"
|
492
|
+
)
|
493
|
+
]
|
494
|
+
)
|
467
495
|
end
|
468
496
|
end
|
469
497
|
end
|
@@ -474,252 +502,971 @@ RSpec.describe SuperDiff, type: :unit do
|
|
474
502
|
context "where all of the keys are symbols" do
|
475
503
|
context "given as_lines: false" do
|
476
504
|
it "returns an inspected version of the hash" do
|
477
|
-
string =
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
505
|
+
string =
|
506
|
+
described_class.inspect_object(
|
507
|
+
# rubocop:disable Style/HashSyntax
|
508
|
+
{ foo: "bar", baz: "qux" },
|
509
|
+
# rubocop:enable Style/HashSyntax
|
510
|
+
as_lines: false
|
511
|
+
)
|
483
512
|
expect(string).to eq(%({ foo: "bar", baz: "qux" }))
|
484
513
|
end
|
485
514
|
end
|
486
515
|
|
487
516
|
context "given as_lines: true" do
|
488
517
|
it "returns an inspected version of the hash as multiple Lines" do
|
489
|
-
tiered_lines =
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
indentation_level: 1,
|
496
|
-
)
|
497
|
-
expect(tiered_lines).to match([
|
498
|
-
an_object_having_attributes(
|
499
|
-
type: :delete,
|
500
|
-
indentation_level: 1,
|
501
|
-
value: %({),
|
502
|
-
collection_bookend: :open,
|
503
|
-
),
|
504
|
-
an_object_having_attributes(
|
518
|
+
tiered_lines =
|
519
|
+
described_class.inspect_object(
|
520
|
+
# rubocop:disable Style/HashSyntax
|
521
|
+
{ foo: "bar", baz: "qux" },
|
522
|
+
# rubocop:enable Style/HashSyntax
|
523
|
+
as_lines: true,
|
505
524
|
type: :delete,
|
506
|
-
indentation_level:
|
507
|
-
|
508
|
-
|
525
|
+
indentation_level: 1
|
526
|
+
)
|
527
|
+
expect(tiered_lines).to match(
|
528
|
+
[
|
529
|
+
an_object_having_attributes(
|
530
|
+
type: :delete,
|
531
|
+
indentation_level: 1,
|
532
|
+
value: "{",
|
533
|
+
collection_bookend: :open
|
534
|
+
),
|
535
|
+
an_object_having_attributes(
|
536
|
+
type: :delete,
|
537
|
+
indentation_level: 2,
|
538
|
+
prefix: "foo: ",
|
539
|
+
value: %("bar"),
|
540
|
+
add_comma: true
|
541
|
+
),
|
542
|
+
an_object_having_attributes(
|
543
|
+
type: :delete,
|
544
|
+
indentation_level: 2,
|
545
|
+
prefix: "baz: ",
|
546
|
+
value: %("qux"),
|
547
|
+
add_comma: false
|
548
|
+
),
|
549
|
+
an_object_having_attributes(
|
550
|
+
type: :delete,
|
551
|
+
indentation_level: 1,
|
552
|
+
value: "}",
|
553
|
+
collection_bookend: :close
|
554
|
+
)
|
555
|
+
]
|
556
|
+
)
|
557
|
+
end
|
558
|
+
end
|
559
|
+
end
|
560
|
+
|
561
|
+
context "where only some of the keys are symbols" do
|
562
|
+
context "given as_lines: false" do
|
563
|
+
it "returns an inspected version of the hash" do
|
564
|
+
string =
|
565
|
+
described_class.inspect_object(
|
566
|
+
{ :foo => "bar", 2 => "baz" },
|
567
|
+
as_lines: false
|
568
|
+
)
|
569
|
+
expect(string).to eq(%({ :foo => "bar", 2 => "baz" }))
|
570
|
+
end
|
571
|
+
end
|
572
|
+
|
573
|
+
context "given as_lines: true" do
|
574
|
+
it "returns an inspected version of the hash as multiple Lines" do
|
575
|
+
tiered_lines =
|
576
|
+
described_class.inspect_object(
|
577
|
+
{ :foo => "bar", 2 => "baz" },
|
578
|
+
as_lines: true,
|
579
|
+
type: :delete,
|
580
|
+
indentation_level: 1
|
581
|
+
)
|
582
|
+
expect(tiered_lines).to match(
|
583
|
+
[
|
584
|
+
an_object_having_attributes(
|
585
|
+
type: :delete,
|
586
|
+
indentation_level: 1,
|
587
|
+
value: "{",
|
588
|
+
collection_bookend: :open
|
589
|
+
),
|
590
|
+
an_object_having_attributes(
|
591
|
+
type: :delete,
|
592
|
+
indentation_level: 2,
|
593
|
+
prefix: ":foo => ",
|
594
|
+
value: %("bar"),
|
595
|
+
add_comma: true
|
596
|
+
),
|
597
|
+
an_object_having_attributes(
|
598
|
+
type: :delete,
|
599
|
+
indentation_level: 2,
|
600
|
+
prefix: "2 => ",
|
601
|
+
value: %("baz"),
|
602
|
+
add_comma: false
|
603
|
+
),
|
604
|
+
an_object_having_attributes(
|
605
|
+
type: :delete,
|
606
|
+
indentation_level: 1,
|
607
|
+
value: "}",
|
608
|
+
collection_bookend: :close
|
609
|
+
)
|
610
|
+
]
|
611
|
+
)
|
612
|
+
end
|
613
|
+
end
|
614
|
+
end
|
615
|
+
end
|
616
|
+
|
617
|
+
context "containing other hashes" do
|
618
|
+
context "given as_lines: false" do
|
619
|
+
it "returns an inspected version of the hash" do
|
620
|
+
value_to_inspect = {
|
621
|
+
# rubocop:disable Style/HashSyntax
|
622
|
+
category_name: "Appliances",
|
623
|
+
products_by_sku: {
|
624
|
+
"EMDL-2934" => {
|
625
|
+
id: 4,
|
626
|
+
name: "Jordan Air"
|
627
|
+
},
|
628
|
+
"KDS-3912" => {
|
629
|
+
id: 8,
|
630
|
+
name: "Chevy Impala"
|
631
|
+
}
|
632
|
+
},
|
633
|
+
number_of_products: 2
|
634
|
+
# rubocop:enable Style/HashSyntax
|
635
|
+
}
|
636
|
+
string =
|
637
|
+
described_class.inspect_object(value_to_inspect, as_lines: false)
|
638
|
+
# rubocop:disable Metrics/LineLength
|
639
|
+
expect(string).to eq(
|
640
|
+
%({ category_name: "Appliances", products_by_sku: { "EMDL-2934" => { id: 4, name: "Jordan Air" }, "KDS-3912" => { id: 8, name: "Chevy Impala" } }, number_of_products: 2 })
|
641
|
+
)
|
642
|
+
# rubocop:enable Metrics/LineLength
|
643
|
+
end
|
644
|
+
end
|
645
|
+
|
646
|
+
context "given as_lines: true" do
|
647
|
+
it "returns an inspected version of the array as multiple Lines" do
|
648
|
+
value_to_inspect = {
|
649
|
+
# rubocop:disable Style/HashSyntax
|
650
|
+
category_name: "Appliances",
|
651
|
+
products_by_sku: {
|
652
|
+
"EMDL-2934" => {
|
653
|
+
id: 4,
|
654
|
+
name: "George Foreman Grill"
|
655
|
+
},
|
656
|
+
"KDS-3912" => {
|
657
|
+
id: 8,
|
658
|
+
name: "Magic Bullet"
|
659
|
+
}
|
660
|
+
},
|
661
|
+
number_of_products: 2
|
662
|
+
# rubocop:enable Style/HashSyntax
|
663
|
+
}
|
664
|
+
tiered_lines =
|
665
|
+
described_class.inspect_object(
|
666
|
+
value_to_inspect,
|
667
|
+
as_lines: true,
|
668
|
+
type: :delete,
|
669
|
+
indentation_level: 1
|
670
|
+
)
|
671
|
+
expect(tiered_lines).to match(
|
672
|
+
[
|
673
|
+
an_object_having_attributes(
|
674
|
+
type: :delete,
|
675
|
+
indentation_level: 1,
|
676
|
+
value: "{",
|
677
|
+
collection_bookend: :open
|
678
|
+
),
|
679
|
+
an_object_having_attributes(
|
680
|
+
type: :delete,
|
681
|
+
indentation_level: 2,
|
682
|
+
prefix: "category_name: ",
|
683
|
+
value: %("Appliances"),
|
684
|
+
add_comma: true
|
685
|
+
),
|
686
|
+
an_object_having_attributes(
|
687
|
+
type: :delete,
|
688
|
+
indentation_level: 2,
|
689
|
+
prefix: "products_by_sku: ",
|
690
|
+
value: "{",
|
691
|
+
collection_bookend: :open
|
692
|
+
),
|
693
|
+
an_object_having_attributes(
|
694
|
+
type: :delete,
|
695
|
+
indentation_level: 3,
|
696
|
+
prefix: %("EMDL-2934" => ),
|
697
|
+
value: "{",
|
698
|
+
collection_bookend: :open
|
699
|
+
),
|
700
|
+
an_object_having_attributes(
|
701
|
+
type: :delete,
|
702
|
+
indentation_level: 4,
|
703
|
+
prefix: "id: ",
|
704
|
+
value: "4",
|
705
|
+
add_comma: true
|
706
|
+
),
|
707
|
+
an_object_having_attributes(
|
708
|
+
type: :delete,
|
709
|
+
indentation_level: 4,
|
710
|
+
prefix: "name: ",
|
711
|
+
value: %("George Foreman Grill"),
|
712
|
+
add_comma: false
|
713
|
+
),
|
714
|
+
an_object_having_attributes(
|
715
|
+
type: :delete,
|
716
|
+
indentation_level: 3,
|
717
|
+
prefix: "",
|
718
|
+
value: "}",
|
509
719
|
add_comma: true,
|
720
|
+
collection_bookend: :close
|
721
|
+
),
|
722
|
+
an_object_having_attributes(
|
723
|
+
type: :delete,
|
724
|
+
indentation_level: 3,
|
725
|
+
prefix: %("KDS-3912" => ),
|
726
|
+
value: "{",
|
727
|
+
collection_bookend: :open
|
728
|
+
),
|
729
|
+
an_object_having_attributes(
|
730
|
+
type: :delete,
|
731
|
+
indentation_level: 4,
|
732
|
+
prefix: "id: ",
|
733
|
+
value: "8",
|
734
|
+
add_comma: true
|
735
|
+
),
|
736
|
+
an_object_having_attributes(
|
737
|
+
type: :delete,
|
738
|
+
indentation_level: 4,
|
739
|
+
prefix: "name: ",
|
740
|
+
value: %("Magic Bullet"),
|
741
|
+
add_comma: false
|
742
|
+
),
|
743
|
+
an_object_having_attributes(
|
744
|
+
type: :delete,
|
745
|
+
indentation_level: 3,
|
746
|
+
prefix: "",
|
747
|
+
value: "}",
|
748
|
+
collection_bookend: :close
|
510
749
|
),
|
511
750
|
an_object_having_attributes(
|
512
751
|
type: :delete,
|
513
752
|
indentation_level: 2,
|
514
|
-
prefix:
|
515
|
-
value:
|
516
|
-
add_comma:
|
753
|
+
prefix: "",
|
754
|
+
value: "}",
|
755
|
+
add_comma: true,
|
756
|
+
collection_bookend: :close
|
517
757
|
),
|
518
758
|
an_object_having_attributes(
|
519
759
|
type: :delete,
|
520
|
-
indentation_level:
|
521
|
-
|
522
|
-
|
760
|
+
indentation_level: 2,
|
761
|
+
prefix: "number_of_products: ",
|
762
|
+
value: "2"
|
523
763
|
),
|
524
|
-
|
525
|
-
|
764
|
+
an_object_having_attributes(
|
765
|
+
type: :delete,
|
766
|
+
indentation_level: 1,
|
767
|
+
prefix: "",
|
768
|
+
value: "}"
|
769
|
+
)
|
770
|
+
]
|
771
|
+
)
|
526
772
|
end
|
527
773
|
end
|
774
|
+
end
|
528
775
|
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
776
|
+
context "which is empty" do
|
777
|
+
context "given as_lines: false" do
|
778
|
+
it "returns an inspected version of the array" do
|
779
|
+
string = described_class.inspect_object({}, as_lines: false)
|
780
|
+
expect(string).to eq("{}")
|
781
|
+
end
|
782
|
+
end
|
783
|
+
|
784
|
+
context "given as_lines: true" do
|
785
|
+
it "returns an inspected version of the array" do
|
786
|
+
tiered_lines =
|
787
|
+
described_class.inspect_object(
|
788
|
+
{},
|
789
|
+
as_lines: true,
|
790
|
+
type: :delete,
|
791
|
+
indentation_level: 1
|
535
792
|
)
|
536
|
-
|
537
|
-
|
793
|
+
expect(tiered_lines).to match(
|
794
|
+
[
|
795
|
+
an_object_having_attributes(
|
796
|
+
type: :delete,
|
797
|
+
indentation_level: 1,
|
798
|
+
value: "{}"
|
799
|
+
)
|
800
|
+
]
|
801
|
+
)
|
538
802
|
end
|
803
|
+
end
|
804
|
+
end
|
805
|
+
end
|
539
806
|
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
807
|
+
context "given a Time object" do
|
808
|
+
context "that does not have an associated time zone" do
|
809
|
+
context "given as_lines: false" do
|
810
|
+
it "returns a representation of the time on a single line" do
|
811
|
+
inspection =
|
812
|
+
described_class.inspect_object(
|
813
|
+
Time.new(2021, 5, 5, 10, 23, 28.1234567891, "-05:00"),
|
814
|
+
as_lines: false
|
815
|
+
)
|
816
|
+
expect(inspection).to eq(
|
817
|
+
"#<Time 2021-05-05 10:23:28+(34749996836695/281474976710656) -05:00>"
|
818
|
+
)
|
819
|
+
end
|
820
|
+
end
|
821
|
+
|
822
|
+
context "given as_lines: true" do
|
823
|
+
it "returns a representation of the time across multiple lines" do
|
824
|
+
inspection =
|
825
|
+
described_class.inspect_object(
|
826
|
+
Time.new(2021, 5, 5, 10, 23, 28.1234567891, "-05:00"),
|
544
827
|
as_lines: true,
|
545
828
|
type: :delete,
|
546
|
-
indentation_level: 1
|
829
|
+
indentation_level: 1
|
547
830
|
)
|
548
|
-
|
831
|
+
expect(inspection).to match(
|
832
|
+
[
|
549
833
|
an_object_having_attributes(
|
550
834
|
type: :delete,
|
551
835
|
indentation_level: 1,
|
552
|
-
value:
|
553
|
-
|
836
|
+
value: "#<Time {",
|
837
|
+
add_comma: false,
|
838
|
+
collection_bookend: :open
|
554
839
|
),
|
555
840
|
an_object_having_attributes(
|
556
841
|
type: :delete,
|
557
842
|
indentation_level: 2,
|
558
|
-
|
559
|
-
value: %("bar"),
|
843
|
+
value: "year: 2021",
|
560
844
|
add_comma: true,
|
845
|
+
collection_bookend: nil
|
561
846
|
),
|
562
847
|
an_object_having_attributes(
|
563
848
|
type: :delete,
|
564
849
|
indentation_level: 2,
|
565
|
-
|
566
|
-
|
850
|
+
value: "month: 5",
|
851
|
+
add_comma: true,
|
852
|
+
collection_bookend: nil
|
853
|
+
),
|
854
|
+
an_object_having_attributes(
|
855
|
+
type: :delete,
|
856
|
+
indentation_level: 2,
|
857
|
+
value: "day: 5",
|
858
|
+
add_comma: true,
|
859
|
+
collection_bookend: nil
|
860
|
+
),
|
861
|
+
an_object_having_attributes(
|
862
|
+
type: :delete,
|
863
|
+
indentation_level: 2,
|
864
|
+
value: "hour: 10",
|
865
|
+
add_comma: true,
|
866
|
+
collection_bookend: nil
|
867
|
+
),
|
868
|
+
an_object_having_attributes(
|
869
|
+
type: :delete,
|
870
|
+
indentation_level: 2,
|
871
|
+
value: "min: 23",
|
872
|
+
add_comma: true,
|
873
|
+
collection_bookend: nil
|
874
|
+
),
|
875
|
+
an_object_having_attributes(
|
876
|
+
type: :delete,
|
877
|
+
indentation_level: 2,
|
878
|
+
value: "sec: 28",
|
879
|
+
add_comma: true,
|
880
|
+
collection_bookend: nil
|
881
|
+
),
|
882
|
+
an_object_having_attributes(
|
883
|
+
type: :delete,
|
884
|
+
indentation_level: 2,
|
885
|
+
value: "subsec: (34749996836695/281474976710656)",
|
886
|
+
add_comma: true,
|
887
|
+
collection_bookend: nil
|
888
|
+
),
|
889
|
+
an_object_having_attributes(
|
890
|
+
type: :delete,
|
891
|
+
indentation_level: 2,
|
892
|
+
value: "zone: nil",
|
893
|
+
add_comma: true,
|
894
|
+
collection_bookend: nil
|
895
|
+
),
|
896
|
+
an_object_having_attributes(
|
897
|
+
type: :delete,
|
898
|
+
indentation_level: 2,
|
899
|
+
value: "utc_offset: -18000",
|
567
900
|
add_comma: false,
|
901
|
+
collection_bookend: nil
|
568
902
|
),
|
569
903
|
an_object_having_attributes(
|
570
904
|
type: :delete,
|
571
905
|
indentation_level: 1,
|
572
|
-
value:
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
906
|
+
value: "}>",
|
907
|
+
add_comma: false,
|
908
|
+
collection_bookend: :close
|
909
|
+
)
|
910
|
+
]
|
911
|
+
)
|
577
912
|
end
|
578
913
|
end
|
579
914
|
end
|
580
915
|
|
581
|
-
context "
|
916
|
+
context "that has an associated time zone" do
|
917
|
+
around do |example|
|
918
|
+
ClimateControl.modify(TZ: "America/Chicago", &example)
|
919
|
+
end
|
920
|
+
|
582
921
|
context "given as_lines: false" do
|
583
|
-
it "returns
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
:number_of_products => 2,
|
592
|
-
# rubocop:enable Style/HashSyntax
|
593
|
-
}
|
594
|
-
string = described_class.inspect_object(
|
595
|
-
value_to_inspect,
|
596
|
-
as_lines: false,
|
597
|
-
)
|
598
|
-
# rubocop:disable Metrics/LineLength
|
599
|
-
expect(string).to eq(
|
600
|
-
%({ category_name: "Appliances", products_by_sku: { "EMDL-2934" => { id: 4, name: "Jordan Air" }, "KDS-3912" => { id: 8, name: "Chevy Impala" } }, number_of_products: 2 }),
|
922
|
+
it "returns a representation of the time on a single line" do
|
923
|
+
inspection =
|
924
|
+
described_class.inspect_object(
|
925
|
+
Time.new(2021, 5, 5, 10, 23, 28.1234567891),
|
926
|
+
as_lines: false
|
927
|
+
)
|
928
|
+
expect(inspection).to eq(
|
929
|
+
"#<Time 2021-05-05 10:23:28+(34749996836695/281474976710656) -05:00 (CDT)>"
|
601
930
|
)
|
602
|
-
# rubocop:enable Metrics/LineLength
|
603
931
|
end
|
604
932
|
end
|
605
933
|
|
606
934
|
context "given as_lines: true" do
|
607
|
-
it "returns
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
"EMDL-2934" => { :id => 4, :name => "George Foreman Grill" },
|
613
|
-
"KDS-3912" => { :id => 8, :name => "Magic Bullet" },
|
614
|
-
},
|
615
|
-
:number_of_products => 2,
|
616
|
-
# rubocop:enable Style/HashSyntax
|
617
|
-
}
|
618
|
-
tiered_lines = described_class.inspect_object(
|
619
|
-
value_to_inspect,
|
620
|
-
as_lines: true,
|
621
|
-
type: :delete,
|
622
|
-
indentation_level: 1,
|
623
|
-
)
|
624
|
-
expect(tiered_lines).to match([
|
625
|
-
an_object_having_attributes(
|
626
|
-
type: :delete,
|
627
|
-
indentation_level: 1,
|
628
|
-
value: %({),
|
629
|
-
collection_bookend: :open,
|
630
|
-
),
|
631
|
-
an_object_having_attributes(
|
632
|
-
type: :delete,
|
633
|
-
indentation_level: 2,
|
634
|
-
prefix: %(category_name: ),
|
635
|
-
value: %("Appliances"),
|
636
|
-
add_comma: true,
|
637
|
-
),
|
638
|
-
an_object_having_attributes(
|
639
|
-
type: :delete,
|
640
|
-
indentation_level: 2,
|
641
|
-
prefix: %(products_by_sku: ),
|
642
|
-
value: %({),
|
643
|
-
collection_bookend: :open,
|
644
|
-
),
|
645
|
-
an_object_having_attributes(
|
646
|
-
type: :delete,
|
647
|
-
indentation_level: 3,
|
648
|
-
prefix: %("EMDL-2934" => ),
|
649
|
-
value: %({),
|
650
|
-
collection_bookend: :open,
|
651
|
-
),
|
652
|
-
an_object_having_attributes(
|
653
|
-
type: :delete,
|
654
|
-
indentation_level: 4,
|
655
|
-
prefix: %(id: ),
|
656
|
-
value: %(4),
|
657
|
-
add_comma: true,
|
658
|
-
),
|
659
|
-
an_object_having_attributes(
|
660
|
-
type: :delete,
|
661
|
-
indentation_level: 4,
|
662
|
-
prefix: %(name: ),
|
663
|
-
value: %("George Foreman Grill"),
|
664
|
-
add_comma: false,
|
665
|
-
),
|
666
|
-
an_object_having_attributes(
|
667
|
-
type: :delete,
|
668
|
-
indentation_level: 3,
|
669
|
-
prefix: "",
|
670
|
-
value: %(}),
|
671
|
-
add_comma: true,
|
672
|
-
collection_bookend: :close,
|
673
|
-
),
|
674
|
-
an_object_having_attributes(
|
675
|
-
type: :delete,
|
676
|
-
indentation_level: 3,
|
677
|
-
prefix: %("KDS-3912" => ),
|
678
|
-
value: %({),
|
679
|
-
collection_bookend: :open,
|
680
|
-
),
|
681
|
-
an_object_having_attributes(
|
682
|
-
type: :delete,
|
683
|
-
indentation_level: 4,
|
684
|
-
prefix: %(id: ),
|
685
|
-
value: %(8),
|
686
|
-
add_comma: true,
|
687
|
-
),
|
688
|
-
an_object_having_attributes(
|
935
|
+
it "returns a representation of the time across multiple lines" do
|
936
|
+
inspection =
|
937
|
+
described_class.inspect_object(
|
938
|
+
Time.new(2021, 5, 5, 10, 23, 28.1234567891),
|
939
|
+
as_lines: true,
|
689
940
|
type: :delete,
|
690
|
-
indentation_level:
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
941
|
+
indentation_level: 1
|
942
|
+
)
|
943
|
+
expect(inspection).to match(
|
944
|
+
[
|
945
|
+
an_object_having_attributes(
|
946
|
+
type: :delete,
|
947
|
+
indentation_level: 1,
|
948
|
+
value: "#<Time {",
|
949
|
+
add_comma: false,
|
950
|
+
collection_bookend: :open
|
951
|
+
),
|
952
|
+
an_object_having_attributes(
|
953
|
+
type: :delete,
|
954
|
+
indentation_level: 2,
|
955
|
+
value: "year: 2021",
|
956
|
+
add_comma: true,
|
957
|
+
collection_bookend: nil
|
958
|
+
),
|
959
|
+
an_object_having_attributes(
|
960
|
+
type: :delete,
|
961
|
+
indentation_level: 2,
|
962
|
+
value: "month: 5",
|
963
|
+
add_comma: true,
|
964
|
+
collection_bookend: nil
|
965
|
+
),
|
966
|
+
an_object_having_attributes(
|
967
|
+
type: :delete,
|
968
|
+
indentation_level: 2,
|
969
|
+
value: "day: 5",
|
970
|
+
add_comma: true,
|
971
|
+
collection_bookend: nil
|
972
|
+
),
|
973
|
+
an_object_having_attributes(
|
974
|
+
type: :delete,
|
975
|
+
indentation_level: 2,
|
976
|
+
value: "hour: 10",
|
977
|
+
add_comma: true,
|
978
|
+
collection_bookend: nil
|
979
|
+
),
|
980
|
+
an_object_having_attributes(
|
981
|
+
type: :delete,
|
982
|
+
indentation_level: 2,
|
983
|
+
value: "min: 23",
|
984
|
+
add_comma: true,
|
985
|
+
collection_bookend: nil
|
986
|
+
),
|
987
|
+
an_object_having_attributes(
|
988
|
+
type: :delete,
|
989
|
+
indentation_level: 2,
|
990
|
+
value: "sec: 28",
|
991
|
+
add_comma: true,
|
992
|
+
collection_bookend: nil
|
993
|
+
),
|
994
|
+
an_object_having_attributes(
|
995
|
+
type: :delete,
|
996
|
+
indentation_level: 2,
|
997
|
+
value: "subsec: (34749996836695/281474976710656)",
|
998
|
+
add_comma: true,
|
999
|
+
collection_bookend: nil
|
1000
|
+
),
|
1001
|
+
an_object_having_attributes(
|
1002
|
+
type: :delete,
|
1003
|
+
indentation_level: 2,
|
1004
|
+
value: %(zone: "CDT"),
|
1005
|
+
add_comma: true,
|
1006
|
+
collection_bookend: nil
|
1007
|
+
),
|
1008
|
+
an_object_having_attributes(
|
1009
|
+
type: :delete,
|
1010
|
+
indentation_level: 2,
|
1011
|
+
value: "utc_offset: -18000",
|
1012
|
+
add_comma: false,
|
1013
|
+
collection_bookend: nil
|
1014
|
+
),
|
1015
|
+
an_object_having_attributes(
|
1016
|
+
type: :delete,
|
1017
|
+
indentation_level: 1,
|
1018
|
+
value: "}>",
|
1019
|
+
add_comma: false,
|
1020
|
+
collection_bookend: :close
|
1021
|
+
)
|
1022
|
+
]
|
1023
|
+
)
|
1024
|
+
end
|
1025
|
+
end
|
1026
|
+
end
|
1027
|
+
end
|
1028
|
+
|
1029
|
+
context "given a class" do
|
1030
|
+
context "given as_lines: false" do
|
1031
|
+
it "returns an inspected version of the object" do
|
1032
|
+
string =
|
1033
|
+
described_class.inspect_object(
|
1034
|
+
SuperDiff::Test::Person,
|
1035
|
+
as_lines: false
|
1036
|
+
)
|
1037
|
+
expect(string).to eq("SuperDiff::Test::Person")
|
1038
|
+
end
|
1039
|
+
end
|
1040
|
+
|
1041
|
+
context "given as_lines: true" do
|
1042
|
+
it "returns an inspected version of the object" do
|
1043
|
+
tiered_lines =
|
1044
|
+
described_class.inspect_object(
|
1045
|
+
SuperDiff::Test::Person,
|
1046
|
+
as_lines: true,
|
1047
|
+
type: :delete,
|
1048
|
+
indentation_level: 1
|
1049
|
+
)
|
1050
|
+
expect(tiered_lines).to match(
|
1051
|
+
[
|
695
1052
|
an_object_having_attributes(
|
696
1053
|
type: :delete,
|
697
|
-
indentation_level:
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
1054
|
+
indentation_level: 1,
|
1055
|
+
value: "SuperDiff::Test::Person"
|
1056
|
+
)
|
1057
|
+
]
|
1058
|
+
)
|
1059
|
+
end
|
1060
|
+
end
|
1061
|
+
end
|
1062
|
+
|
1063
|
+
# TODO: Add when empty
|
1064
|
+
context "given a custom object" do
|
1065
|
+
context "containing only primitive values" do
|
1066
|
+
context "given as_lines: false" do
|
1067
|
+
it "returns an inspected version of the object" do
|
1068
|
+
string =
|
1069
|
+
described_class.inspect_object(
|
1070
|
+
SuperDiff::Test::Person.new(name: "Doc", age: 58),
|
1071
|
+
as_lines: false
|
1072
|
+
)
|
1073
|
+
expect(string).to eq(
|
1074
|
+
%(#<SuperDiff::Test::Person name: "Doc", age: 58>)
|
1075
|
+
)
|
1076
|
+
end
|
1077
|
+
end
|
1078
|
+
|
1079
|
+
context "given as_lines: true" do
|
1080
|
+
it "returns an inspected version of the object as multiple Lines" do
|
1081
|
+
tiered_lines =
|
1082
|
+
described_class.inspect_object(
|
1083
|
+
SuperDiff::Test::Person.new(name: "Doc", age: 58),
|
1084
|
+
as_lines: true,
|
703
1085
|
type: :delete,
|
704
|
-
indentation_level:
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
1086
|
+
indentation_level: 1
|
1087
|
+
)
|
1088
|
+
expect(tiered_lines).to match(
|
1089
|
+
[
|
1090
|
+
an_object_having_attributes(
|
1091
|
+
type: :delete,
|
1092
|
+
indentation_level: 1,
|
1093
|
+
value: "#<SuperDiff::Test::Person {"
|
1094
|
+
),
|
1095
|
+
an_object_having_attributes(
|
1096
|
+
type: :delete,
|
1097
|
+
indentation_level: 2,
|
1098
|
+
prefix: "name: ",
|
1099
|
+
value: %("Doc"),
|
1100
|
+
add_comma: true
|
1101
|
+
),
|
1102
|
+
an_object_having_attributes(
|
1103
|
+
type: :delete,
|
1104
|
+
indentation_level: 2,
|
1105
|
+
prefix: "age: ",
|
1106
|
+
value: "58",
|
1107
|
+
add_comma: false
|
1108
|
+
),
|
1109
|
+
an_object_having_attributes(
|
1110
|
+
type: :delete,
|
1111
|
+
indentation_level: 1,
|
1112
|
+
value: "}>"
|
1113
|
+
)
|
1114
|
+
]
|
1115
|
+
)
|
1116
|
+
end
|
1117
|
+
end
|
1118
|
+
end
|
1119
|
+
|
1120
|
+
context "containing other custom objects" do
|
1121
|
+
context "given as_lines: false" do
|
1122
|
+
it "returns an inspected version of the object" do
|
1123
|
+
string =
|
1124
|
+
described_class.inspect_object(
|
1125
|
+
SuperDiff::Test::Customer.new(
|
1126
|
+
name: "Marty McFly",
|
1127
|
+
shipping_address:
|
1128
|
+
SuperDiff::Test::ShippingAddress.new(
|
1129
|
+
line_1: "123 Main St.",
|
1130
|
+
line_2: "",
|
1131
|
+
city: "Hill Valley",
|
1132
|
+
state: "CA",
|
1133
|
+
zip: "90382"
|
1134
|
+
),
|
1135
|
+
phone: "111-222-3333"
|
1136
|
+
),
|
1137
|
+
as_lines: false
|
1138
|
+
)
|
1139
|
+
expect(string).to eq(
|
1140
|
+
# rubocop:disable Metrics/LineLength
|
1141
|
+
%(#<SuperDiff::Test::Customer name: "Marty McFly", shipping_address: #<SuperDiff::Test::ShippingAddress line_1: "123 Main St.", line_2: "", city: "Hill Valley", state: "CA", zip: "90382">, phone: "111-222-3333">)
|
1142
|
+
# rubocop:enable Metrics/LineLength
|
1143
|
+
)
|
1144
|
+
end
|
1145
|
+
end
|
1146
|
+
|
1147
|
+
context "given as_lines: true" do
|
1148
|
+
it "returns an inspected version of the object as multiple Lines" do
|
1149
|
+
tiered_lines =
|
1150
|
+
described_class.inspect_object(
|
1151
|
+
SuperDiff::Test::Customer.new(
|
1152
|
+
name: "Marty McFly",
|
1153
|
+
shipping_address:
|
1154
|
+
SuperDiff::Test::ShippingAddress.new(
|
1155
|
+
line_1: "123 Main St.",
|
1156
|
+
line_2: "",
|
1157
|
+
city: "Hill Valley",
|
1158
|
+
state: "CA",
|
1159
|
+
zip: "90382"
|
1160
|
+
),
|
1161
|
+
phone: "111-222-3333"
|
1162
|
+
),
|
1163
|
+
as_lines: true,
|
711
1164
|
type: :delete,
|
712
|
-
indentation_level:
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
1165
|
+
indentation_level: 1
|
1166
|
+
)
|
1167
|
+
expect(tiered_lines).to match(
|
1168
|
+
[
|
1169
|
+
an_object_having_attributes(
|
1170
|
+
type: :delete,
|
1171
|
+
indentation_level: 1,
|
1172
|
+
value: "#<SuperDiff::Test::Customer {",
|
1173
|
+
collection_bookend: :open
|
1174
|
+
),
|
1175
|
+
an_object_having_attributes(
|
1176
|
+
type: :delete,
|
1177
|
+
indentation_level: 2,
|
1178
|
+
prefix: "name: ",
|
1179
|
+
value: %("Marty McFly"),
|
1180
|
+
add_comma: true
|
1181
|
+
),
|
1182
|
+
an_object_having_attributes(
|
1183
|
+
type: :delete,
|
1184
|
+
indentation_level: 2,
|
1185
|
+
prefix: "shipping_address: ",
|
1186
|
+
value: "#<SuperDiff::Test::ShippingAddress {",
|
1187
|
+
add_comma: false,
|
1188
|
+
collection_bookend: :open
|
1189
|
+
),
|
1190
|
+
an_object_having_attributes(
|
1191
|
+
type: :delete,
|
1192
|
+
indentation_level: 3,
|
1193
|
+
prefix: "line_1: ",
|
1194
|
+
value: %("123 Main St.")
|
1195
|
+
),
|
1196
|
+
an_object_having_attributes(
|
1197
|
+
type: :delete,
|
1198
|
+
indentation_level: 3,
|
1199
|
+
prefix: "line_2: ",
|
1200
|
+
value: %(""),
|
1201
|
+
add_comma: true
|
1202
|
+
),
|
1203
|
+
an_object_having_attributes(
|
1204
|
+
type: :delete,
|
1205
|
+
indentation_level: 3,
|
1206
|
+
prefix: "city: ",
|
1207
|
+
value: %("Hill Valley"),
|
1208
|
+
add_comma: true
|
1209
|
+
),
|
1210
|
+
an_object_having_attributes(
|
1211
|
+
type: :delete,
|
1212
|
+
indentation_level: 3,
|
1213
|
+
prefix: "state: ",
|
1214
|
+
value: %("CA"),
|
1215
|
+
add_comma: true
|
1216
|
+
),
|
1217
|
+
an_object_having_attributes(
|
1218
|
+
type: :delete,
|
1219
|
+
indentation_level: 3,
|
1220
|
+
prefix: "zip: ",
|
1221
|
+
value: %("90382"),
|
1222
|
+
add_comma: false
|
1223
|
+
),
|
1224
|
+
an_object_having_attributes(
|
1225
|
+
type: :delete,
|
1226
|
+
indentation_level: 2,
|
1227
|
+
value: "}>",
|
1228
|
+
add_comma: true,
|
1229
|
+
collection_bookend: :close
|
1230
|
+
),
|
1231
|
+
an_object_having_attributes(
|
1232
|
+
type: :delete,
|
1233
|
+
indentation_level: 2,
|
1234
|
+
prefix: "phone: ",
|
1235
|
+
value: %("111-222-3333"),
|
1236
|
+
add_comma: false
|
1237
|
+
),
|
1238
|
+
an_object_having_attributes(
|
1239
|
+
type: :delete,
|
1240
|
+
indentation_level: 1,
|
1241
|
+
value: "}>",
|
1242
|
+
add_comma: false,
|
1243
|
+
collection_bookend: :close
|
1244
|
+
)
|
1245
|
+
]
|
1246
|
+
)
|
1247
|
+
end
|
1248
|
+
end
|
1249
|
+
end
|
1250
|
+
end
|
1251
|
+
|
1252
|
+
context "given a non-custom object" do
|
1253
|
+
context "containing only primitive values" do
|
1254
|
+
context "given as_lines: false" do
|
1255
|
+
it "returns an inspected version of the object" do
|
1256
|
+
string =
|
1257
|
+
described_class.inspect_object(
|
1258
|
+
SuperDiff::Test::Item.new(name: "mac and cheese", quantity: 2),
|
1259
|
+
as_lines: false
|
1260
|
+
)
|
1261
|
+
expect(string).to match(
|
1262
|
+
/\A#<SuperDiff::Test::Item:0x[a-z0-9]+ @name="mac and cheese", @quantity=2>\Z/
|
1263
|
+
)
|
1264
|
+
end
|
1265
|
+
end
|
1266
|
+
|
1267
|
+
context "given as_lines: true" do
|
1268
|
+
it "returns an inspected version of the object as multiple Lines" do
|
1269
|
+
tiered_lines =
|
1270
|
+
described_class.inspect_object(
|
1271
|
+
SuperDiff::Test::Item.new(name: "mac and cheese", quantity: 2),
|
1272
|
+
as_lines: true,
|
717
1273
|
type: :delete,
|
718
|
-
indentation_level: 1
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
1274
|
+
indentation_level: 1
|
1275
|
+
)
|
1276
|
+
expect(tiered_lines).to match(
|
1277
|
+
[
|
1278
|
+
an_object_having_attributes(
|
1279
|
+
type: :delete,
|
1280
|
+
indentation_level: 1,
|
1281
|
+
value:
|
1282
|
+
a_string_matching(/#<SuperDiff::Test::Item:0x[a-f0-9]+ \{/),
|
1283
|
+
collection_bookend: :open
|
1284
|
+
),
|
1285
|
+
an_object_having_attributes(
|
1286
|
+
type: :delete,
|
1287
|
+
indentation_level: 2,
|
1288
|
+
prefix: "@name=",
|
1289
|
+
value: %("mac and cheese"),
|
1290
|
+
add_comma: true
|
1291
|
+
),
|
1292
|
+
an_object_having_attributes(
|
1293
|
+
type: :delete,
|
1294
|
+
indentation_level: 2,
|
1295
|
+
prefix: "@quantity=",
|
1296
|
+
value: "2",
|
1297
|
+
add_comma: false
|
1298
|
+
),
|
1299
|
+
an_object_having_attributes(
|
1300
|
+
type: :delete,
|
1301
|
+
indentation_level: 1,
|
1302
|
+
value: "}>",
|
1303
|
+
collection_bookend: :close
|
1304
|
+
)
|
1305
|
+
]
|
1306
|
+
)
|
1307
|
+
end
|
1308
|
+
end
|
1309
|
+
end
|
1310
|
+
|
1311
|
+
context "containing other custom objects" do
|
1312
|
+
context "given as_lines: false" do
|
1313
|
+
it "returns an inspected version of the object" do
|
1314
|
+
string =
|
1315
|
+
described_class.inspect_object(
|
1316
|
+
SuperDiff::Test::Order.new(
|
1317
|
+
[
|
1318
|
+
SuperDiff::Test::Item.new(name: "ham", quantity: 1),
|
1319
|
+
SuperDiff::Test::Item.new(name: "eggs", quantity: 2),
|
1320
|
+
SuperDiff::Test::Item.new(name: "cheese", quantity: 1)
|
1321
|
+
]
|
1322
|
+
),
|
1323
|
+
as_lines: false
|
1324
|
+
)
|
1325
|
+
expect(string).to match(
|
1326
|
+
# rubocop:disable Metrics/LineLength
|
1327
|
+
/\A#<SuperDiff::Test::Order:0x[a-z0-9]+ @items=\[#<SuperDiff::Test::Item:0x[a-z0-9]+ @name="ham", @quantity=1>, #<SuperDiff::Test::Item:0x[a-z0-9]+ @name="eggs", @quantity=2>, #<SuperDiff::Test::Item:0x[a-z0-9]+ @name="cheese", @quantity=1>\]>\Z/
|
1328
|
+
# rubocop:enable Metrics/LineLength
|
1329
|
+
)
|
1330
|
+
end
|
1331
|
+
end
|
1332
|
+
|
1333
|
+
context "given as_lines: true" do
|
1334
|
+
it "returns an inspected version of the object as multiple Lines" do
|
1335
|
+
tiered_lines =
|
1336
|
+
described_class.inspect_object(
|
1337
|
+
SuperDiff::Test::Order.new(
|
1338
|
+
[
|
1339
|
+
SuperDiff::Test::Item.new(name: "ham", quantity: 1),
|
1340
|
+
SuperDiff::Test::Item.new(name: "eggs", quantity: 2),
|
1341
|
+
SuperDiff::Test::Item.new(name: "cheese", quantity: 1)
|
1342
|
+
]
|
1343
|
+
),
|
1344
|
+
as_lines: true,
|
1345
|
+
type: :delete,
|
1346
|
+
indentation_level: 1
|
1347
|
+
)
|
1348
|
+
expect(tiered_lines).to match(
|
1349
|
+
[
|
1350
|
+
an_object_having_attributes(
|
1351
|
+
type: :delete,
|
1352
|
+
indentation_level: 1,
|
1353
|
+
value:
|
1354
|
+
a_string_matching(
|
1355
|
+
/#<SuperDiff::Test::Order:0x[a-f0-9]+ \{/
|
1356
|
+
),
|
1357
|
+
collection_bookend: :open
|
1358
|
+
),
|
1359
|
+
an_object_having_attributes(
|
1360
|
+
type: :delete,
|
1361
|
+
indentation_level: 2,
|
1362
|
+
prefix: "@items=",
|
1363
|
+
value: "[",
|
1364
|
+
add_comma: false,
|
1365
|
+
collection_bookend: :open
|
1366
|
+
),
|
1367
|
+
an_object_having_attributes(
|
1368
|
+
type: :delete,
|
1369
|
+
indentation_level: 3,
|
1370
|
+
value:
|
1371
|
+
a_string_matching(/#<SuperDiff::Test::Item:0x[a-f0-9]+ \{/),
|
1372
|
+
add_comma: false,
|
1373
|
+
collection_bookend: :open
|
1374
|
+
),
|
1375
|
+
an_object_having_attributes(
|
1376
|
+
type: :delete,
|
1377
|
+
indentation_level: 4,
|
1378
|
+
prefix: "@name=",
|
1379
|
+
value: %("ham"),
|
1380
|
+
add_comma: true
|
1381
|
+
),
|
1382
|
+
an_object_having_attributes(
|
1383
|
+
type: :delete,
|
1384
|
+
indentation_level: 4,
|
1385
|
+
prefix: "@quantity=",
|
1386
|
+
value: "1",
|
1387
|
+
add_comma: false
|
1388
|
+
),
|
1389
|
+
an_object_having_attributes(
|
1390
|
+
type: :delete,
|
1391
|
+
indentation_level: 3,
|
1392
|
+
value: "}>",
|
1393
|
+
add_comma: true,
|
1394
|
+
collection_bookend: :close
|
1395
|
+
),
|
1396
|
+
an_object_having_attributes(
|
1397
|
+
type: :delete,
|
1398
|
+
indentation_level: 3,
|
1399
|
+
value:
|
1400
|
+
a_string_matching(/#<SuperDiff::Test::Item:0x[a-f0-9]+ \{/),
|
1401
|
+
add_comma: false,
|
1402
|
+
collection_bookend: :open
|
1403
|
+
),
|
1404
|
+
an_object_having_attributes(
|
1405
|
+
type: :delete,
|
1406
|
+
indentation_level: 4,
|
1407
|
+
prefix: "@name=",
|
1408
|
+
value: %("eggs"),
|
1409
|
+
add_comma: true
|
1410
|
+
),
|
1411
|
+
an_object_having_attributes(
|
1412
|
+
type: :delete,
|
1413
|
+
indentation_level: 4,
|
1414
|
+
prefix: "@quantity=",
|
1415
|
+
value: "2",
|
1416
|
+
add_comma: false
|
1417
|
+
),
|
1418
|
+
an_object_having_attributes(
|
1419
|
+
type: :delete,
|
1420
|
+
indentation_level: 3,
|
1421
|
+
value: "}>",
|
1422
|
+
add_comma: true,
|
1423
|
+
collection_bookend: :close
|
1424
|
+
),
|
1425
|
+
an_object_having_attributes(
|
1426
|
+
type: :delete,
|
1427
|
+
indentation_level: 3,
|
1428
|
+
value:
|
1429
|
+
a_string_matching(/#<SuperDiff::Test::Item:0x[a-f0-9]+ \{/),
|
1430
|
+
add_comma: false,
|
1431
|
+
collection_bookend: :open
|
1432
|
+
),
|
1433
|
+
an_object_having_attributes(
|
1434
|
+
type: :delete,
|
1435
|
+
indentation_level: 4,
|
1436
|
+
prefix: "@name=",
|
1437
|
+
value: %("cheese"),
|
1438
|
+
add_comma: true
|
1439
|
+
),
|
1440
|
+
an_object_having_attributes(
|
1441
|
+
type: :delete,
|
1442
|
+
indentation_level: 4,
|
1443
|
+
prefix: "@quantity=",
|
1444
|
+
value: "1",
|
1445
|
+
add_comma: false
|
1446
|
+
),
|
1447
|
+
an_object_having_attributes(
|
1448
|
+
type: :delete,
|
1449
|
+
indentation_level: 3,
|
1450
|
+
value: "}>",
|
1451
|
+
add_comma: false,
|
1452
|
+
collection_bookend: :close
|
1453
|
+
),
|
1454
|
+
an_object_having_attributes(
|
1455
|
+
type: :delete,
|
1456
|
+
indentation_level: 2,
|
1457
|
+
value: "]",
|
1458
|
+
add_comma: false,
|
1459
|
+
collection_bookend: :close
|
1460
|
+
),
|
1461
|
+
an_object_having_attributes(
|
1462
|
+
type: :delete,
|
1463
|
+
indentation_level: 1,
|
1464
|
+
value: "}>",
|
1465
|
+
add_comma: false,
|
1466
|
+
collection_bookend: :close
|
1467
|
+
)
|
1468
|
+
]
|
1469
|
+
)
|
723
1470
|
end
|
724
1471
|
end
|
725
1472
|
end
|
@@ -727,1166 +1474,509 @@ RSpec.describe SuperDiff, type: :unit do
|
|
727
1474
|
context "which is empty" do
|
728
1475
|
context "given as_lines: false" do
|
729
1476
|
it "returns an inspected version of the array" do
|
730
|
-
string =
|
731
|
-
|
1477
|
+
string =
|
1478
|
+
described_class.inspect_object(
|
1479
|
+
SuperDiff::Test::EmptyClass.new,
|
1480
|
+
as_lines: false
|
1481
|
+
)
|
1482
|
+
expect(string).to match(
|
1483
|
+
/#<SuperDiff::Test::EmptyClass:0x[a-z0-9]+>/
|
1484
|
+
)
|
732
1485
|
end
|
733
1486
|
end
|
734
1487
|
|
735
1488
|
context "given as_lines: true" do
|
736
1489
|
it "returns an inspected version of the array" do
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
indentation_level: 1,
|
742
|
-
)
|
743
|
-
expect(tiered_lines).to match([
|
744
|
-
an_object_having_attributes(
|
1490
|
+
inspection =
|
1491
|
+
described_class.inspect_object(
|
1492
|
+
SuperDiff::Test::EmptyClass.new,
|
1493
|
+
as_lines: true,
|
745
1494
|
type: :delete,
|
746
|
-
indentation_level: 1
|
747
|
-
|
748
|
-
|
749
|
-
|
1495
|
+
indentation_level: 1
|
1496
|
+
)
|
1497
|
+
expect(inspection).to match(
|
1498
|
+
[
|
1499
|
+
an_object_having_attributes(
|
1500
|
+
type: :delete,
|
1501
|
+
indentation_level: 1,
|
1502
|
+
value:
|
1503
|
+
a_string_matching(
|
1504
|
+
/#<SuperDiff::Test::EmptyClass:0x[a-z0-9]+>/
|
1505
|
+
)
|
1506
|
+
)
|
1507
|
+
]
|
1508
|
+
)
|
750
1509
|
end
|
751
1510
|
end
|
752
1511
|
end
|
753
1512
|
end
|
754
1513
|
|
755
|
-
context "given a
|
756
|
-
context "
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
1514
|
+
context "given a combination of all kinds of values" do
|
1515
|
+
context "given as_lines: false" do
|
1516
|
+
it "returns an inspected version of the object" do
|
1517
|
+
string =
|
1518
|
+
described_class.inspect_object(
|
1519
|
+
{
|
1520
|
+
state: :down,
|
1521
|
+
errors: [
|
1522
|
+
"Container A-234 is partially damaged",
|
1523
|
+
"Vessel B042 was attacked by raccoons",
|
1524
|
+
"Product FDK-3429 is out of stock"
|
1525
|
+
],
|
1526
|
+
mission_critical: true,
|
1527
|
+
serviceable: false,
|
1528
|
+
outstanding_orders: [
|
1529
|
+
SuperDiff::Test::Order.new(
|
1530
|
+
[
|
1531
|
+
SuperDiff::Test::Item.new(name: "ham", quantity: 1),
|
1532
|
+
SuperDiff::Test::Item.new(name: "eggs", quantity: 2),
|
1533
|
+
SuperDiff::Test::Item.new(name: "cheese", quantity: 1)
|
1534
|
+
]
|
1535
|
+
)
|
1536
|
+
],
|
1537
|
+
customers: [
|
1538
|
+
SuperDiff::Test::Customer.new(
|
1539
|
+
name: "Marty McFly",
|
1540
|
+
shipping_address:
|
1541
|
+
SuperDiff::Test::ShippingAddress.new(
|
1542
|
+
line_1: "123 Baltic Ave.",
|
1543
|
+
line_2: "",
|
1544
|
+
city: "Hill Valley",
|
1545
|
+
state: "CA",
|
1546
|
+
zip: "90382"
|
1547
|
+
),
|
1548
|
+
phone: "111-111-1111"
|
1549
|
+
),
|
1550
|
+
SuperDiff::Test::Customer.new(
|
1551
|
+
name: "Doc Brown",
|
1552
|
+
shipping_address:
|
1553
|
+
SuperDiff::Test::ShippingAddress.new(
|
1554
|
+
line_1: "456 Park Place",
|
1555
|
+
line_2: "",
|
1556
|
+
city: "Beverly Hills",
|
1557
|
+
state: "CA",
|
1558
|
+
zip: "90210"
|
1559
|
+
),
|
1560
|
+
phone: "222-222-2222"
|
1561
|
+
)
|
1562
|
+
]
|
1563
|
+
},
|
761
1564
|
as_lines: false
|
762
1565
|
)
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
1566
|
+
expect(string).to match(
|
1567
|
+
# rubocop:disable Metrics/LineLength
|
1568
|
+
/\A\{ state: :down, errors: \["Container A-234 is partially damaged", "Vessel B042 was attacked by raccoons", "Product FDK-3429 is out of stock"\], mission_critical: true, serviceable: false, outstanding_orders: \[#<SuperDiff::Test::Order:0x[a-z0-9]+ @items=\[#<SuperDiff::Test::Item:0x[a-z0-9]+ @name="ham", @quantity=1>, #<SuperDiff::Test::Item:0x[a-z0-9]+ @name="eggs", @quantity=2>, #<SuperDiff::Test::Item:0x[a-z0-9]+ @name="cheese", @quantity=1>\]>\], customers: \[#<SuperDiff::Test::Customer name: "Marty McFly", shipping_address: #<SuperDiff::Test::ShippingAddress line_1: "123 Baltic Ave.", line_2: "", city: "Hill Valley", state: "CA", zip: "90382">, phone: "111-111-1111">, #<SuperDiff::Test::Customer name: "Doc Brown", shipping_address: #<SuperDiff::Test::ShippingAddress line_1: "456 Park Place", line_2: "", city: "Beverly Hills", state: "CA", zip: "90210">, phone: "222-222-2222">\] \}\Z/
|
1569
|
+
# rubocop:enable Metrics/LineLength
|
1570
|
+
)
|
767
1571
|
end
|
1572
|
+
end
|
768
1573
|
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
1574
|
+
context "given as_lines: true" do
|
1575
|
+
it "returns an inspected version of the object as multiple Lines" do
|
1576
|
+
tiered_lines =
|
1577
|
+
described_class.inspect_object(
|
1578
|
+
{
|
1579
|
+
state: :down,
|
1580
|
+
errors: [
|
1581
|
+
"Container A-234 is partially damaged",
|
1582
|
+
"Vessel B042 was attacked by raccoons",
|
1583
|
+
"Product FDK-3429 is out of stock"
|
1584
|
+
],
|
1585
|
+
mission_critical: true,
|
1586
|
+
serviceable: false,
|
1587
|
+
outstanding_orders: [
|
1588
|
+
SuperDiff::Test::Order.new(
|
1589
|
+
[
|
1590
|
+
SuperDiff::Test::Item.new(name: "ham", quantity: 1),
|
1591
|
+
SuperDiff::Test::Item.new(name: "eggs", quantity: 2),
|
1592
|
+
SuperDiff::Test::Item.new(name: "cheese", quantity: 1)
|
1593
|
+
]
|
1594
|
+
)
|
1595
|
+
],
|
1596
|
+
customers: [
|
1597
|
+
SuperDiff::Test::Customer.new(
|
1598
|
+
name: "Marty McFly",
|
1599
|
+
shipping_address:
|
1600
|
+
SuperDiff::Test::ShippingAddress.new(
|
1601
|
+
line_1: "123 Baltic Ave.",
|
1602
|
+
line_2: "",
|
1603
|
+
city: "Hill Valley",
|
1604
|
+
state: "CA",
|
1605
|
+
zip: "90382"
|
1606
|
+
),
|
1607
|
+
phone: "111-111-1111"
|
1608
|
+
),
|
1609
|
+
SuperDiff::Test::Customer.new(
|
1610
|
+
name: "Doc Brown",
|
1611
|
+
shipping_address:
|
1612
|
+
SuperDiff::Test::ShippingAddress.new(
|
1613
|
+
line_1: "456 Park Place",
|
1614
|
+
line_2: "",
|
1615
|
+
city: "Beverly Hills",
|
1616
|
+
state: "CA",
|
1617
|
+
zip: "90210"
|
1618
|
+
),
|
1619
|
+
phone: "222-222-2222"
|
1620
|
+
)
|
1621
|
+
]
|
1622
|
+
},
|
773
1623
|
as_lines: true,
|
774
1624
|
type: :delete,
|
775
1625
|
indentation_level: 1
|
776
1626
|
)
|
777
|
-
|
1627
|
+
expect(tiered_lines).to match(
|
1628
|
+
[
|
778
1629
|
an_object_having_attributes(
|
779
1630
|
type: :delete,
|
780
1631
|
indentation_level: 1,
|
781
|
-
value:
|
782
|
-
|
783
|
-
collection_bookend: :open,
|
784
|
-
),
|
785
|
-
an_object_having_attributes(
|
786
|
-
type: :delete,
|
787
|
-
indentation_level: 2,
|
788
|
-
value: %(year: 2021),
|
789
|
-
add_comma: true,
|
790
|
-
collection_bookend: nil,
|
791
|
-
),
|
792
|
-
an_object_having_attributes(
|
793
|
-
type: :delete,
|
794
|
-
indentation_level: 2,
|
795
|
-
value: %(month: 5),
|
796
|
-
add_comma: true,
|
797
|
-
collection_bookend: nil,
|
798
|
-
),
|
799
|
-
an_object_having_attributes(
|
800
|
-
type: :delete,
|
801
|
-
indentation_level: 2,
|
802
|
-
value: %(day: 5),
|
803
|
-
add_comma: true,
|
804
|
-
collection_bookend: nil,
|
805
|
-
),
|
806
|
-
an_object_having_attributes(
|
807
|
-
type: :delete,
|
808
|
-
indentation_level: 2,
|
809
|
-
value: %(hour: 10),
|
810
|
-
add_comma: true,
|
811
|
-
collection_bookend: nil,
|
812
|
-
),
|
813
|
-
an_object_having_attributes(
|
814
|
-
type: :delete,
|
815
|
-
indentation_level: 2,
|
816
|
-
value: %(min: 23),
|
817
|
-
add_comma: true,
|
818
|
-
collection_bookend: nil,
|
819
|
-
),
|
820
|
-
an_object_having_attributes(
|
821
|
-
type: :delete,
|
822
|
-
indentation_level: 2,
|
823
|
-
value: %(sec: 28),
|
824
|
-
add_comma: true,
|
825
|
-
collection_bookend: nil,
|
826
|
-
),
|
827
|
-
an_object_having_attributes(
|
828
|
-
type: :delete,
|
829
|
-
indentation_level: 2,
|
830
|
-
value: %(subsec: (34749996836695/281474976710656)),
|
831
|
-
add_comma: true,
|
832
|
-
collection_bookend: nil,
|
1632
|
+
value: "{",
|
1633
|
+
collection_bookend: :open
|
833
1634
|
),
|
834
1635
|
an_object_having_attributes(
|
835
1636
|
type: :delete,
|
836
1637
|
indentation_level: 2,
|
837
|
-
|
838
|
-
|
839
|
-
|
1638
|
+
prefix: "state: ",
|
1639
|
+
value: ":down",
|
1640
|
+
add_comma: true
|
840
1641
|
),
|
841
1642
|
an_object_having_attributes(
|
842
1643
|
type: :delete,
|
843
1644
|
indentation_level: 2,
|
844
|
-
|
845
|
-
|
846
|
-
collection_bookend:
|
847
|
-
),
|
848
|
-
an_object_having_attributes(
|
849
|
-
type: :delete,
|
850
|
-
indentation_level: 1,
|
851
|
-
value: %(}>),
|
852
|
-
add_comma: false,
|
853
|
-
collection_bookend: :close,
|
1645
|
+
prefix: "errors: ",
|
1646
|
+
value: "[",
|
1647
|
+
collection_bookend: :open
|
854
1648
|
),
|
855
|
-
])
|
856
|
-
end
|
857
|
-
end
|
858
|
-
end
|
859
|
-
|
860
|
-
context "that has an associated time zone" do
|
861
|
-
around do |example|
|
862
|
-
ClimateControl.modify(TZ: 'America/Chicago', &example)
|
863
|
-
end
|
864
|
-
|
865
|
-
context "given as_lines: false" do
|
866
|
-
it "returns a representation of the time on a single line" do
|
867
|
-
inspection = described_class.inspect_object(
|
868
|
-
Time.new(2021, 5, 5, 10, 23, 28.1234567891),
|
869
|
-
as_lines: false
|
870
|
-
)
|
871
|
-
expect(inspection).to eq(
|
872
|
-
"#<Time 2021-05-05 10:23:28+(34749996836695/281474976710656) -05:00 (CDT)>"
|
873
|
-
)
|
874
|
-
end
|
875
|
-
end
|
876
|
-
|
877
|
-
context "given as_lines: true" do
|
878
|
-
it "returns a representation of the time across multiple lines" do
|
879
|
-
inspection = described_class.inspect_object(
|
880
|
-
Time.new(2021, 5, 5, 10, 23, 28.1234567891),
|
881
|
-
as_lines: true,
|
882
|
-
type: :delete,
|
883
|
-
indentation_level: 1
|
884
|
-
)
|
885
|
-
expect(inspection).to match([
|
886
1649
|
an_object_having_attributes(
|
887
1650
|
type: :delete,
|
888
|
-
indentation_level:
|
889
|
-
value: %(
|
890
|
-
add_comma:
|
891
|
-
collection_bookend: :open,
|
1651
|
+
indentation_level: 3,
|
1652
|
+
value: %("Container A-234 is partially damaged"),
|
1653
|
+
add_comma: true
|
892
1654
|
),
|
893
1655
|
an_object_having_attributes(
|
894
1656
|
type: :delete,
|
895
|
-
indentation_level:
|
896
|
-
value: %(
|
897
|
-
add_comma: true
|
898
|
-
collection_bookend: nil,
|
1657
|
+
indentation_level: 3,
|
1658
|
+
value: %("Vessel B042 was attacked by raccoons"),
|
1659
|
+
add_comma: true
|
899
1660
|
),
|
900
1661
|
an_object_having_attributes(
|
901
1662
|
type: :delete,
|
902
|
-
indentation_level:
|
903
|
-
value: %(
|
904
|
-
add_comma:
|
905
|
-
collection_bookend: nil,
|
1663
|
+
indentation_level: 3,
|
1664
|
+
value: %("Product FDK-3429 is out of stock"),
|
1665
|
+
add_comma: false
|
906
1666
|
),
|
907
1667
|
an_object_having_attributes(
|
908
1668
|
type: :delete,
|
909
1669
|
indentation_level: 2,
|
910
|
-
value:
|
911
|
-
|
912
|
-
collection_bookend: nil,
|
1670
|
+
value: "]",
|
1671
|
+
collection_bookend: :close
|
913
1672
|
),
|
914
1673
|
an_object_having_attributes(
|
915
1674
|
type: :delete,
|
916
1675
|
indentation_level: 2,
|
917
|
-
|
918
|
-
|
919
|
-
|
1676
|
+
prefix: "mission_critical: ",
|
1677
|
+
value: "true",
|
1678
|
+
add_comma: true
|
920
1679
|
),
|
921
1680
|
an_object_having_attributes(
|
922
1681
|
type: :delete,
|
923
1682
|
indentation_level: 2,
|
924
|
-
|
925
|
-
|
926
|
-
|
1683
|
+
prefix: "serviceable: ",
|
1684
|
+
value: "false",
|
1685
|
+
add_comma: true
|
927
1686
|
),
|
928
1687
|
an_object_having_attributes(
|
929
1688
|
type: :delete,
|
930
1689
|
indentation_level: 2,
|
931
|
-
|
932
|
-
|
933
|
-
collection_bookend:
|
1690
|
+
prefix: "outstanding_orders: ",
|
1691
|
+
value: "[",
|
1692
|
+
collection_bookend: :open
|
934
1693
|
),
|
935
1694
|
an_object_having_attributes(
|
936
1695
|
type: :delete,
|
937
|
-
indentation_level:
|
938
|
-
value:
|
939
|
-
|
940
|
-
collection_bookend:
|
1696
|
+
indentation_level: 3,
|
1697
|
+
value:
|
1698
|
+
a_string_matching(/#<SuperDiff::Test::Order:0x[a-f0-9]+ \{/),
|
1699
|
+
collection_bookend: :open
|
941
1700
|
),
|
942
1701
|
an_object_having_attributes(
|
943
1702
|
type: :delete,
|
944
|
-
indentation_level:
|
945
|
-
|
946
|
-
|
947
|
-
collection_bookend:
|
1703
|
+
indentation_level: 4,
|
1704
|
+
prefix: "@items=",
|
1705
|
+
value: "[",
|
1706
|
+
collection_bookend: :open
|
948
1707
|
),
|
949
1708
|
an_object_having_attributes(
|
950
1709
|
type: :delete,
|
951
|
-
indentation_level:
|
952
|
-
value:
|
953
|
-
|
954
|
-
collection_bookend:
|
1710
|
+
indentation_level: 5,
|
1711
|
+
value:
|
1712
|
+
a_string_matching(/#<SuperDiff::Test::Item:0x[a-f0-9]+ \{/),
|
1713
|
+
collection_bookend: :open
|
955
1714
|
),
|
956
1715
|
an_object_having_attributes(
|
957
1716
|
type: :delete,
|
958
|
-
indentation_level:
|
959
|
-
|
960
|
-
|
961
|
-
|
1717
|
+
indentation_level: 6,
|
1718
|
+
prefix: "@name=",
|
1719
|
+
value: %("ham"),
|
1720
|
+
add_comma: true
|
962
1721
|
),
|
963
|
-
])
|
964
|
-
end
|
965
|
-
end
|
966
|
-
end
|
967
|
-
end
|
968
|
-
|
969
|
-
context "given a class" do
|
970
|
-
context "given as_lines: false" do
|
971
|
-
it "returns an inspected version of the object" do
|
972
|
-
string = described_class.inspect_object(
|
973
|
-
SuperDiff::Test::Person,
|
974
|
-
as_lines: false,
|
975
|
-
)
|
976
|
-
expect(string).to eq("SuperDiff::Test::Person")
|
977
|
-
end
|
978
|
-
end
|
979
|
-
|
980
|
-
context "given as_lines: true" do
|
981
|
-
it "returns an inspected version of the object" do
|
982
|
-
tiered_lines = described_class.inspect_object(
|
983
|
-
SuperDiff::Test::Person,
|
984
|
-
as_lines: true,
|
985
|
-
type: :delete,
|
986
|
-
indentation_level: 1,
|
987
|
-
)
|
988
|
-
expect(tiered_lines).to match([
|
989
|
-
an_object_having_attributes(
|
990
|
-
type: :delete,
|
991
|
-
indentation_level: 1,
|
992
|
-
value: %(SuperDiff::Test::Person),
|
993
|
-
),
|
994
|
-
])
|
995
|
-
end
|
996
|
-
end
|
997
|
-
end
|
998
|
-
|
999
|
-
# TODO: Add when empty
|
1000
|
-
context "given a custom object" do
|
1001
|
-
context "containing only primitive values" do
|
1002
|
-
context "given as_lines: false" do
|
1003
|
-
it "returns an inspected version of the object" do
|
1004
|
-
string = described_class.inspect_object(
|
1005
|
-
SuperDiff::Test::Person.new(name: "Doc", age: 58),
|
1006
|
-
as_lines: false,
|
1007
|
-
)
|
1008
|
-
expect(string).to eq(
|
1009
|
-
%(#<SuperDiff::Test::Person name: "Doc", age: 58>),
|
1010
|
-
)
|
1011
|
-
end
|
1012
|
-
end
|
1013
|
-
|
1014
|
-
context "given as_lines: true" do
|
1015
|
-
it "returns an inspected version of the object as multiple Lines" do
|
1016
|
-
tiered_lines = described_class.inspect_object(
|
1017
|
-
SuperDiff::Test::Person.new(name: "Doc", age: 58),
|
1018
|
-
as_lines: true,
|
1019
|
-
type: :delete,
|
1020
|
-
indentation_level: 1,
|
1021
|
-
)
|
1022
|
-
expect(tiered_lines).to match([
|
1023
1722
|
an_object_having_attributes(
|
1024
1723
|
type: :delete,
|
1025
|
-
indentation_level:
|
1026
|
-
|
1724
|
+
indentation_level: 6,
|
1725
|
+
prefix: "@quantity=",
|
1726
|
+
value: "1",
|
1727
|
+
add_comma: false
|
1027
1728
|
),
|
1028
1729
|
an_object_having_attributes(
|
1029
1730
|
type: :delete,
|
1030
|
-
indentation_level:
|
1031
|
-
|
1032
|
-
|
1033
|
-
add_comma: true,
|
1731
|
+
indentation_level: 5,
|
1732
|
+
value: "}>",
|
1733
|
+
collection_bookend: :close
|
1034
1734
|
),
|
1035
1735
|
an_object_having_attributes(
|
1036
1736
|
type: :delete,
|
1037
|
-
indentation_level:
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1737
|
+
indentation_level: 5,
|
1738
|
+
value:
|
1739
|
+
a_string_matching(/#<SuperDiff::Test::Item:0x[a-f0-9]+ \{/),
|
1740
|
+
collection_bookend: :open
|
1041
1741
|
),
|
1042
1742
|
an_object_having_attributes(
|
1043
1743
|
type: :delete,
|
1044
|
-
indentation_level:
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
end
|
1049
|
-
end
|
1050
|
-
end
|
1051
|
-
|
1052
|
-
context "containing other custom objects" do
|
1053
|
-
context "given as_lines: false" do
|
1054
|
-
it "returns an inspected version of the object" do
|
1055
|
-
string = described_class.inspect_object(
|
1056
|
-
SuperDiff::Test::Customer.new(
|
1057
|
-
name: "Marty McFly",
|
1058
|
-
shipping_address: SuperDiff::Test::ShippingAddress.new(
|
1059
|
-
line_1: "123 Main St.",
|
1060
|
-
line_2: "",
|
1061
|
-
city: "Hill Valley",
|
1062
|
-
state: "CA",
|
1063
|
-
zip: "90382",
|
1064
|
-
),
|
1065
|
-
phone: "111-222-3333",
|
1066
|
-
),
|
1067
|
-
as_lines: false,
|
1068
|
-
)
|
1069
|
-
expect(string).to eq(
|
1070
|
-
# rubocop:disable Metrics/LineLength
|
1071
|
-
%(#<SuperDiff::Test::Customer name: "Marty McFly", shipping_address: #<SuperDiff::Test::ShippingAddress line_1: "123 Main St.", line_2: "", city: "Hill Valley", state: "CA", zip: "90382">, phone: "111-222-3333">),
|
1072
|
-
# rubocop:enable Metrics/LineLength
|
1073
|
-
)
|
1074
|
-
end
|
1075
|
-
end
|
1076
|
-
|
1077
|
-
context "given as_lines: true" do
|
1078
|
-
it "returns an inspected version of the object as multiple Lines" do
|
1079
|
-
tiered_lines = described_class.inspect_object(
|
1080
|
-
SuperDiff::Test::Customer.new(
|
1081
|
-
name: "Marty McFly",
|
1082
|
-
shipping_address: SuperDiff::Test::ShippingAddress.new(
|
1083
|
-
line_1: "123 Main St.",
|
1084
|
-
line_2: "",
|
1085
|
-
city: "Hill Valley",
|
1086
|
-
state: "CA",
|
1087
|
-
zip: "90382",
|
1088
|
-
),
|
1089
|
-
phone: "111-222-3333",
|
1744
|
+
indentation_level: 6,
|
1745
|
+
prefix: "@name=",
|
1746
|
+
value: %("eggs"),
|
1747
|
+
add_comma: true
|
1090
1748
|
),
|
1091
|
-
as_lines: true,
|
1092
|
-
type: :delete,
|
1093
|
-
indentation_level: 1,
|
1094
|
-
)
|
1095
|
-
expect(tiered_lines).to match([
|
1096
1749
|
an_object_having_attributes(
|
1097
1750
|
type: :delete,
|
1098
|
-
indentation_level:
|
1099
|
-
|
1100
|
-
|
1751
|
+
indentation_level: 6,
|
1752
|
+
prefix: "@quantity=",
|
1753
|
+
value: "2",
|
1754
|
+
add_comma: false
|
1101
1755
|
),
|
1102
1756
|
an_object_having_attributes(
|
1103
1757
|
type: :delete,
|
1104
|
-
indentation_level:
|
1105
|
-
|
1106
|
-
|
1107
|
-
add_comma: true,
|
1758
|
+
indentation_level: 5,
|
1759
|
+
value: "}>",
|
1760
|
+
collection_bookend: :close
|
1108
1761
|
),
|
1109
1762
|
an_object_having_attributes(
|
1110
1763
|
type: :delete,
|
1111
|
-
indentation_level:
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
collection_bookend: :open,
|
1764
|
+
indentation_level: 5,
|
1765
|
+
value:
|
1766
|
+
a_string_matching(/#<SuperDiff::Test::Item:0x[a-f0-9]+ \{/),
|
1767
|
+
collection_bookend: :open
|
1116
1768
|
),
|
1117
1769
|
an_object_having_attributes(
|
1118
1770
|
type: :delete,
|
1119
|
-
indentation_level:
|
1120
|
-
prefix:
|
1121
|
-
value: %("
|
1771
|
+
indentation_level: 6,
|
1772
|
+
prefix: "@name=",
|
1773
|
+
value: %("cheese"),
|
1774
|
+
add_comma: true
|
1122
1775
|
),
|
1123
1776
|
an_object_having_attributes(
|
1124
1777
|
type: :delete,
|
1125
|
-
indentation_level:
|
1126
|
-
prefix:
|
1127
|
-
value:
|
1128
|
-
add_comma:
|
1778
|
+
indentation_level: 6,
|
1779
|
+
prefix: "@quantity=",
|
1780
|
+
value: "1",
|
1781
|
+
add_comma: false
|
1129
1782
|
),
|
1130
1783
|
an_object_having_attributes(
|
1131
1784
|
type: :delete,
|
1132
|
-
indentation_level:
|
1133
|
-
|
1134
|
-
|
1135
|
-
add_comma: true,
|
1785
|
+
indentation_level: 5,
|
1786
|
+
value: "}>",
|
1787
|
+
collection_bookend: :close
|
1136
1788
|
),
|
1137
1789
|
an_object_having_attributes(
|
1138
1790
|
type: :delete,
|
1139
|
-
indentation_level:
|
1140
|
-
|
1141
|
-
|
1142
|
-
add_comma: true,
|
1791
|
+
indentation_level: 4,
|
1792
|
+
value: "]",
|
1793
|
+
collection_bookend: :close
|
1143
1794
|
),
|
1144
1795
|
an_object_having_attributes(
|
1145
1796
|
type: :delete,
|
1146
1797
|
indentation_level: 3,
|
1147
|
-
|
1148
|
-
|
1149
|
-
add_comma: false,
|
1798
|
+
value: "}>",
|
1799
|
+
collection_bookend: :close
|
1150
1800
|
),
|
1151
1801
|
an_object_having_attributes(
|
1152
1802
|
type: :delete,
|
1153
1803
|
indentation_level: 2,
|
1154
|
-
value:
|
1155
|
-
|
1156
|
-
collection_bookend: :close,
|
1804
|
+
value: "]",
|
1805
|
+
collection_bookend: :close
|
1157
1806
|
),
|
1158
1807
|
an_object_having_attributes(
|
1159
1808
|
type: :delete,
|
1160
1809
|
indentation_level: 2,
|
1161
|
-
prefix:
|
1162
|
-
value:
|
1163
|
-
|
1810
|
+
prefix: "customers: ",
|
1811
|
+
value: "[",
|
1812
|
+
collection_bookend: :open
|
1164
1813
|
),
|
1165
1814
|
an_object_having_attributes(
|
1166
1815
|
type: :delete,
|
1167
|
-
indentation_level:
|
1168
|
-
value:
|
1169
|
-
|
1170
|
-
collection_bookend: :close,
|
1171
|
-
),
|
1172
|
-
])
|
1173
|
-
end
|
1174
|
-
end
|
1175
|
-
end
|
1176
|
-
end
|
1177
|
-
|
1178
|
-
context "given a non-custom object" do
|
1179
|
-
context "containing only primitive values" do
|
1180
|
-
context "given as_lines: false" do
|
1181
|
-
it "returns an inspected version of the object" do
|
1182
|
-
string = described_class.inspect_object(
|
1183
|
-
SuperDiff::Test::Item.new(
|
1184
|
-
name: "mac and cheese",
|
1185
|
-
quantity: 2,
|
1186
|
-
),
|
1187
|
-
as_lines: false,
|
1188
|
-
)
|
1189
|
-
expect(string).to match(
|
1190
|
-
/\A#<SuperDiff::Test::Item:0x[a-z0-9]+ @name="mac and cheese", @quantity=2>\Z/,
|
1191
|
-
)
|
1192
|
-
end
|
1193
|
-
end
|
1194
|
-
|
1195
|
-
context "given as_lines: true" do
|
1196
|
-
it "returns an inspected version of the object as multiple Lines" do
|
1197
|
-
tiered_lines = described_class.inspect_object(
|
1198
|
-
SuperDiff::Test::Item.new(
|
1199
|
-
name: "mac and cheese",
|
1200
|
-
quantity: 2,
|
1816
|
+
indentation_level: 3,
|
1817
|
+
value: "#<SuperDiff::Test::Customer {",
|
1818
|
+
collection_bookend: :open
|
1201
1819
|
),
|
1202
|
-
as_lines: true,
|
1203
|
-
type: :delete,
|
1204
|
-
indentation_level: 1,
|
1205
|
-
)
|
1206
|
-
expect(tiered_lines).to match([
|
1207
1820
|
an_object_having_attributes(
|
1208
1821
|
type: :delete,
|
1209
|
-
indentation_level:
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
collection_bookend: :open,
|
1822
|
+
indentation_level: 4,
|
1823
|
+
prefix: "name: ",
|
1824
|
+
value: %("Marty McFly"),
|
1825
|
+
add_comma: true
|
1214
1826
|
),
|
1215
1827
|
an_object_having_attributes(
|
1216
1828
|
type: :delete,
|
1217
|
-
indentation_level:
|
1218
|
-
prefix:
|
1219
|
-
value:
|
1220
|
-
|
1829
|
+
indentation_level: 4,
|
1830
|
+
prefix: "shipping_address: ",
|
1831
|
+
value: "#<SuperDiff::Test::ShippingAddress {",
|
1832
|
+
collection_bookend: :open
|
1221
1833
|
),
|
1222
1834
|
an_object_having_attributes(
|
1223
1835
|
type: :delete,
|
1224
|
-
indentation_level:
|
1225
|
-
prefix:
|
1226
|
-
value: %(
|
1227
|
-
add_comma:
|
1836
|
+
indentation_level: 5,
|
1837
|
+
prefix: "line_1: ",
|
1838
|
+
value: %("123 Baltic Ave."),
|
1839
|
+
add_comma: true
|
1228
1840
|
),
|
1229
1841
|
an_object_having_attributes(
|
1230
1842
|
type: :delete,
|
1231
|
-
indentation_level:
|
1232
|
-
|
1233
|
-
|
1843
|
+
indentation_level: 5,
|
1844
|
+
prefix: "line_2: ",
|
1845
|
+
value: %(""),
|
1846
|
+
add_comma: true
|
1234
1847
|
),
|
1235
|
-
])
|
1236
|
-
end
|
1237
|
-
end
|
1238
|
-
end
|
1239
|
-
|
1240
|
-
context "containing other custom objects" do
|
1241
|
-
context "given as_lines: false" do
|
1242
|
-
it "returns an inspected version of the object" do
|
1243
|
-
string = described_class.inspect_object(
|
1244
|
-
SuperDiff::Test::Order.new([
|
1245
|
-
SuperDiff::Test::Item.new(name: "ham", quantity: 1),
|
1246
|
-
SuperDiff::Test::Item.new(name: "eggs", quantity: 2),
|
1247
|
-
SuperDiff::Test::Item.new(name: "cheese", quantity: 1),
|
1248
|
-
]),
|
1249
|
-
as_lines: false,
|
1250
|
-
)
|
1251
|
-
expect(string).to match(
|
1252
|
-
# rubocop:disable Metrics/LineLength
|
1253
|
-
/\A#<SuperDiff::Test::Order:0x[a-z0-9]+ @items=\[#<SuperDiff::Test::Item:0x[a-z0-9]+ @name="ham", @quantity=1>, #<SuperDiff::Test::Item:0x[a-z0-9]+ @name="eggs", @quantity=2>, #<SuperDiff::Test::Item:0x[a-z0-9]+ @name="cheese", @quantity=1>\]>\Z/,
|
1254
|
-
# rubocop:enable Metrics/LineLength
|
1255
|
-
)
|
1256
|
-
end
|
1257
|
-
end
|
1258
|
-
|
1259
|
-
context "given as_lines: true" do
|
1260
|
-
it "returns an inspected version of the object as multiple Lines" do
|
1261
|
-
tiered_lines = described_class.inspect_object(
|
1262
|
-
SuperDiff::Test::Order.new([
|
1263
|
-
SuperDiff::Test::Item.new(name: "ham", quantity: 1),
|
1264
|
-
SuperDiff::Test::Item.new(name: "eggs", quantity: 2),
|
1265
|
-
SuperDiff::Test::Item.new(name: "cheese", quantity: 1),
|
1266
|
-
]),
|
1267
|
-
as_lines: true,
|
1268
|
-
type: :delete,
|
1269
|
-
indentation_level: 1,
|
1270
|
-
)
|
1271
|
-
expect(tiered_lines).to match([
|
1272
1848
|
an_object_having_attributes(
|
1273
1849
|
type: :delete,
|
1274
|
-
indentation_level:
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
collection_bookend: :open,
|
1850
|
+
indentation_level: 5,
|
1851
|
+
prefix: "city: ",
|
1852
|
+
value: %("Hill Valley"),
|
1853
|
+
add_comma: true
|
1279
1854
|
),
|
1280
1855
|
an_object_having_attributes(
|
1281
1856
|
type: :delete,
|
1282
|
-
indentation_level:
|
1283
|
-
prefix:
|
1284
|
-
value: %(
|
1285
|
-
add_comma:
|
1286
|
-
collection_bookend: :open,
|
1857
|
+
indentation_level: 5,
|
1858
|
+
prefix: "state: ",
|
1859
|
+
value: %("CA"),
|
1860
|
+
add_comma: true
|
1287
1861
|
),
|
1288
1862
|
an_object_having_attributes(
|
1289
1863
|
type: :delete,
|
1290
|
-
indentation_level:
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
add_comma: false,
|
1295
|
-
collection_bookend: :open,
|
1864
|
+
indentation_level: 5,
|
1865
|
+
prefix: "zip: ",
|
1866
|
+
value: %("90382"),
|
1867
|
+
add_comma: false
|
1296
1868
|
),
|
1297
1869
|
an_object_having_attributes(
|
1298
1870
|
type: :delete,
|
1299
1871
|
indentation_level: 4,
|
1300
|
-
|
1301
|
-
value: %("ham"),
|
1872
|
+
value: "}>",
|
1302
1873
|
add_comma: true,
|
1874
|
+
collection_bookend: :close
|
1303
1875
|
),
|
1304
1876
|
an_object_having_attributes(
|
1305
1877
|
type: :delete,
|
1306
1878
|
indentation_level: 4,
|
1307
|
-
prefix:
|
1308
|
-
value: %(
|
1309
|
-
add_comma: false
|
1879
|
+
prefix: "phone: ",
|
1880
|
+
value: %("111-111-1111"),
|
1881
|
+
add_comma: false
|
1310
1882
|
),
|
1311
1883
|
an_object_having_attributes(
|
1312
1884
|
type: :delete,
|
1313
1885
|
indentation_level: 3,
|
1314
|
-
value:
|
1315
|
-
add_comma: true
|
1316
|
-
collection_bookend: :close,
|
1886
|
+
value: "}>",
|
1887
|
+
add_comma: true
|
1317
1888
|
),
|
1318
1889
|
an_object_having_attributes(
|
1319
1890
|
type: :delete,
|
1320
1891
|
indentation_level: 3,
|
1321
|
-
value:
|
1322
|
-
|
1323
|
-
),
|
1324
|
-
add_comma: false,
|
1325
|
-
collection_bookend: :open,
|
1892
|
+
value: "#<SuperDiff::Test::Customer {",
|
1893
|
+
collection_bookend: :open
|
1326
1894
|
),
|
1327
1895
|
an_object_having_attributes(
|
1328
1896
|
type: :delete,
|
1329
1897
|
indentation_level: 4,
|
1330
|
-
prefix:
|
1331
|
-
value: %("
|
1332
|
-
add_comma: true
|
1898
|
+
prefix: "name: ",
|
1899
|
+
value: %("Doc Brown"),
|
1900
|
+
add_comma: true
|
1333
1901
|
),
|
1334
1902
|
an_object_having_attributes(
|
1335
1903
|
type: :delete,
|
1336
1904
|
indentation_level: 4,
|
1337
|
-
prefix:
|
1338
|
-
value:
|
1339
|
-
|
1905
|
+
prefix: "shipping_address: ",
|
1906
|
+
value: "#<SuperDiff::Test::ShippingAddress {",
|
1907
|
+
collection_bookend: :open
|
1340
1908
|
),
|
1341
1909
|
an_object_having_attributes(
|
1342
1910
|
type: :delete,
|
1343
|
-
indentation_level:
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1911
|
+
indentation_level: 5,
|
1912
|
+
prefix: "line_1: ",
|
1913
|
+
value: %("456 Park Place"),
|
1914
|
+
add_comma: true
|
1347
1915
|
),
|
1348
1916
|
an_object_having_attributes(
|
1349
1917
|
type: :delete,
|
1350
|
-
indentation_level:
|
1351
|
-
|
1352
|
-
|
1353
|
-
|
1354
|
-
|
1355
|
-
|
1918
|
+
indentation_level: 5,
|
1919
|
+
prefix: "line_2: ",
|
1920
|
+
value: %(""),
|
1921
|
+
add_comma: true
|
1922
|
+
),
|
1923
|
+
an_object_having_attributes(
|
1924
|
+
type: :delete,
|
1925
|
+
indentation_level: 5,
|
1926
|
+
prefix: "city: ",
|
1927
|
+
value: %("Beverly Hills"),
|
1928
|
+
add_comma: true
|
1929
|
+
),
|
1930
|
+
an_object_having_attributes(
|
1931
|
+
type: :delete,
|
1932
|
+
indentation_level: 5,
|
1933
|
+
prefix: "state: ",
|
1934
|
+
value: %("CA"),
|
1935
|
+
add_comma: true
|
1936
|
+
),
|
1937
|
+
an_object_having_attributes(
|
1938
|
+
type: :delete,
|
1939
|
+
indentation_level: 5,
|
1940
|
+
prefix: "zip: ",
|
1941
|
+
value: %("90210"),
|
1942
|
+
add_comma: false
|
1356
1943
|
),
|
1357
1944
|
an_object_having_attributes(
|
1358
1945
|
type: :delete,
|
1359
1946
|
indentation_level: 4,
|
1360
|
-
|
1361
|
-
value: %("cheese"),
|
1947
|
+
value: "}>",
|
1362
1948
|
add_comma: true,
|
1949
|
+
collection_bookend: :close
|
1363
1950
|
),
|
1364
1951
|
an_object_having_attributes(
|
1365
1952
|
type: :delete,
|
1366
1953
|
indentation_level: 4,
|
1367
|
-
prefix:
|
1368
|
-
value: %(
|
1369
|
-
add_comma: false
|
1954
|
+
prefix: "phone: ",
|
1955
|
+
value: %("222-222-2222"),
|
1956
|
+
add_comma: false
|
1370
1957
|
),
|
1371
1958
|
an_object_having_attributes(
|
1372
1959
|
type: :delete,
|
1373
1960
|
indentation_level: 3,
|
1374
|
-
value:
|
1961
|
+
value: "}>",
|
1375
1962
|
add_comma: false,
|
1376
|
-
collection_bookend: :close
|
1963
|
+
collection_bookend: :close
|
1377
1964
|
),
|
1378
1965
|
an_object_having_attributes(
|
1379
1966
|
type: :delete,
|
1380
1967
|
indentation_level: 2,
|
1381
|
-
value:
|
1382
|
-
add_comma: false,
|
1383
|
-
collection_bookend: :close,
|
1384
|
-
),
|
1385
|
-
an_object_having_attributes(
|
1386
|
-
type: :delete,
|
1387
|
-
indentation_level: 1,
|
1388
|
-
value: %(}>),
|
1968
|
+
value: "]",
|
1389
1969
|
add_comma: false,
|
1390
|
-
collection_bookend: :close
|
1970
|
+
collection_bookend: :close
|
1391
1971
|
),
|
1392
|
-
])
|
1393
|
-
end
|
1394
|
-
end
|
1395
|
-
end
|
1396
|
-
|
1397
|
-
context "which is empty" do
|
1398
|
-
context "given as_lines: false" do
|
1399
|
-
it "returns an inspected version of the array" do
|
1400
|
-
string = described_class.inspect_object(
|
1401
|
-
SuperDiff::Test::EmptyClass.new,
|
1402
|
-
as_lines: false,
|
1403
|
-
)
|
1404
|
-
expect(string).to match(
|
1405
|
-
/#<SuperDiff::Test::EmptyClass:0x[a-z0-9]+>/,
|
1406
|
-
)
|
1407
|
-
end
|
1408
|
-
end
|
1409
|
-
|
1410
|
-
context "given as_lines: true" do
|
1411
|
-
it "returns an inspected version of the array" do
|
1412
|
-
inspection = described_class.inspect_object(
|
1413
|
-
SuperDiff::Test::EmptyClass.new,
|
1414
|
-
as_lines: true,
|
1415
|
-
type: :delete,
|
1416
|
-
indentation_level: 1
|
1417
|
-
)
|
1418
|
-
expect(inspection).to match([
|
1419
1972
|
an_object_having_attributes(
|
1420
1973
|
type: :delete,
|
1421
1974
|
indentation_level: 1,
|
1422
|
-
value:
|
1423
|
-
|
1424
|
-
),
|
1975
|
+
value: "}",
|
1976
|
+
collection_bookend: :close
|
1425
1977
|
)
|
1426
|
-
]
|
1427
|
-
end
|
1428
|
-
end
|
1429
|
-
end
|
1430
|
-
end
|
1431
|
-
|
1432
|
-
context "given a combination of all kinds of values" do
|
1433
|
-
context "given as_lines: false" do
|
1434
|
-
it "returns an inspected version of the object" do
|
1435
|
-
string = described_class.inspect_object(
|
1436
|
-
{
|
1437
|
-
state: :down,
|
1438
|
-
errors: [
|
1439
|
-
"Container A-234 is partially damaged",
|
1440
|
-
"Vessel B042 was attacked by raccoons",
|
1441
|
-
"Product FDK-3429 is out of stock",
|
1442
|
-
],
|
1443
|
-
mission_critical: true,
|
1444
|
-
serviceable: false,
|
1445
|
-
outstanding_orders: [
|
1446
|
-
SuperDiff::Test::Order.new([
|
1447
|
-
SuperDiff::Test::Item.new(name: "ham", quantity: 1),
|
1448
|
-
SuperDiff::Test::Item.new(name: "eggs", quantity: 2),
|
1449
|
-
SuperDiff::Test::Item.new(name: "cheese", quantity: 1),
|
1450
|
-
]),
|
1451
|
-
],
|
1452
|
-
customers: [
|
1453
|
-
SuperDiff::Test::Customer.new(
|
1454
|
-
name: "Marty McFly",
|
1455
|
-
shipping_address: SuperDiff::Test::ShippingAddress.new(
|
1456
|
-
line_1: "123 Baltic Ave.",
|
1457
|
-
line_2: "",
|
1458
|
-
city: "Hill Valley",
|
1459
|
-
state: "CA",
|
1460
|
-
zip: "90382",
|
1461
|
-
),
|
1462
|
-
phone: "111-111-1111",
|
1463
|
-
),
|
1464
|
-
SuperDiff::Test::Customer.new(
|
1465
|
-
name: "Doc Brown",
|
1466
|
-
shipping_address: SuperDiff::Test::ShippingAddress.new(
|
1467
|
-
line_1: "456 Park Place",
|
1468
|
-
line_2: "",
|
1469
|
-
city: "Beverly Hills",
|
1470
|
-
state: "CA",
|
1471
|
-
zip: "90210",
|
1472
|
-
),
|
1473
|
-
phone: "222-222-2222",
|
1474
|
-
),
|
1475
|
-
],
|
1476
|
-
},
|
1477
|
-
as_lines: false,
|
1478
|
-
)
|
1479
|
-
expect(string).to match(
|
1480
|
-
# rubocop:disable Metrics/LineLength
|
1481
|
-
/\A\{ state: :down, errors: \["Container A-234 is partially damaged", "Vessel B042 was attacked by raccoons", "Product FDK-3429 is out of stock"\], mission_critical: true, serviceable: false, outstanding_orders: \[#<SuperDiff::Test::Order:0x[a-z0-9]+ @items=\[#<SuperDiff::Test::Item:0x[a-z0-9]+ @name="ham", @quantity=1>, #<SuperDiff::Test::Item:0x[a-z0-9]+ @name="eggs", @quantity=2>, #<SuperDiff::Test::Item:0x[a-z0-9]+ @name="cheese", @quantity=1>\]>\], customers: \[#<SuperDiff::Test::Customer name: "Marty McFly", shipping_address: #<SuperDiff::Test::ShippingAddress line_1: "123 Baltic Ave.", line_2: "", city: "Hill Valley", state: "CA", zip: "90382">, phone: "111-111-1111">, #<SuperDiff::Test::Customer name: "Doc Brown", shipping_address: #<SuperDiff::Test::ShippingAddress line_1: "456 Park Place", line_2: "", city: "Beverly Hills", state: "CA", zip: "90210">, phone: "222-222-2222">\] \}\Z/,
|
1482
|
-
# rubocop:enable Metrics/LineLength
|
1483
|
-
)
|
1484
|
-
end
|
1485
|
-
end
|
1486
|
-
|
1487
|
-
context "given as_lines: true" do
|
1488
|
-
it "returns an inspected version of the object as multiple Lines" do
|
1489
|
-
tiered_lines = described_class.inspect_object(
|
1490
|
-
{
|
1491
|
-
state: :down,
|
1492
|
-
errors: [
|
1493
|
-
"Container A-234 is partially damaged",
|
1494
|
-
"Vessel B042 was attacked by raccoons",
|
1495
|
-
"Product FDK-3429 is out of stock",
|
1496
|
-
],
|
1497
|
-
mission_critical: true,
|
1498
|
-
serviceable: false,
|
1499
|
-
outstanding_orders: [
|
1500
|
-
SuperDiff::Test::Order.new([
|
1501
|
-
SuperDiff::Test::Item.new(name: "ham", quantity: 1),
|
1502
|
-
SuperDiff::Test::Item.new(name: "eggs", quantity: 2),
|
1503
|
-
SuperDiff::Test::Item.new(name: "cheese", quantity: 1),
|
1504
|
-
]),
|
1505
|
-
],
|
1506
|
-
customers: [
|
1507
|
-
SuperDiff::Test::Customer.new(
|
1508
|
-
name: "Marty McFly",
|
1509
|
-
shipping_address: SuperDiff::Test::ShippingAddress.new(
|
1510
|
-
line_1: "123 Baltic Ave.",
|
1511
|
-
line_2: "",
|
1512
|
-
city: "Hill Valley",
|
1513
|
-
state: "CA",
|
1514
|
-
zip: "90382",
|
1515
|
-
),
|
1516
|
-
phone: "111-111-1111",
|
1517
|
-
),
|
1518
|
-
SuperDiff::Test::Customer.new(
|
1519
|
-
name: "Doc Brown",
|
1520
|
-
shipping_address: SuperDiff::Test::ShippingAddress.new(
|
1521
|
-
line_1: "456 Park Place",
|
1522
|
-
line_2: "",
|
1523
|
-
city: "Beverly Hills",
|
1524
|
-
state: "CA",
|
1525
|
-
zip: "90210",
|
1526
|
-
),
|
1527
|
-
phone: "222-222-2222",
|
1528
|
-
),
|
1529
|
-
],
|
1530
|
-
},
|
1531
|
-
as_lines: true,
|
1532
|
-
type: :delete,
|
1533
|
-
indentation_level: 1,
|
1978
|
+
]
|
1534
1979
|
)
|
1535
|
-
expect(tiered_lines).to match([
|
1536
|
-
an_object_having_attributes(
|
1537
|
-
type: :delete,
|
1538
|
-
indentation_level: 1,
|
1539
|
-
value: %({),
|
1540
|
-
collection_bookend: :open,
|
1541
|
-
),
|
1542
|
-
an_object_having_attributes(
|
1543
|
-
type: :delete,
|
1544
|
-
indentation_level: 2,
|
1545
|
-
prefix: %(state: ),
|
1546
|
-
value: %(:down),
|
1547
|
-
add_comma: true,
|
1548
|
-
),
|
1549
|
-
an_object_having_attributes(
|
1550
|
-
type: :delete,
|
1551
|
-
indentation_level: 2,
|
1552
|
-
prefix: %(errors: ),
|
1553
|
-
value: %([),
|
1554
|
-
collection_bookend: :open,
|
1555
|
-
),
|
1556
|
-
an_object_having_attributes(
|
1557
|
-
type: :delete,
|
1558
|
-
indentation_level: 3,
|
1559
|
-
value: %("Container A-234 is partially damaged"),
|
1560
|
-
add_comma: true,
|
1561
|
-
),
|
1562
|
-
an_object_having_attributes(
|
1563
|
-
type: :delete,
|
1564
|
-
indentation_level: 3,
|
1565
|
-
value: %("Vessel B042 was attacked by raccoons"),
|
1566
|
-
add_comma: true,
|
1567
|
-
),
|
1568
|
-
an_object_having_attributes(
|
1569
|
-
type: :delete,
|
1570
|
-
indentation_level: 3,
|
1571
|
-
value: %("Product FDK-3429 is out of stock"),
|
1572
|
-
add_comma: false,
|
1573
|
-
),
|
1574
|
-
an_object_having_attributes(
|
1575
|
-
type: :delete,
|
1576
|
-
indentation_level: 2,
|
1577
|
-
value: %(]),
|
1578
|
-
collection_bookend: :close,
|
1579
|
-
),
|
1580
|
-
an_object_having_attributes(
|
1581
|
-
type: :delete,
|
1582
|
-
indentation_level: 2,
|
1583
|
-
prefix: %(mission_critical: ),
|
1584
|
-
value: %(true),
|
1585
|
-
add_comma: true,
|
1586
|
-
),
|
1587
|
-
an_object_having_attributes(
|
1588
|
-
type: :delete,
|
1589
|
-
indentation_level: 2,
|
1590
|
-
prefix: %(serviceable: ),
|
1591
|
-
value: %(false),
|
1592
|
-
add_comma: true,
|
1593
|
-
),
|
1594
|
-
an_object_having_attributes(
|
1595
|
-
type: :delete,
|
1596
|
-
indentation_level: 2,
|
1597
|
-
prefix: %(outstanding_orders: ),
|
1598
|
-
value: %([),
|
1599
|
-
collection_bookend: :open,
|
1600
|
-
),
|
1601
|
-
an_object_having_attributes(
|
1602
|
-
type: :delete,
|
1603
|
-
indentation_level: 3,
|
1604
|
-
value: a_string_matching(
|
1605
|
-
%r(#<SuperDiff::Test::Order:0x[a-f0-9]+ \{),
|
1606
|
-
),
|
1607
|
-
collection_bookend: :open,
|
1608
|
-
),
|
1609
|
-
an_object_having_attributes(
|
1610
|
-
type: :delete,
|
1611
|
-
indentation_level: 4,
|
1612
|
-
prefix: %(@items=),
|
1613
|
-
value: %([),
|
1614
|
-
collection_bookend: :open,
|
1615
|
-
),
|
1616
|
-
an_object_having_attributes(
|
1617
|
-
type: :delete,
|
1618
|
-
indentation_level: 5,
|
1619
|
-
value: a_string_matching(
|
1620
|
-
%r(#<SuperDiff::Test::Item:0x[a-f0-9]+ \{),
|
1621
|
-
),
|
1622
|
-
collection_bookend: :open,
|
1623
|
-
),
|
1624
|
-
an_object_having_attributes(
|
1625
|
-
type: :delete,
|
1626
|
-
indentation_level: 6,
|
1627
|
-
prefix: %(@name=),
|
1628
|
-
value: %("ham"),
|
1629
|
-
add_comma: true,
|
1630
|
-
),
|
1631
|
-
an_object_having_attributes(
|
1632
|
-
type: :delete,
|
1633
|
-
indentation_level: 6,
|
1634
|
-
prefix: %(@quantity=),
|
1635
|
-
value: %(1),
|
1636
|
-
add_comma: false,
|
1637
|
-
),
|
1638
|
-
an_object_having_attributes(
|
1639
|
-
type: :delete,
|
1640
|
-
indentation_level: 5,
|
1641
|
-
value: %(}>),
|
1642
|
-
collection_bookend: :close,
|
1643
|
-
),
|
1644
|
-
an_object_having_attributes(
|
1645
|
-
type: :delete,
|
1646
|
-
indentation_level: 5,
|
1647
|
-
value: a_string_matching(
|
1648
|
-
%r(#<SuperDiff::Test::Item:0x[a-f0-9]+ \{),
|
1649
|
-
),
|
1650
|
-
collection_bookend: :open,
|
1651
|
-
),
|
1652
|
-
an_object_having_attributes(
|
1653
|
-
type: :delete,
|
1654
|
-
indentation_level: 6,
|
1655
|
-
prefix: %(@name=),
|
1656
|
-
value: %("eggs"),
|
1657
|
-
add_comma: true,
|
1658
|
-
),
|
1659
|
-
an_object_having_attributes(
|
1660
|
-
type: :delete,
|
1661
|
-
indentation_level: 6,
|
1662
|
-
prefix: %(@quantity=),
|
1663
|
-
value: %(2),
|
1664
|
-
add_comma: false,
|
1665
|
-
),
|
1666
|
-
an_object_having_attributes(
|
1667
|
-
type: :delete,
|
1668
|
-
indentation_level: 5,
|
1669
|
-
value: %(}>),
|
1670
|
-
collection_bookend: :close,
|
1671
|
-
),
|
1672
|
-
an_object_having_attributes(
|
1673
|
-
type: :delete,
|
1674
|
-
indentation_level: 5,
|
1675
|
-
value: a_string_matching(
|
1676
|
-
%r(#<SuperDiff::Test::Item:0x[a-f0-9]+ \{),
|
1677
|
-
),
|
1678
|
-
collection_bookend: :open,
|
1679
|
-
),
|
1680
|
-
an_object_having_attributes(
|
1681
|
-
type: :delete,
|
1682
|
-
indentation_level: 6,
|
1683
|
-
prefix: %(@name=),
|
1684
|
-
value: %("cheese"),
|
1685
|
-
add_comma: true,
|
1686
|
-
),
|
1687
|
-
an_object_having_attributes(
|
1688
|
-
type: :delete,
|
1689
|
-
indentation_level: 6,
|
1690
|
-
prefix: %(@quantity=),
|
1691
|
-
value: %(1),
|
1692
|
-
add_comma: false,
|
1693
|
-
),
|
1694
|
-
an_object_having_attributes(
|
1695
|
-
type: :delete,
|
1696
|
-
indentation_level: 5,
|
1697
|
-
value: %(}>),
|
1698
|
-
collection_bookend: :close,
|
1699
|
-
),
|
1700
|
-
an_object_having_attributes(
|
1701
|
-
type: :delete,
|
1702
|
-
indentation_level: 4,
|
1703
|
-
value: %(]),
|
1704
|
-
collection_bookend: :close,
|
1705
|
-
),
|
1706
|
-
an_object_having_attributes(
|
1707
|
-
type: :delete,
|
1708
|
-
indentation_level: 3,
|
1709
|
-
value: %(}>),
|
1710
|
-
collection_bookend: :close,
|
1711
|
-
),
|
1712
|
-
an_object_having_attributes(
|
1713
|
-
type: :delete,
|
1714
|
-
indentation_level: 2,
|
1715
|
-
value: %(]),
|
1716
|
-
collection_bookend: :close,
|
1717
|
-
),
|
1718
|
-
an_object_having_attributes(
|
1719
|
-
type: :delete,
|
1720
|
-
indentation_level: 2,
|
1721
|
-
prefix: %(customers: ),
|
1722
|
-
value: %([),
|
1723
|
-
collection_bookend: :open,
|
1724
|
-
),
|
1725
|
-
an_object_having_attributes(
|
1726
|
-
type: :delete,
|
1727
|
-
indentation_level: 3,
|
1728
|
-
value: %(#<SuperDiff::Test::Customer {),
|
1729
|
-
collection_bookend: :open,
|
1730
|
-
),
|
1731
|
-
an_object_having_attributes(
|
1732
|
-
type: :delete,
|
1733
|
-
indentation_level: 4,
|
1734
|
-
prefix: %(name: ),
|
1735
|
-
value: %("Marty McFly"),
|
1736
|
-
add_comma: true,
|
1737
|
-
),
|
1738
|
-
an_object_having_attributes(
|
1739
|
-
type: :delete,
|
1740
|
-
indentation_level: 4,
|
1741
|
-
prefix: %(shipping_address: ),
|
1742
|
-
value: %(#<SuperDiff::Test::ShippingAddress {),
|
1743
|
-
collection_bookend: :open,
|
1744
|
-
),
|
1745
|
-
an_object_having_attributes(
|
1746
|
-
type: :delete,
|
1747
|
-
indentation_level: 5,
|
1748
|
-
prefix: %(line_1: ),
|
1749
|
-
value: %("123 Baltic Ave."),
|
1750
|
-
add_comma: true,
|
1751
|
-
),
|
1752
|
-
an_object_having_attributes(
|
1753
|
-
type: :delete,
|
1754
|
-
indentation_level: 5,
|
1755
|
-
prefix: %(line_2: ),
|
1756
|
-
value: %(""),
|
1757
|
-
add_comma: true,
|
1758
|
-
),
|
1759
|
-
an_object_having_attributes(
|
1760
|
-
type: :delete,
|
1761
|
-
indentation_level: 5,
|
1762
|
-
prefix: %(city: ),
|
1763
|
-
value: %("Hill Valley"),
|
1764
|
-
add_comma: true,
|
1765
|
-
),
|
1766
|
-
an_object_having_attributes(
|
1767
|
-
type: :delete,
|
1768
|
-
indentation_level: 5,
|
1769
|
-
prefix: %(state: ),
|
1770
|
-
value: %("CA"),
|
1771
|
-
add_comma: true,
|
1772
|
-
),
|
1773
|
-
an_object_having_attributes(
|
1774
|
-
type: :delete,
|
1775
|
-
indentation_level: 5,
|
1776
|
-
prefix: %(zip: ),
|
1777
|
-
value: %("90382"),
|
1778
|
-
add_comma: false,
|
1779
|
-
),
|
1780
|
-
an_object_having_attributes(
|
1781
|
-
type: :delete,
|
1782
|
-
indentation_level: 4,
|
1783
|
-
value: %(}>),
|
1784
|
-
add_comma: true,
|
1785
|
-
collection_bookend: :close,
|
1786
|
-
),
|
1787
|
-
an_object_having_attributes(
|
1788
|
-
type: :delete,
|
1789
|
-
indentation_level: 4,
|
1790
|
-
prefix: %(phone: ),
|
1791
|
-
value: %("111-111-1111"),
|
1792
|
-
add_comma: false,
|
1793
|
-
),
|
1794
|
-
an_object_having_attributes(
|
1795
|
-
type: :delete,
|
1796
|
-
indentation_level: 3,
|
1797
|
-
value: %(}>),
|
1798
|
-
add_comma: true,
|
1799
|
-
),
|
1800
|
-
an_object_having_attributes(
|
1801
|
-
type: :delete,
|
1802
|
-
indentation_level: 3,
|
1803
|
-
value: %(#<SuperDiff::Test::Customer {),
|
1804
|
-
collection_bookend: :open,
|
1805
|
-
),
|
1806
|
-
an_object_having_attributes(
|
1807
|
-
type: :delete,
|
1808
|
-
indentation_level: 4,
|
1809
|
-
prefix: %(name: ),
|
1810
|
-
value: %("Doc Brown"),
|
1811
|
-
add_comma: true,
|
1812
|
-
),
|
1813
|
-
an_object_having_attributes(
|
1814
|
-
type: :delete,
|
1815
|
-
indentation_level: 4,
|
1816
|
-
prefix: %(shipping_address: ),
|
1817
|
-
value: %(#<SuperDiff::Test::ShippingAddress {),
|
1818
|
-
collection_bookend: :open,
|
1819
|
-
),
|
1820
|
-
an_object_having_attributes(
|
1821
|
-
type: :delete,
|
1822
|
-
indentation_level: 5,
|
1823
|
-
prefix: %(line_1: ),
|
1824
|
-
value: %("456 Park Place"),
|
1825
|
-
add_comma: true,
|
1826
|
-
),
|
1827
|
-
an_object_having_attributes(
|
1828
|
-
type: :delete,
|
1829
|
-
indentation_level: 5,
|
1830
|
-
prefix: %(line_2: ),
|
1831
|
-
value: %(""),
|
1832
|
-
add_comma: true,
|
1833
|
-
),
|
1834
|
-
an_object_having_attributes(
|
1835
|
-
type: :delete,
|
1836
|
-
indentation_level: 5,
|
1837
|
-
prefix: %(city: ),
|
1838
|
-
value: %("Beverly Hills"),
|
1839
|
-
add_comma: true,
|
1840
|
-
),
|
1841
|
-
an_object_having_attributes(
|
1842
|
-
type: :delete,
|
1843
|
-
indentation_level: 5,
|
1844
|
-
prefix: %(state: ),
|
1845
|
-
value: %("CA"),
|
1846
|
-
add_comma: true,
|
1847
|
-
),
|
1848
|
-
an_object_having_attributes(
|
1849
|
-
type: :delete,
|
1850
|
-
indentation_level: 5,
|
1851
|
-
prefix: %(zip: ),
|
1852
|
-
value: %("90210"),
|
1853
|
-
add_comma: false,
|
1854
|
-
),
|
1855
|
-
an_object_having_attributes(
|
1856
|
-
type: :delete,
|
1857
|
-
indentation_level: 4,
|
1858
|
-
value: %(}>),
|
1859
|
-
add_comma: true,
|
1860
|
-
collection_bookend: :close,
|
1861
|
-
),
|
1862
|
-
an_object_having_attributes(
|
1863
|
-
type: :delete,
|
1864
|
-
indentation_level: 4,
|
1865
|
-
prefix: %(phone: ),
|
1866
|
-
value: %("222-222-2222"),
|
1867
|
-
add_comma: false,
|
1868
|
-
),
|
1869
|
-
an_object_having_attributes(
|
1870
|
-
type: :delete,
|
1871
|
-
indentation_level: 3,
|
1872
|
-
value: %(}>),
|
1873
|
-
add_comma: false,
|
1874
|
-
collection_bookend: :close,
|
1875
|
-
),
|
1876
|
-
an_object_having_attributes(
|
1877
|
-
type: :delete,
|
1878
|
-
indentation_level: 2,
|
1879
|
-
value: %(]),
|
1880
|
-
add_comma: false,
|
1881
|
-
collection_bookend: :close,
|
1882
|
-
),
|
1883
|
-
an_object_having_attributes(
|
1884
|
-
type: :delete,
|
1885
|
-
indentation_level: 1,
|
1886
|
-
value: %(}),
|
1887
|
-
collection_bookend: :close,
|
1888
|
-
),
|
1889
|
-
])
|
1890
1980
|
end
|
1891
1981
|
end
|
1892
1982
|
end
|
@@ -1894,7 +1984,7 @@ RSpec.describe SuperDiff, type: :unit do
|
|
1894
1984
|
context "given a data structure that refers to itself somewhere inside of it" do
|
1895
1985
|
context "given as_lines: false" do
|
1896
1986
|
it "replaces the reference with ∙∙∙" do
|
1897
|
-
value = [
|
1987
|
+
value = %w[a b c]
|
1898
1988
|
value.insert(1, value)
|
1899
1989
|
string = described_class.inspect_object(value, as_lines: false)
|
1900
1990
|
expect(string).to eq(%(["a", ∙∙∙, "b", "c"]))
|
@@ -1903,52 +1993,55 @@ RSpec.describe SuperDiff, type: :unit do
|
|
1903
1993
|
|
1904
1994
|
context "given as_lines: true" do
|
1905
1995
|
it "replaces the reference with ∙∙∙" do
|
1906
|
-
value = [
|
1996
|
+
value = %w[a b c]
|
1907
1997
|
value.insert(1, value)
|
1908
|
-
tiered_lines =
|
1909
|
-
|
1910
|
-
|
1911
|
-
|
1912
|
-
indentation_level: 1,
|
1913
|
-
)
|
1914
|
-
expect(tiered_lines).to match([
|
1915
|
-
an_object_having_attributes(
|
1916
|
-
type: :delete,
|
1917
|
-
indentation_level: 1,
|
1918
|
-
value: %([),
|
1919
|
-
collection_bookend: :open,
|
1920
|
-
),
|
1921
|
-
an_object_having_attributes(
|
1922
|
-
type: :delete,
|
1923
|
-
indentation_level: 2,
|
1924
|
-
value: %("a"),
|
1925
|
-
add_comma: true,
|
1926
|
-
),
|
1927
|
-
an_object_having_attributes(
|
1928
|
-
type: :delete,
|
1929
|
-
indentation_level: 2,
|
1930
|
-
value: %(∙∙∙),
|
1931
|
-
add_comma: true,
|
1932
|
-
),
|
1933
|
-
an_object_having_attributes(
|
1934
|
-
type: :delete,
|
1935
|
-
indentation_level: 2,
|
1936
|
-
value: %("b"),
|
1937
|
-
add_comma: true,
|
1938
|
-
),
|
1939
|
-
an_object_having_attributes(
|
1940
|
-
type: :delete,
|
1941
|
-
indentation_level: 2,
|
1942
|
-
value: %("c"),
|
1943
|
-
add_comma: false,
|
1944
|
-
),
|
1945
|
-
an_object_having_attributes(
|
1998
|
+
tiered_lines =
|
1999
|
+
described_class.inspect_object(
|
2000
|
+
value,
|
2001
|
+
as_lines: true,
|
1946
2002
|
type: :delete,
|
1947
|
-
indentation_level: 1
|
1948
|
-
|
1949
|
-
|
1950
|
-
|
1951
|
-
|
2003
|
+
indentation_level: 1
|
2004
|
+
)
|
2005
|
+
expect(tiered_lines).to match(
|
2006
|
+
[
|
2007
|
+
an_object_having_attributes(
|
2008
|
+
type: :delete,
|
2009
|
+
indentation_level: 1,
|
2010
|
+
value: "[",
|
2011
|
+
collection_bookend: :open
|
2012
|
+
),
|
2013
|
+
an_object_having_attributes(
|
2014
|
+
type: :delete,
|
2015
|
+
indentation_level: 2,
|
2016
|
+
value: %("a"),
|
2017
|
+
add_comma: true
|
2018
|
+
),
|
2019
|
+
an_object_having_attributes(
|
2020
|
+
type: :delete,
|
2021
|
+
indentation_level: 2,
|
2022
|
+
value: "∙∙∙",
|
2023
|
+
add_comma: true
|
2024
|
+
),
|
2025
|
+
an_object_having_attributes(
|
2026
|
+
type: :delete,
|
2027
|
+
indentation_level: 2,
|
2028
|
+
value: %("b"),
|
2029
|
+
add_comma: true
|
2030
|
+
),
|
2031
|
+
an_object_having_attributes(
|
2032
|
+
type: :delete,
|
2033
|
+
indentation_level: 2,
|
2034
|
+
value: %("c"),
|
2035
|
+
add_comma: false
|
2036
|
+
),
|
2037
|
+
an_object_having_attributes(
|
2038
|
+
type: :delete,
|
2039
|
+
indentation_level: 1,
|
2040
|
+
value: "]",
|
2041
|
+
collection_bookend: :close
|
2042
|
+
)
|
2043
|
+
]
|
2044
|
+
)
|
1952
2045
|
end
|
1953
2046
|
end
|
1954
2047
|
end
|