arel 0.1.0 → 0.1.2
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.
- data/.gitmodules +3 -0
- data/README.markdown +26 -26
- data/Rakefile +34 -46
- data/Thorfile +122 -0
- data/arel.gemspec +205 -201
- data/lib/arel.rb +11 -7
- data/lib/arel/algebra.rb +7 -2
- data/lib/arel/algebra/{primitives/attribute.rb → attribute.rb} +7 -7
- data/lib/arel/algebra/core_extensions.rb +4 -0
- data/lib/arel/algebra/{extensions → core_extensions}/class.rb +2 -2
- data/lib/arel/algebra/{extensions → core_extensions}/hash.rb +1 -1
- data/lib/arel/algebra/{extensions → core_extensions}/object.rb +1 -1
- data/lib/arel/algebra/{extensions → core_extensions}/symbol.rb +1 -1
- data/lib/arel/algebra/{primitives/expression.rb → expression.rb} +0 -0
- data/lib/arel/algebra/{primitives/ordering.rb → ordering.rb} +1 -1
- data/lib/arel/algebra/predicates.rb +32 -30
- data/lib/arel/algebra/relations/relation.rb +1 -1
- data/lib/arel/algebra/{primitives/value.rb → value.rb} +0 -0
- data/lib/arel/engines/memory/predicates.rb +26 -24
- data/lib/arel/engines/sql.rb +1 -1
- data/lib/arel/engines/sql/core_extensions.rb +4 -0
- data/lib/arel/engines/sql/{extensions → core_extensions}/array.rb +1 -1
- data/lib/arel/engines/sql/{extensions → core_extensions}/nil_class.rb +1 -1
- data/lib/arel/engines/sql/{extensions → core_extensions}/object.rb +1 -1
- data/lib/arel/engines/sql/{extensions → core_extensions}/range.rb +1 -1
- data/lib/arel/engines/sql/formatters.rb +6 -3
- data/lib/arel/engines/sql/predicates.rb +37 -35
- data/lib/arel/engines/sql/primitives.rb +10 -2
- data/lib/arel/engines/sql/relations/operations/join.rb +2 -2
- data/lib/arel/engines/sql/relations/relation.rb +33 -9
- data/lib/arel/engines/sql/relations/writes.rb +41 -10
- data/lib/arel/session.rb +9 -6
- data/spec/arel/algebra/unit/predicates/binary_spec.rb +23 -21
- data/spec/arel/algebra/unit/predicates/equality_spec.rb +20 -18
- data/spec/arel/algebra/unit/predicates/in_spec.rb +7 -5
- data/spec/arel/algebra/unit/primitives/attribute_spec.rb +10 -12
- data/spec/arel/algebra/unit/primitives/expression_spec.rb +1 -1
- data/spec/arel/algebra/unit/primitives/value_spec.rb +1 -1
- data/spec/arel/algebra/unit/relations/alias_spec.rb +2 -2
- data/spec/arel/algebra/unit/relations/delete_spec.rb +1 -1
- data/spec/arel/algebra/unit/relations/group_spec.rb +1 -1
- data/spec/arel/algebra/unit/relations/insert_spec.rb +1 -1
- data/spec/arel/algebra/unit/relations/join_spec.rb +1 -1
- data/spec/arel/algebra/unit/relations/order_spec.rb +2 -2
- data/spec/arel/algebra/unit/relations/project_spec.rb +1 -1
- data/spec/arel/algebra/unit/relations/relation_spec.rb +5 -5
- data/spec/arel/algebra/unit/relations/skip_spec.rb +1 -1
- data/spec/arel/algebra/unit/relations/table_spec.rb +2 -2
- data/spec/arel/algebra/unit/relations/take_spec.rb +1 -1
- data/spec/arel/algebra/unit/relations/update_spec.rb +1 -1
- data/spec/arel/algebra/unit/relations/where_spec.rb +1 -1
- data/spec/arel/algebra/unit/session/session_spec.rb +1 -1
- data/spec/arel/engines/memory/integration/joins/cross_engine_spec.rb +3 -4
- data/spec/arel/engines/memory/unit/relations/array_spec.rb +1 -1
- data/spec/arel/engines/memory/unit/relations/insert_spec.rb +8 -8
- data/spec/arel/engines/memory/unit/relations/join_spec.rb +1 -1
- data/spec/arel/engines/memory/unit/relations/order_spec.rb +1 -1
- data/spec/arel/engines/memory/unit/relations/project_spec.rb +1 -1
- data/spec/arel/engines/memory/unit/relations/skip_spec.rb +1 -1
- data/spec/arel/engines/memory/unit/relations/take_spec.rb +1 -1
- data/spec/arel/engines/memory/unit/relations/where_spec.rb +1 -1
- data/spec/arel/engines/sql/integration/joins/with_adjacency_spec.rb +1 -1
- data/spec/arel/engines/sql/integration/joins/with_aggregations_spec.rb +1 -1
- data/spec/arel/engines/sql/integration/joins/with_compounds_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/engine_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/predicates/binary_spec.rb +73 -70
- data/spec/arel/engines/sql/unit/predicates/equality_spec.rb +45 -28
- data/spec/arel/engines/sql/unit/predicates/in_spec.rb +57 -55
- data/spec/arel/engines/sql/unit/predicates/predicates_spec.rb +48 -46
- data/spec/arel/engines/sql/unit/primitives/attribute_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/primitives/expression_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/primitives/literal_spec.rb +13 -1
- data/spec/arel/engines/sql/unit/primitives/value_spec.rb +3 -3
- data/spec/arel/engines/sql/unit/relations/alias_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/relations/delete_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/relations/group_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/relations/insert_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/relations/join_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/relations/order_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/relations/project_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/relations/skip_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/relations/table_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/relations/take_spec.rb +1 -1
- data/spec/arel/engines/sql/unit/relations/update_spec.rb +13 -7
- data/spec/arel/engines/sql/unit/relations/where_spec.rb +1 -1
- data/spec/connections/mysql_connection.rb +3 -3
- data/spec/connections/postgresql_connection.rb +2 -2
- data/spec/connections/sqlite3_connection.rb +3 -2
- data/spec/doubles/hash.rb +4 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_helper.rb +8 -0
- metadata +39 -25
- data/VERSION +0 -1
- data/lib/arel/algebra/extensions.rb +0 -4
- data/lib/arel/algebra/primitives.rb +0 -5
- data/lib/arel/engines/sql/extensions.rb +0 -4
@@ -3,10 +3,12 @@ module Arel
|
|
3
3
|
def relation
|
4
4
|
nil
|
5
5
|
end
|
6
|
-
|
6
|
+
|
7
7
|
def to_sql(formatter = nil)
|
8
8
|
self
|
9
9
|
end
|
10
|
+
|
11
|
+
include Attribute::Expressions
|
10
12
|
end
|
11
13
|
|
12
14
|
class Attribute
|
@@ -28,7 +30,13 @@ module Arel
|
|
28
30
|
end
|
29
31
|
|
30
32
|
class Value
|
31
|
-
|
33
|
+
def inclusion_predicate_sql
|
34
|
+
value.inclusion_predicate_sql
|
35
|
+
end
|
36
|
+
|
37
|
+
def equality_predicate_sql
|
38
|
+
value.equality_predicate_sql
|
39
|
+
end
|
32
40
|
|
33
41
|
def to_sql(formatter = Sql::WhereCondition.new(relation))
|
34
42
|
formatter.value value
|
@@ -5,15 +5,36 @@ module Arel
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def select_sql
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
(
|
12
|
-
("
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
if engine.adapter_name == "PostgreSQL" && !orders.blank? && using_distinct_on?
|
9
|
+
# PostgreSQL does not allow arbitrary ordering when using DISTINCT ON, so we work around this
|
10
|
+
# by wrapping the +sql+ string as a sub-select and ordering in that query.
|
11
|
+
order = order_clauses.join(', ').split(',').map { |s| s.strip }.reject(&:blank?)
|
12
|
+
order = order.zip((0...order.size).to_a).map { |s,i| "id_list.alias_#{i} #{'DESC' if s =~ /\bdesc$/i}" }.join(', ')
|
13
|
+
|
14
|
+
query = build_query \
|
15
|
+
"SELECT #{select_clauses.to_s}",
|
16
|
+
"FROM #{table_sql(Sql::TableReference.new(self))}",
|
17
|
+
(joins(self) unless joins(self).blank? ),
|
18
|
+
("WHERE #{where_clauses.join("\n\tAND ")}" unless wheres.blank? ),
|
19
|
+
("GROUP BY #{group_clauses.join(', ')}" unless groupings.blank? )
|
20
|
+
|
21
|
+
build_query \
|
22
|
+
"SELECT * FROM (#{query}) AS id_list",
|
23
|
+
"ORDER BY #{order}",
|
24
|
+
("LIMIT #{taken}" unless taken.blank? ),
|
25
|
+
("OFFSET #{skipped}" unless skipped.blank? )
|
26
|
+
|
27
|
+
else
|
28
|
+
build_query \
|
29
|
+
"SELECT #{select_clauses.join(', ')}",
|
30
|
+
"FROM #{table_sql(Sql::TableReference.new(self))}",
|
31
|
+
(joins(self) unless joins(self).blank? ),
|
32
|
+
("WHERE #{where_clauses.join("\n\tAND ")}" unless wheres.blank? ),
|
33
|
+
("GROUP BY #{group_clauses.join(', ')}" unless groupings.blank? ),
|
34
|
+
("ORDER BY #{order_clauses.join(', ')}" unless orders.blank? ),
|
35
|
+
("LIMIT #{taken}" unless taken.blank? ),
|
36
|
+
("OFFSET #{skipped}" unless skipped.blank? )
|
37
|
+
end
|
17
38
|
end
|
18
39
|
|
19
40
|
def inclusion_predicate_sql
|
@@ -46,5 +67,8 @@ module Arel
|
|
46
67
|
orders.collect { |o| o.to_sql(Sql::OrderClause.new(self)) }
|
47
68
|
end
|
48
69
|
|
70
|
+
def using_distinct_on?
|
71
|
+
select_clauses.any? { |x| x =~ /DISTINCT ON/ }
|
72
|
+
end
|
49
73
|
end
|
50
74
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Arel
|
2
2
|
class Deletion < Compound
|
3
|
-
def to_sql
|
3
|
+
def to_sql
|
4
4
|
build_query \
|
5
5
|
"DELETE",
|
6
6
|
"FROM #{table_sql}",
|
@@ -10,30 +10,61 @@ module Arel
|
|
10
10
|
end
|
11
11
|
|
12
12
|
class Insert < Compound
|
13
|
-
def to_sql
|
13
|
+
def to_sql
|
14
|
+
insertion_attributes_values_sql = if record.is_a?(Value)
|
15
|
+
record.value
|
16
|
+
else
|
17
|
+
build_query "(#{record.keys.collect { |key| engine.quote_column_name(key.name) }.join(', ')})",
|
18
|
+
"VALUES (#{record.collect { |key, value| key.format(value) }.join(', ')})"
|
19
|
+
end
|
20
|
+
|
14
21
|
build_query \
|
15
22
|
"INSERT",
|
16
23
|
"INTO #{table_sql}",
|
17
|
-
|
18
|
-
"VALUES (#{record.collect { |key, value| key.format(value) }.join(', ')})"
|
24
|
+
insertion_attributes_values_sql
|
19
25
|
end
|
20
26
|
end
|
21
27
|
|
22
28
|
class Update < Compound
|
23
|
-
def to_sql
|
29
|
+
def to_sql
|
24
30
|
build_query \
|
25
31
|
"UPDATE #{table_sql} SET",
|
26
32
|
assignment_sql,
|
27
|
-
|
28
|
-
("LIMIT #{taken}" unless taken.blank? )
|
33
|
+
build_update_conditions_sql
|
29
34
|
end
|
30
35
|
|
31
36
|
protected
|
32
37
|
|
33
38
|
def assignment_sql
|
34
|
-
assignments.collect
|
35
|
-
|
36
|
-
|
39
|
+
if assignments.respond_to?(:collect)
|
40
|
+
assignments.collect do |attribute, value|
|
41
|
+
"#{engine.quote_column_name(attribute.name)} = #{attribute.format(value)}"
|
42
|
+
end.join(",\n")
|
43
|
+
else
|
44
|
+
assignments.value
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def build_update_conditions_sql
|
49
|
+
conditions = ""
|
50
|
+
conditions << " WHERE #{wheres.collect(&:to_sql).join('\n\tAND ')}" unless wheres.blank?
|
51
|
+
conditions << " ORDER BY #{order_clauses.join(', ')}" unless orders.blank?
|
52
|
+
|
53
|
+
unless taken.blank?
|
54
|
+
conditions << " LIMIT #{taken}"
|
55
|
+
|
56
|
+
if engine.adapter_name != "MySQL"
|
57
|
+
begin
|
58
|
+
quote_primary_key = engine.quote_column_name(table.name.classify.constantize.primary_key)
|
59
|
+
rescue NameError
|
60
|
+
quote_primary_key = engine.quote_column_name("id")
|
61
|
+
end
|
62
|
+
|
63
|
+
conditions = "WHERE #{quote_primary_key} IN (SELECT #{quote_primary_key} FROM #{engine.connection.quote_table_name table.name} #{conditions})"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
conditions
|
37
68
|
end
|
38
69
|
end
|
39
70
|
end
|
data/lib/arel/session.rb
CHANGED
@@ -5,16 +5,22 @@ module Arel
|
|
5
5
|
alias_method :manufacture, :new
|
6
6
|
|
7
7
|
def start
|
8
|
-
if @started
|
8
|
+
if defined?(@started) && @started
|
9
9
|
yield
|
10
10
|
else
|
11
11
|
begin
|
12
12
|
@started = true
|
13
13
|
@instance = manufacture
|
14
|
-
metaclass.
|
14
|
+
metaclass.class_eval do
|
15
|
+
undef :new
|
16
|
+
alias_method :new, :instance
|
17
|
+
end
|
15
18
|
yield
|
16
19
|
ensure
|
17
|
-
metaclass.
|
20
|
+
metaclass.class_eval do
|
21
|
+
undef :new
|
22
|
+
alias_method :new, :manufacture
|
23
|
+
end
|
18
24
|
@started = false
|
19
25
|
end
|
20
26
|
end
|
@@ -24,7 +30,6 @@ module Arel
|
|
24
30
|
module CRUD
|
25
31
|
def create(insert)
|
26
32
|
insert.call
|
27
|
-
insert
|
28
33
|
end
|
29
34
|
|
30
35
|
def read(select)
|
@@ -35,12 +40,10 @@ module Arel
|
|
35
40
|
|
36
41
|
def update(update)
|
37
42
|
update.call
|
38
|
-
update
|
39
43
|
end
|
40
44
|
|
41
45
|
def delete(delete)
|
42
46
|
delete.call
|
43
|
-
delete
|
44
47
|
end
|
45
48
|
end
|
46
49
|
include CRUD
|
@@ -1,31 +1,33 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
module Arel
|
4
|
-
|
5
|
-
|
6
|
-
@relation = Table.new(:users)
|
7
|
-
@attribute1 = @relation[:id]
|
8
|
-
@attribute2 = @relation[:name]
|
9
|
-
class ConcreteBinary < Binary
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
describe '#bind' do
|
4
|
+
module Predicates
|
5
|
+
describe Binary do
|
14
6
|
before do
|
15
|
-
@
|
7
|
+
@relation = Table.new(:users)
|
8
|
+
@attribute1 = @relation[:id]
|
9
|
+
@attribute2 = @relation[:name]
|
10
|
+
class ConcreteBinary < Binary
|
11
|
+
end
|
16
12
|
end
|
17
13
|
|
18
|
-
describe '
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
describe '#bind' do
|
15
|
+
before do
|
16
|
+
@another_relation = @relation.alias
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'when both operands are attributes' do
|
20
|
+
it "manufactures an expression with the attributes bound to the relation" do
|
21
|
+
ConcreteBinary.new(@attribute1, @attribute2).bind(@another_relation). \
|
22
|
+
should == ConcreteBinary.new(@another_relation[@attribute1], @another_relation[@attribute2])
|
23
|
+
end
|
22
24
|
end
|
23
|
-
end
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
describe 'when an operand is a value' do
|
27
|
+
it "manufactures an expression with unmodified values" do
|
28
|
+
ConcreteBinary.new(@attribute1, "asdf").bind(@another_relation). \
|
29
|
+
should == ConcreteBinary.new(@attribute1.find_correlate_in(@another_relation), "asdf".find_correlate_in(@another_relation))
|
30
|
+
end
|
29
31
|
end
|
30
32
|
end
|
31
33
|
end
|
@@ -1,26 +1,28 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
module Arel
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
describe '==' do
|
13
|
-
it "obtains if attribute1 and attribute2 are identical" do
|
14
|
-
Equality.new(@attribute1, @attribute2).should == Equality.new(@attribute1, @attribute2)
|
15
|
-
Equality.new(@attribute1, @attribute2).should_not == Equality.new(@attribute1, @attribute1)
|
4
|
+
module Predicates
|
5
|
+
describe Equality do
|
6
|
+
before do
|
7
|
+
@relation1 = Table.new(:users)
|
8
|
+
@relation2 = Table.new(:photos)
|
9
|
+
@attribute1 = @relation1[:id]
|
10
|
+
@attribute2 = @relation2[:user_id]
|
16
11
|
end
|
17
12
|
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
describe '==' do
|
14
|
+
it "obtains if attribute1 and attribute2 are identical" do
|
15
|
+
check Equality.new(@attribute1, @attribute2).should == Equality.new(@attribute1, @attribute2)
|
16
|
+
Equality.new(@attribute1, @attribute2).should_not == Equality.new(@attribute1, @attribute1)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "obtains if the concrete type of the predicates are identical" do
|
20
|
+
Equality.new(@attribute1, @attribute2).should_not == Binary.new(@attribute1, @attribute2)
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
-
|
23
|
+
it "is commutative on the attributes" do
|
24
|
+
Equality.new(@attribute1, @attribute2).should == Equality.new(@attribute2, @attribute1)
|
25
|
+
end
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
@@ -1,10 +1,12 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
module Arel
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
module Predicates
|
5
|
+
describe In do
|
6
|
+
before do
|
7
|
+
@relation = Table.new(:users)
|
8
|
+
@attribute = @relation[:id]
|
9
|
+
end
|
8
10
|
end
|
9
11
|
end
|
10
12
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
module Arel
|
4
4
|
describe Attribute do
|
@@ -73,10 +73,8 @@ module Arel
|
|
73
73
|
|
74
74
|
describe 'when dividing two matching attributes' do
|
75
75
|
it 'returns a the highest score for the most similar attributes' do
|
76
|
-
(@aliased_relation[:id] / @relation[:id])
|
77
|
-
|
78
|
-
(@aliased_relation[:id] / @relation[:id]) \
|
79
|
-
.should < (@aliased_relation[:id] / @aliased_relation[:id])
|
76
|
+
check((@aliased_relation[:id] / @relation[:id]).should == (@aliased_relation[:id] / @relation[:id]))
|
77
|
+
(@aliased_relation[:id] / @relation[:id]).should < (@aliased_relation[:id] / @aliased_relation[:id])
|
80
78
|
end
|
81
79
|
end
|
82
80
|
end
|
@@ -89,43 +87,43 @@ module Arel
|
|
89
87
|
|
90
88
|
describe '#eq' do
|
91
89
|
it "manufactures an equality predicate" do
|
92
|
-
@attribute.eq('name').should == Equality.new(@attribute, 'name')
|
90
|
+
@attribute.eq('name').should == Predicates::Equality.new(@attribute, 'name')
|
93
91
|
end
|
94
92
|
end
|
95
93
|
|
96
94
|
describe '#lt' do
|
97
95
|
it "manufactures a less-than predicate" do
|
98
|
-
@attribute.lt(10).should == LessThan.new(@attribute, 10)
|
96
|
+
@attribute.lt(10).should == Predicates::LessThan.new(@attribute, 10)
|
99
97
|
end
|
100
98
|
end
|
101
99
|
|
102
100
|
describe '#lteq' do
|
103
101
|
it "manufactures a less-than or equal-to predicate" do
|
104
|
-
@attribute.lteq(10).should == LessThanOrEqualTo.new(@attribute, 10)
|
102
|
+
@attribute.lteq(10).should == Predicates::LessThanOrEqualTo.new(@attribute, 10)
|
105
103
|
end
|
106
104
|
end
|
107
105
|
|
108
106
|
describe '#gt' do
|
109
107
|
it "manufactures a greater-than predicate" do
|
110
|
-
@attribute.gt(10).should == GreaterThan.new(@attribute, 10)
|
108
|
+
@attribute.gt(10).should == Predicates::GreaterThan.new(@attribute, 10)
|
111
109
|
end
|
112
110
|
end
|
113
111
|
|
114
112
|
describe '#gteq' do
|
115
113
|
it "manufactures a greater-than or equal-to predicate" do
|
116
|
-
@attribute.gteq(10).should == GreaterThanOrEqualTo.new(@attribute, 10)
|
114
|
+
@attribute.gteq(10).should == Predicates::GreaterThanOrEqualTo.new(@attribute, 10)
|
117
115
|
end
|
118
116
|
end
|
119
117
|
|
120
118
|
describe '#matches' do
|
121
119
|
it "manufactures a match predicate" do
|
122
|
-
@attribute.matches(/.*/).should == Match.new(@attribute, /.*/)
|
120
|
+
@attribute.matches(/.*/).should == Predicates::Match.new(@attribute, /.*/)
|
123
121
|
end
|
124
122
|
end
|
125
123
|
|
126
124
|
describe '#in' do
|
127
125
|
it "manufactures an in predicate" do
|
128
|
-
@attribute.in(1..30).should == In.new(@attribute, (1..30))
|
126
|
+
@attribute.in(1..30).should == Predicates::In.new(@attribute, (1..30))
|
129
127
|
end
|
130
128
|
end
|
131
129
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
module Arel
|
4
4
|
describe Alias do
|
@@ -8,7 +8,7 @@ module Arel
|
|
8
8
|
|
9
9
|
describe '==' do
|
10
10
|
it "obtains if the objects are the same" do
|
11
|
-
Alias.new(@relation).should_not == Alias.new(@relation)
|
11
|
+
check Alias.new(@relation).should_not == Alias.new(@relation)
|
12
12
|
(aliaz = Alias.new(@relation)).should == aliaz
|
13
13
|
end
|
14
14
|
end
|