axiom-optimizer 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -1
  3. data/.rubocop.yml +6 -0
  4. data/.travis.yml +16 -20
  5. data/CONTRIBUTING.md +1 -2
  6. data/Gemfile +3 -1
  7. data/Gemfile.devtools +28 -18
  8. data/README.md +7 -13
  9. data/TODO +6 -5
  10. data/axiom-optimizer.gemspec +3 -3
  11. data/config/flay.yml +1 -1
  12. data/config/reek.yml +5 -29
  13. data/config/rubocop.yml +16 -10
  14. data/lib/axiom/optimizer.rb +3 -7
  15. data/lib/axiom/optimizer/algebra/difference.rb +2 -2
  16. data/lib/axiom/optimizer/algebra/extension.rb +6 -6
  17. data/lib/axiom/optimizer/algebra/intersection.rb +2 -2
  18. data/lib/axiom/optimizer/algebra/join.rb +4 -4
  19. data/lib/axiom/optimizer/algebra/product.rb +4 -4
  20. data/lib/axiom/optimizer/algebra/projection.rb +5 -5
  21. data/lib/axiom/optimizer/algebra/rename.rb +10 -10
  22. data/lib/axiom/optimizer/algebra/restriction.rb +8 -9
  23. data/lib/axiom/optimizer/algebra/summarization.rb +7 -7
  24. data/lib/axiom/optimizer/algebra/union.rb +2 -2
  25. data/lib/axiom/optimizer/function.rb +4 -6
  26. data/lib/axiom/optimizer/function/binary.rb +2 -2
  27. data/lib/axiom/optimizer/function/connective/binary.rb +1 -1
  28. data/lib/axiom/optimizer/function/connective/negation.rb +1 -1
  29. data/lib/axiom/optimizer/function/predicate.rb +1 -1
  30. data/lib/axiom/optimizer/function/predicate/comparable.rb +8 -6
  31. data/lib/axiom/optimizer/function/predicate/enumerable.rb +2 -2
  32. data/lib/axiom/optimizer/function/unary.rb +1 -1
  33. data/lib/axiom/optimizer/relation/operation/binary.rb +12 -12
  34. data/lib/axiom/optimizer/relation/operation/reverse.rb +9 -9
  35. data/lib/axiom/optimizer/relation/operation/{order.rb → sorted.rb} +15 -15
  36. data/lib/axiom/optimizer/relation/operation/unary.rb +7 -7
  37. data/lib/axiom/optimizer/support/predicate_partition.rb +11 -13
  38. data/lib/axiom/optimizer/version.rb +1 -1
  39. data/spec/integration/axiom/algebra/difference/optimize_spec.rb +12 -12
  40. data/spec/integration/axiom/algebra/intersection/optimize_spec.rb +12 -12
  41. data/spec/integration/axiom/algebra/join/optimize_spec.rb +6 -6
  42. data/spec/integration/axiom/algebra/product/optimize_spec.rb +10 -10
  43. data/spec/integration/axiom/algebra/projection/optimize_spec.rb +14 -14
  44. data/spec/integration/axiom/algebra/rename/optimize_spec.rb +38 -38
  45. data/spec/integration/axiom/algebra/restriction/optimize_spec.rb +12 -12
  46. data/spec/integration/axiom/algebra/summarization/optimize_spec.rb +2 -2
  47. data/spec/integration/axiom/algebra/union/optimize_spec.rb +16 -16
  48. data/spec/integration/axiom/function/optimize_spec.rb +1 -1
  49. data/spec/integration/axiom/relation/operation/limit/optimize_spec.rb +20 -20
  50. data/spec/integration/axiom/relation/operation/offset/optimize_spec.rb +14 -14
  51. data/spec/integration/axiom/relation/operation/reverse/optimize_spec.rb +15 -15
  52. data/spec/integration/axiom/relation/operation/{order → sorted}/optimize_spec.rb +6 -6
  53. data/spec/integration/axiom/relation/optimize_spec.rb +1 -1
  54. data/spec/shared/function_connective_binary_optimize_behavior.rb +8 -2
  55. data/spec/shared/optimize_method_behavior.rb +0 -11
  56. data/spec/spec_helper.rb +9 -9
  57. data/spec/support/config_alias.rb +2 -0
  58. data/spec/unit/axiom/optimizer/algebra/extension/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +3 -3
  59. data/spec/unit/axiom/optimizer/algebra/extension/{order_operand → sorted_operand}/optimize_spec.rb +1 -1
  60. data/spec/unit/axiom/optimizer/algebra/rename/limit_operand/optimize_spec.rb +3 -3
  61. data/spec/unit/axiom/optimizer/algebra/rename/offset_operand/optimize_spec.rb +3 -3
  62. data/spec/unit/axiom/optimizer/algebra/rename/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +3 -3
  63. data/spec/unit/axiom/optimizer/algebra/rename/{order_operand → sorted_operand}/optimize_spec.rb +2 -2
  64. data/spec/unit/axiom/optimizer/algebra/restriction/combination_operand/optimize_spec.rb +1 -1
  65. data/spec/unit/axiom/optimizer/algebra/restriction/predicate_spec.rb +5 -4
  66. data/spec/unit/axiom/optimizer/algebra/restriction/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +3 -3
  67. data/spec/unit/axiom/optimizer/algebra/restriction/{order_operand → sorted_operand}/optimize_spec.rb +1 -1
  68. data/spec/unit/axiom/optimizer/algebra/summarization/empty_operand/class_methods/extension_default_spec.rb +1 -1
  69. data/spec/unit/axiom/optimizer/algebra/summarization/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +3 -3
  70. data/spec/unit/axiom/optimizer/algebra/summarization/{order_operand → sorted_operand}/optimize_spec.rb +1 -1
  71. data/spec/unit/axiom/optimizer/algebra/summarization/summarize_per_spec.rb +1 -1
  72. data/spec/unit/axiom/optimizer/function/binary/constant_operands/optimizable_predicate_spec.rb +4 -4
  73. data/spec/unit/axiom/optimizer/function/connective/conjunction/contradiction/optimizable_predicate_spec.rb +2 -2
  74. data/spec/unit/axiom/optimizer/function/connective/disjunction/tautology/optimizable_predicate_spec.rb +2 -2
  75. data/spec/unit/axiom/optimizer/function/unary/constant_operand/optimizable_predicate_spec.rb +1 -1
  76. data/spec/unit/axiom/optimizer/function/util/class_methods/max_spec.rb +1 -1
  77. data/spec/unit/axiom/optimizer/function/util/class_methods/min_spec.rb +1 -1
  78. data/spec/unit/axiom/optimizer/optimizable/optimize_spec.rb +3 -3
  79. data/spec/unit/axiom/optimizer/optimizable_predicate_spec.rb +1 -5
  80. data/spec/unit/axiom/optimizer/optimize_spec.rb +1 -5
  81. data/spec/unit/axiom/optimizer/relation/operation/binary/{order_left → sorted_left}/optimizable_predicate_spec.rb +3 -3
  82. data/spec/unit/axiom/optimizer/relation/operation/binary/{order_left → sorted_left}/optimize_spec.rb +1 -1
  83. data/spec/unit/axiom/optimizer/relation/operation/binary/{order_right → sorted_right}/optimizable_predicate_spec.rb +3 -3
  84. data/spec/unit/axiom/optimizer/relation/operation/binary/{order_right → sorted_right}/optimize_spec.rb +1 -1
  85. data/spec/unit/axiom/optimizer/relation/operation/limit/equal_limit_operand/optimize_spec.rb +2 -2
  86. data/spec/unit/axiom/optimizer/relation/operation/limit/limit_operand/optimize_spec.rb +4 -4
  87. data/spec/unit/axiom/optimizer/relation/operation/limit/unoptimized_operand/optimize_spec.rb +3 -3
  88. data/spec/unit/axiom/optimizer/relation/operation/limit/zero_limit/optimize_spec.rb +2 -2
  89. data/spec/unit/axiom/optimizer/relation/operation/offset/offset_operand/optimize_spec.rb +3 -3
  90. data/spec/unit/axiom/optimizer/relation/operation/offset/unoptimized_operand/optimize_spec.rb +3 -3
  91. data/spec/unit/axiom/optimizer/relation/operation/offset/zero_offset/optimize_spec.rb +3 -3
  92. data/spec/unit/axiom/optimizer/relation/operation/reverse/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +3 -3
  93. data/spec/unit/axiom/optimizer/relation/operation/reverse/{order_operand → sorted_operand}/optimize_spec.rb +2 -2
  94. data/spec/unit/axiom/optimizer/relation/operation/reverse/unoptimized_operand/optimize_spec.rb +4 -4
  95. data/spec/unit/axiom/optimizer/relation/operation/{order → sorted}/one_limit_operand/optimizable_predicate_spec.rb +2 -2
  96. data/spec/unit/axiom/optimizer/relation/operation/{order → sorted}/one_limit_operand/optimize_spec.rb +1 -1
  97. data/spec/unit/axiom/optimizer/relation/operation/{order/order_operand → sorted/sorted_operand}/optimizable_predicate_spec.rb +4 -4
  98. data/spec/unit/axiom/optimizer/relation/operation/{order/order_operand → sorted/sorted_operand}/optimize_spec.rb +5 -5
  99. data/spec/unit/axiom/optimizer/relation/operation/{order → sorted}/unoptimized_operand/optimizable_predicate_spec.rb +2 -2
  100. data/spec/unit/axiom/optimizer/relation/operation/{order → sorted}/unoptimized_operand/optimize_spec.rb +2 -2
  101. data/spec/unit/axiom/optimizer/relation/operation/unary/{order_operand → sorted_operand}/optimizable_predicate_spec.rb +4 -4
  102. data/spec/unit/axiom/optimizer/relation/operation/unary/{order_operand → sorted_operand}/optimize_spec.rb +2 -2
  103. metadata +291 -47
  104. data/spec/support/ice_nine_config.rb +0 -6
@@ -21,7 +21,7 @@ describe Algebra::Product, '#optimize' do
21
21
  end
22
22
 
23
23
  it 'does not execute right_body#each' do
24
- right_body.should_not_receive(:each)
24
+ expect(right_body).not_to receive(:each)
25
25
  subject
26
26
  end
27
27
 
@@ -38,7 +38,7 @@ describe Algebra::Product, '#optimize' do
38
38
  end
39
39
 
40
40
  it 'does not execute left_body#each' do
41
- left_body.should_not_receive(:each)
41
+ expect(left_body).not_to receive(:each)
42
42
  subject
43
43
  end
44
44
 
@@ -55,7 +55,7 @@ describe Algebra::Product, '#optimize' do
55
55
  end
56
56
 
57
57
  it 'does not execute right_body#each' do
58
- right_body.should_not_receive(:each)
58
+ expect(right_body).not_to receive(:each)
59
59
  subject
60
60
  end
61
61
 
@@ -72,7 +72,7 @@ describe Algebra::Product, '#optimize' do
72
72
  end
73
73
 
74
74
  it 'does not execute left_body#each' do
75
- left_body.should_not_receive(:each)
75
+ expect(left_body).not_to receive(:each)
76
76
  subject
77
77
  end
78
78
 
@@ -89,7 +89,7 @@ describe Algebra::Product, '#optimize' do
89
89
  end
90
90
 
91
91
  it 'does not execute right_body#each' do
92
- right_body.should_not_receive(:each)
92
+ expect(right_body).not_to receive(:each)
93
93
  subject
94
94
  end
95
95
 
@@ -106,7 +106,7 @@ describe Algebra::Product, '#optimize' do
106
106
  end
107
107
 
108
108
  it 'does not execute left_body#each' do
109
- left_body.should_not_receive(:each)
109
+ expect(left_body).not_to receive(:each)
110
110
  subject
111
111
  end
112
112
 
@@ -123,7 +123,7 @@ describe Algebra::Product, '#optimize' do
123
123
  end
124
124
 
125
125
  it 'does not execute right_body#each' do
126
- right_body.should_not_receive(:each)
126
+ expect(right_body).not_to receive(:each)
127
127
  subject
128
128
  end
129
129
 
@@ -140,7 +140,7 @@ describe Algebra::Product, '#optimize' do
140
140
  end
141
141
 
142
142
  it 'does not execute left_body#each' do
143
- left_body.should_not_receive(:each)
143
+ expect(left_body).not_to receive(:each)
144
144
  subject
145
145
  end
146
146
 
@@ -151,12 +151,12 @@ describe Algebra::Product, '#optimize' do
151
151
  it { should be(object) }
152
152
 
153
153
  it 'does not execute left_body#each' do
154
- left_body.should_not_receive(:each)
154
+ expect(left_body).not_to receive(:each)
155
155
  subject
156
156
  end
157
157
 
158
158
  it 'does not execute right_body#each' do
159
- right_body.should_not_receive(:each)
159
+ expect(right_body).not_to receive(:each)
160
160
  subject
161
161
  end
162
162
 
@@ -13,7 +13,7 @@ describe Algebra::Projection, '#optimize' do
13
13
 
14
14
  before do
15
15
  # skip dup of the body to avoid clearing the method stubs
16
- body.stub(:frozen?).and_return(true)
16
+ allow(body).to receive(:frozen?).and_return(true)
17
17
  end
18
18
 
19
19
  context 'when the attributes are equivalent to the relation headers, and in the same order' do
@@ -26,7 +26,7 @@ describe Algebra::Projection, '#optimize' do
26
26
  end
27
27
 
28
28
  it 'does not execute body#each' do
29
- body.should_not_receive(:each)
29
+ expect(body).not_to receive(:each)
30
30
  subject
31
31
  end
32
32
 
@@ -41,7 +41,7 @@ describe Algebra::Projection, '#optimize' do
41
41
  end
42
42
 
43
43
  it 'does not execute body#each' do
44
- body.should_not_receive(:each)
44
+ expect(body).not_to receive(:each)
45
45
  subject
46
46
  end
47
47
 
@@ -54,7 +54,7 @@ describe Algebra::Projection, '#optimize' do
54
54
  it { should be(object) }
55
55
 
56
56
  it 'does not execute body#each' do
57
- body.should_not_receive(:each)
57
+ expect(body).not_to receive(:each)
58
58
  subject
59
59
  end
60
60
 
@@ -85,7 +85,7 @@ describe Algebra::Projection, '#optimize' do
85
85
  end
86
86
 
87
87
  it 'does not execute body#each' do
88
- body.should_not_receive(:each)
88
+ expect(body).not_to receive(:each)
89
89
  subject
90
90
  end
91
91
 
@@ -109,7 +109,7 @@ describe Algebra::Projection, '#optimize' do
109
109
  end
110
110
 
111
111
  it 'does not execute body#each' do
112
- body.should_not_receive(:each)
112
+ expect(body).not_to receive(:each)
113
113
  subject
114
114
  end
115
115
 
@@ -133,7 +133,7 @@ describe Algebra::Projection, '#optimize' do
133
133
  end
134
134
 
135
135
  it 'does not execute body#each' do
136
- body.should_not_receive(:each)
136
+ expect(body).not_to receive(:each)
137
137
  subject
138
138
  end
139
139
 
@@ -158,7 +158,7 @@ describe Algebra::Projection, '#optimize' do
158
158
  end
159
159
 
160
160
  it 'does not execute body#each' do
161
- body.should_not_receive(:each)
161
+ expect(body).not_to receive(:each)
162
162
  subject
163
163
  end
164
164
 
@@ -175,8 +175,8 @@ describe Algebra::Projection, '#optimize' do
175
175
 
176
176
  before do
177
177
  # skip dup of the left and right body to avoid clearing the method stubs
178
- left_body.stub(:frozen?).and_return(true)
179
- right_body.stub(:frozen?).and_return(true)
178
+ allow(left_body).to receive(:frozen?).and_return(true)
179
+ allow(right_body).to receive(:frozen?).and_return(true)
180
180
  end
181
181
 
182
182
  it 'pushes the object to each relation, and combine the nested objects' do
@@ -189,14 +189,14 @@ describe Algebra::Projection, '#optimize' do
189
189
 
190
190
  it 'does not execute left_body#each' do
191
191
  pending 'TODO: should only compare left and right with #eql? if they are materialized' do
192
- left_body.should_not_receive(:each)
192
+ expect(left_body).to_not receive(:each)
193
193
  subject
194
194
  end
195
195
  end
196
196
 
197
197
  it 'does not execute right_body#each' do
198
198
  pending 'TODO: should only compare left and right with #eql? if they are materialized' do
199
- right_body.should_not_receive(:each)
199
+ expect(right_body).to_not receive(:each)
200
200
  subject
201
201
  end
202
202
  end
@@ -222,13 +222,13 @@ describe Algebra::Projection, '#optimize' do
222
222
 
223
223
  it 'executes left_body#each' do
224
224
  pending 'TODO: make sure this is only received once'
225
- left_body.should_receive(:each)
225
+ expect(left_body).to receive(:each)
226
226
  subject
227
227
  end
228
228
 
229
229
  it 'executes right_body#each' do
230
230
  pending 'TODO: make sure this is only received once'
231
- right_body.should_receive(:each)
231
+ expect(right_body).to receive(:each)
232
232
  subject
233
233
  end
234
234
 
@@ -15,7 +15,7 @@ describe Algebra::Rename, '#optimize' do
15
15
  it { should be(object) }
16
16
 
17
17
  it 'does not execute body#each' do
18
- body.should_not_receive(:each)
18
+ expect(body).not_to receive(:each)
19
19
  subject
20
20
  end
21
21
 
@@ -32,7 +32,7 @@ describe Algebra::Rename, '#optimize' do
32
32
  end
33
33
 
34
34
  it 'does not execute body#each' do
35
- body.should_not_receive(:each)
35
+ expect(body).not_to receive(:each)
36
36
  subject
37
37
  end
38
38
 
@@ -57,7 +57,7 @@ describe Algebra::Rename, '#optimize' do
57
57
  end
58
58
 
59
59
  it 'does not execute body#each' do
60
- body.should_not_receive(:each)
60
+ expect(body).not_to receive(:each)
61
61
  subject
62
62
  end
63
63
 
@@ -87,7 +87,7 @@ describe Algebra::Rename, '#optimize' do
87
87
  end
88
88
 
89
89
  it 'does not execute body#each' do
90
- body.should_not_receive(:each)
90
+ expect(body).not_to receive(:each)
91
91
  subject
92
92
  end
93
93
 
@@ -116,7 +116,7 @@ describe Algebra::Rename, '#optimize' do
116
116
  end
117
117
 
118
118
  it 'does not execute body#each' do
119
- body.should_not_receive(:each)
119
+ expect(body).not_to receive(:each)
120
120
  subject
121
121
  end
122
122
 
@@ -134,7 +134,7 @@ describe Algebra::Rename, '#optimize' do
134
134
  end
135
135
 
136
136
  it 'does not execute body#each' do
137
- body.should_not_receive(:each)
137
+ expect(body).not_to receive(:each)
138
138
  subject
139
139
  end
140
140
 
@@ -155,7 +155,7 @@ describe Algebra::Rename, '#optimize' do
155
155
  end
156
156
 
157
157
  it 'does not execute body#each' do
158
- body.should_not_receive(:each)
158
+ expect(body).not_to receive(:each)
159
159
  subject
160
160
  end
161
161
 
@@ -175,7 +175,7 @@ describe Algebra::Rename, '#optimize' do
175
175
  end
176
176
 
177
177
  it 'does not execute body#each' do
178
- body.should_not_receive(:each)
178
+ expect(body).not_to receive(:each)
179
179
  subject
180
180
  end
181
181
 
@@ -196,7 +196,7 @@ describe Algebra::Rename, '#optimize' do
196
196
  end
197
197
 
198
198
  it 'does not execute body#each' do
199
- body.should_not_receive(:each)
199
+ expect(body).not_to receive(:each)
200
200
  subject
201
201
  end
202
202
 
@@ -216,7 +216,7 @@ describe Algebra::Rename, '#optimize' do
216
216
  end
217
217
 
218
218
  it 'does not execute body#each' do
219
- body.should_not_receive(:each)
219
+ expect(body).not_to receive(:each)
220
220
  subject
221
221
  end
222
222
 
@@ -237,7 +237,7 @@ describe Algebra::Rename, '#optimize' do
237
237
  end
238
238
 
239
239
  it 'does not execute body#each' do
240
- body.should_not_receive(:each)
240
+ expect(body).not_to receive(:each)
241
241
  subject
242
242
  end
243
243
 
@@ -259,7 +259,7 @@ describe Algebra::Rename, '#optimize' do
259
259
  end
260
260
 
261
261
  it 'does not execute body#each' do
262
- body.should_not_receive(:each)
262
+ expect(body).not_to receive(:each)
263
263
  subject
264
264
  end
265
265
 
@@ -270,7 +270,7 @@ describe Algebra::Rename, '#optimize' do
270
270
  let(:limit) { relation.sort_by { |r| [r.id, r.name] }.take(2) }
271
271
  let(:operand) { limit.reverse }
272
272
 
273
- it 'pushes the object under the order, limit and reverse' do
273
+ it 'pushes the object under the sorted, limit and reverse' do
274
274
  should eql(relation.rename(aliases).sort_by { |r| [r.other_id, r.name] }.take(2).reverse)
275
275
  end
276
276
 
@@ -279,7 +279,7 @@ describe Algebra::Rename, '#optimize' do
279
279
  end
280
280
 
281
281
  it 'does not execute body#each' do
282
- body.should_not_receive(:each)
282
+ expect(body).not_to receive(:each)
283
283
  subject
284
284
  end
285
285
 
@@ -291,7 +291,7 @@ describe Algebra::Rename, '#optimize' do
291
291
  let(:operand) { limit.rename(id: :other_id).reverse }
292
292
  let(:aliases) { { other_id: :id } }
293
293
 
294
- it 'pushes the object under the order, limit and reverse, and then cancel it out' do
294
+ it 'pushes the object under the sorted, limit and reverse, and then cancel it out' do
295
295
  should eql(relation.sort_by { |r| [r.id, r.name] }.take(2).reverse)
296
296
  end
297
297
 
@@ -300,17 +300,17 @@ describe Algebra::Rename, '#optimize' do
300
300
  end
301
301
 
302
302
  it 'does not execute body#each' do
303
- body.should_not_receive(:each)
303
+ expect(body).not_to receive(:each)
304
304
  subject
305
305
  end
306
306
 
307
307
  it_should_behave_like 'an optimize method'
308
308
  end
309
309
 
310
- context 'containing an order operation' do
310
+ context 'containing a sorted operation' do
311
311
  let(:operand) { relation.sort_by { |r| [r.id, r.name] } }
312
312
 
313
- it 'pushes the object under the order' do
313
+ it 'pushes the object under the sorted' do
314
314
  should eql(relation.rename(aliases).sort_by { |r| [r.other_id, r.name] })
315
315
  end
316
316
 
@@ -319,18 +319,18 @@ describe Algebra::Rename, '#optimize' do
319
319
  end
320
320
 
321
321
  it 'does not execute body#each' do
322
- body.should_not_receive(:each)
322
+ expect(body).not_to receive(:each)
323
323
  subject
324
324
  end
325
325
 
326
326
  it_should_behave_like 'an optimize method'
327
327
  end
328
328
 
329
- context 'containing an order operation, containing a object that cancels out' do
329
+ context 'containing a sorted operation, containing a object that cancels out' do
330
330
  let(:operand) { relation.rename(id: :other_id).sort_by { |r| [r.other_id, r.name] } }
331
331
  let(:aliases) { { other_id: :id } }
332
332
 
333
- it 'pushes the object under the order, and then cancel it out' do
333
+ it 'pushes the object under the sorted, and then cancel it out' do
334
334
  should eql(relation.sort_by { |r| [r.id, r.name] })
335
335
  end
336
336
 
@@ -339,7 +339,7 @@ describe Algebra::Rename, '#optimize' do
339
339
  end
340
340
 
341
341
  it 'does not execute body#each' do
342
- body.should_not_receive(:each)
342
+ expect(body).not_to receive(:each)
343
343
  subject
344
344
  end
345
345
 
@@ -347,10 +347,10 @@ describe Algebra::Rename, '#optimize' do
347
347
  end
348
348
 
349
349
  context 'containing a limit operation' do
350
- let(:order) { relation.sort_by { |r| [r.id, r.name] } }
351
- let(:operand) { order.take(2) }
350
+ let(:sorted) { relation.sort_by { |r| [r.id, r.name] } }
351
+ let(:operand) { sorted.take(2) }
352
352
 
353
- it 'pushes the object under the limit and order' do
353
+ it 'pushes the object under the limit and sorted' do
354
354
  should eql(relation.rename(aliases).sort_by { |r| [r.other_id, r.name] }.take(2))
355
355
  end
356
356
 
@@ -359,7 +359,7 @@ describe Algebra::Rename, '#optimize' do
359
359
  end
360
360
 
361
361
  it 'does not execute body#each' do
362
- body.should_not_receive(:each)
362
+ expect(body).not_to receive(:each)
363
363
  subject
364
364
  end
365
365
 
@@ -367,11 +367,11 @@ describe Algebra::Rename, '#optimize' do
367
367
  end
368
368
 
369
369
  context 'containing a limit operation, containing a object that cancels out' do
370
- let(:order) { relation.sort_by { |r| [r.id, r.name] } }
371
- let(:operand) { order.rename(id: :other_id).take(2) }
370
+ let(:sorted) { relation.sort_by { |r| [r.id, r.name] } }
371
+ let(:operand) { sorted.rename(id: :other_id).take(2) }
372
372
  let(:aliases) { { other_id: :id } }
373
373
 
374
- it 'pushes the object under the limit and order, and then cancel it out' do
374
+ it 'pushes the object under the limit and sorted, and then cancel it out' do
375
375
  should eql(relation.sort_by { |r| [r.id, r.name] }.take(2))
376
376
  end
377
377
 
@@ -380,7 +380,7 @@ describe Algebra::Rename, '#optimize' do
380
380
  end
381
381
 
382
382
  it 'does not execute body#each' do
383
- body.should_not_receive(:each)
383
+ expect(body).not_to receive(:each)
384
384
  subject
385
385
  end
386
386
 
@@ -388,10 +388,10 @@ describe Algebra::Rename, '#optimize' do
388
388
  end
389
389
 
390
390
  context 'containing an offset operation' do
391
- let(:order) { relation.sort_by { |r| [r.id, r.name] } }
392
- let(:operand) { order.drop(1) }
391
+ let(:sorted) { relation.sort_by { |r| [r.id, r.name] } }
392
+ let(:operand) { sorted.drop(1) }
393
393
 
394
- it 'pushes the object under the offset and order' do
394
+ it 'pushes the object under the offset and sorted' do
395
395
  should eql(relation.rename(aliases).sort_by { |r| [r.other_id, r.name] }.drop(1))
396
396
  end
397
397
 
@@ -400,7 +400,7 @@ describe Algebra::Rename, '#optimize' do
400
400
  end
401
401
 
402
402
  it 'does not execute body#each' do
403
- body.should_not_receive(:each)
403
+ expect(body).not_to receive(:each)
404
404
  subject
405
405
  end
406
406
 
@@ -408,11 +408,11 @@ describe Algebra::Rename, '#optimize' do
408
408
  end
409
409
 
410
410
  context 'containing an offset operation, containing a object that cancels out' do
411
- let(:order) { relation.sort_by { |r| [r.id, r.name] } }
412
- let(:operand) { order.rename(id: :other_id).drop(1) }
411
+ let(:sorted) { relation.sort_by { |r| [r.id, r.name] } }
412
+ let(:operand) { sorted.rename(id: :other_id).drop(1) }
413
413
  let(:aliases) { { other_id: :id } }
414
414
 
415
- it 'pushes the object under the offset and order, and then cancel it out' do
415
+ it 'pushes the object under the offset and sorted, and then cancel it out' do
416
416
  should eql(relation.sort_by { |r| [r.id, r.name] }.drop(1))
417
417
  end
418
418
 
@@ -421,7 +421,7 @@ describe Algebra::Rename, '#optimize' do
421
421
  end
422
422
 
423
423
  it 'does not execute body#each' do
424
- body.should_not_receive(:each)
424
+ expect(body).not_to receive(:each)
425
425
  subject
426
426
  end
427
427