aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/active_relation/predicates/binary_predicate_spec.rb28
-rw-r--r--spec/active_relation/predicates/equality_predicate_spec.rb18
-rw-r--r--spec/active_relation/predicates/relation_inclusion_predicate_spec.rb12
-rw-r--r--spec/active_relation/relations/attribute_spec.rb30
-rw-r--r--spec/active_relation/relations/deletion_relation_spec.rb8
-rw-r--r--spec/active_relation/relations/insertion_relation_spec.rb10
-rw-r--r--spec/active_relation/relations/join_operation_spec.rb39
-rw-r--r--spec/active_relation/relations/join_relation_spec.rb20
-rw-r--r--spec/active_relation/relations/order_relation_spec.rb12
-rw-r--r--spec/active_relation/relations/projection_relation_spec.rb18
-rw-r--r--spec/active_relation/relations/range_relation_spec.rb8
-rw-r--r--spec/active_relation/relations/relation_spec.rb40
-rw-r--r--spec/active_relation/relations/rename_relation_spec.rb16
-rw-r--r--spec/active_relation/relations/selection_relation_spec.rb22
-rw-r--r--spec/active_relation/relations/table_relation_spec.rb8
15 files changed, 127 insertions, 162 deletions
diff --git a/spec/active_relation/predicates/binary_predicate_spec.rb b/spec/active_relation/predicates/binary_predicate_spec.rb
index 0bddae8491..02c72ef96d 100644
--- a/spec/active_relation/predicates/binary_predicate_spec.rb
+++ b/spec/active_relation/predicates/binary_predicate_spec.rb
@@ -1,12 +1,12 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe BinaryPredicate do
+describe ActiveRelation::Predicates::Binary do
before do
- @relation1 = TableRelation.new(:foo)
- @relation2 = TableRelation.new(:bar)
- @attribute1 = Attribute.new(@relation1, :name1)
- @attribute2 = Attribute.new(@relation2, :name2)
- class ConcreteBinaryPredicate < BinaryPredicate
+ @relation1 = ActiveRelation::Relations::Table.new(:foo)
+ @relation2 = ActiveRelation::Relations::Table.new(:bar)
+ @attribute1 = ActiveRelation::Primitives::Attribute.new(@relation1, :name1)
+ @attribute2 = ActiveRelation::Primitives::Attribute.new(@relation2, :name2)
+ class ActiveRelation::Predicates::ConcreteBinary < ActiveRelation::Predicates::Binary
def predicate_sql
"<=>"
end
@@ -15,26 +15,26 @@ describe BinaryPredicate do
describe '==' do
it "obtains if attribute1 and attribute2 are identical" do
- BinaryPredicate.new(@attribute1, @attribute2).should == BinaryPredicate.new(@attribute1, @attribute2)
- BinaryPredicate.new(@attribute1, @attribute2).should_not == BinaryPredicate.new(@attribute1, @attribute1)
+ ActiveRelation::Predicates::Binary.new(@attribute1, @attribute2).should == ActiveRelation::Predicates::Binary.new(@attribute1, @attribute2)
+ ActiveRelation::Predicates::Binary.new(@attribute1, @attribute2).should_not == ActiveRelation::Predicates::Binary.new(@attribute1, @attribute1)
end
- it "obtains if the concrete type of the BinaryPredicates are identical" do
- ConcreteBinaryPredicate.new(@attribute1, @attribute2).should == ConcreteBinaryPredicate.new(@attribute1, @attribute2)
- BinaryPredicate.new(@attribute1, @attribute2).should_not == ConcreteBinaryPredicate.new(@attribute1, @attribute2)
+ it "obtains if the concrete type of the ActiveRelation::Predicates::Binarys are identical" do
+ ActiveRelation::Predicates::Binary.new(@attribute1, @attribute2).should == ActiveRelation::Predicates::Binary.new(@attribute1, @attribute2)
+ ActiveRelation::Predicates::Binary.new(@attribute1, @attribute2).should_not == ActiveRelation::Predicates::ConcreteBinary.new(@attribute1, @attribute2)
end
end
describe '#qualify' do
it "distributes over the predicates and attributes" do
- ConcreteBinaryPredicate.new(@attribute1, @attribute2).qualify. \
- should == ConcreteBinaryPredicate.new(@attribute1.qualify, @attribute2.qualify)
+ ActiveRelation::Predicates::ConcreteBinary.new(@attribute1, @attribute2).qualify. \
+ should == ActiveRelation::Predicates::ConcreteBinary.new(@attribute1.qualify, @attribute2.qualify)
end
end
describe '#to_sql' do
it 'manufactures correct sql' do
- ConcreteBinaryPredicate.new(@attribute1, @attribute2).to_sql.should be_like("""
+ ActiveRelation::Predicates::ConcreteBinary.new(@attribute1, @attribute2).to_sql.should be_like("""
`foo`.`name1` <=> `bar`.`name2`
""")
end
diff --git a/spec/active_relation/predicates/equality_predicate_spec.rb b/spec/active_relation/predicates/equality_predicate_spec.rb
index af43b754e0..b3c7b597a0 100644
--- a/spec/active_relation/predicates/equality_predicate_spec.rb
+++ b/spec/active_relation/predicates/equality_predicate_spec.rb
@@ -1,25 +1,25 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe EqualityPredicate do
+describe ActiveRelation::Predicates::Equality do
before do
- @relation1 = TableRelation.new(:foo)
- @relation2 = TableRelation.new(:bar)
- @attribute1 = Attribute.new(@relation1, :name)
- @attribute2 = Attribute.new(@relation2, :name)
+ @relation1 = ActiveRelation::Relations::Table.new(:foo)
+ @relation2 = ActiveRelation::Relations::Table.new(:bar)
+ @attribute1 = ActiveRelation::Primitives::Attribute.new(@relation1, :name)
+ @attribute2 = ActiveRelation::Primitives::Attribute.new(@relation2, :name)
end
describe '==' do
it "obtains if attribute1 and attribute2 are identical" do
- EqualityPredicate.new(@attribute1, @attribute2).should == EqualityPredicate.new(@attribute1, @attribute2)
- EqualityPredicate.new(@attribute1, @attribute2).should_not == EqualityPredicate.new(@attribute1, @attribute1)
+ ActiveRelation::Predicates::Equality.new(@attribute1, @attribute2).should == ActiveRelation::Predicates::Equality.new(@attribute1, @attribute2)
+ ActiveRelation::Predicates::Equality.new(@attribute1, @attribute2).should_not == ActiveRelation::Predicates::Equality.new(@attribute1, @attribute1)
end
it "obtains if the concrete type of the predicates are identical" do
- EqualityPredicate.new(@attribute1, @attribute2).should_not == BinaryPredicate.new(@attribute1, @attribute2)
+ ActiveRelation::Predicates::Equality.new(@attribute1, @attribute2).should_not == ActiveRelation::Predicates::Binary.new(@attribute1, @attribute2)
end
it "is commutative on the attributes" do
- EqualityPredicate.new(@attribute1, @attribute2).should == EqualityPredicate.new(@attribute2, @attribute1)
+ ActiveRelation::Predicates::Equality.new(@attribute1, @attribute2).should == ActiveRelation::Predicates::Equality.new(@attribute2, @attribute1)
end
end
end \ No newline at end of file
diff --git a/spec/active_relation/predicates/relation_inclusion_predicate_spec.rb b/spec/active_relation/predicates/relation_inclusion_predicate_spec.rb
index f8c911429b..a01f4fb76b 100644
--- a/spec/active_relation/predicates/relation_inclusion_predicate_spec.rb
+++ b/spec/active_relation/predicates/relation_inclusion_predicate_spec.rb
@@ -1,16 +1,16 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe RelationInclusionPredicate do
+describe ActiveRelation::Predicates::RelationInclusion do
before do
- @relation1 = TableRelation.new(:foo)
- @relation2 = TableRelation.new(:bar)
+ @relation1 = ActiveRelation::Relations::Table.new(:foo)
+ @relation2 = ActiveRelation::Relations::Table.new(:bar)
@attribute = @relation1[:baz]
end
- describe RelationInclusionPredicate, '==' do
+ describe ActiveRelation::Predicates::RelationInclusion, '==' do
it "obtains if attribute1 and attribute2 are identical" do
- RelationInclusionPredicate.new(@attribute, @relation1).should == RelationInclusionPredicate.new(@attribute, @relation1)
- RelationInclusionPredicate.new(@attribute, @relation1).should_not == RelationInclusionPredicate.new(@attribute, @relation2)
+ ActiveRelation::Predicates::RelationInclusion.new(@attribute, @relation1).should == ActiveRelation::Predicates::RelationInclusion.new(@attribute, @relation1)
+ ActiveRelation::Predicates::RelationInclusion.new(@attribute, @relation1).should_not == ActiveRelation::Predicates::RelationInclusion.new(@attribute, @relation2)
end
end
end \ No newline at end of file
diff --git a/spec/active_relation/relations/attribute_spec.rb b/spec/active_relation/relations/attribute_spec.rb
index 4154a91b85..71bba26aff 100644
--- a/spec/active_relation/relations/attribute_spec.rb
+++ b/spec/active_relation/relations/attribute_spec.rb
@@ -1,14 +1,14 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe Attribute do
+describe ActiveRelation::Primitives::Attribute do
before do
- @relation1 = TableRelation.new(:foo)
- @relation2 = TableRelation.new(:bar)
+ @relation1 = ActiveRelation::Relations::Table.new(:foo)
+ @relation2 = ActiveRelation::Relations::Table.new(:bar)
end
describe '#alias' do
it "manufactures an aliased attributed" do
- @relation1[:id].alias(:alias).should == Attribute.new(@relation1, :id, :alias)
+ @relation1[:id].alias(:alias).should == ActiveRelation::Primitives::Attribute.new(@relation1, :id, :alias)
end
end
@@ -26,51 +26,51 @@ describe Attribute do
describe '#eql?' do
it "obtains if the relation and attribute name are identical" do
- Attribute.new(@relation1, :name).should be_eql(Attribute.new(@relation1, :name))
- Attribute.new(@relation1, :name).should_not be_eql(Attribute.new(@relation1, :another_name))
- Attribute.new(@relation1, :name).should_not be_eql(Attribute.new(@relation2, :name))
+ ActiveRelation::Primitives::Attribute.new(@relation1, :name).should be_eql(ActiveRelation::Primitives::Attribute.new(@relation1, :name))
+ ActiveRelation::Primitives::Attribute.new(@relation1, :name).should_not be_eql(ActiveRelation::Primitives::Attribute.new(@relation1, :another_name))
+ ActiveRelation::Primitives::Attribute.new(@relation1, :name).should_not be_eql(ActiveRelation::Primitives::Attribute.new(@relation2, :name))
end
end
describe 'predications' do
before do
- @attribute1 = Attribute.new(@relation1, :name)
- @attribute2 = Attribute.new(@relation2, :name)
+ @attribute1 = ActiveRelation::Primitives::Attribute.new(@relation1, :name)
+ @attribute2 = ActiveRelation::Primitives::Attribute.new(@relation2, :name)
end
describe '==' do
it "manufactures an equality predicate" do
- (@attribute1 == @attribute2).should == EqualityPredicate.new(@attribute1, @attribute2)
+ (@attribute1 == @attribute2).should == ActiveRelation::Predicates::Equality.new(@attribute1, @attribute2)
end
end
describe '<' do
it "manufactures a less-than predicate" do
- (@attribute1 < @attribute2).should == LessThanPredicate.new(@attribute1, @attribute2)
+ (@attribute1 < @attribute2).should == ActiveRelation::Predicates::LessThan.new(@attribute1, @attribute2)
end
end
describe '<=' do
it "manufactures a less-than or equal-to predicate" do
- (@attribute1 <= @attribute2).should == LessThanOrEqualToPredicate.new(@attribute1, @attribute2)
+ (@attribute1 <= @attribute2).should == ActiveRelation::Predicates::LessThanOrEqualTo.new(@attribute1, @attribute2)
end
end
describe '>' do
it "manufactures a greater-than predicate" do
- (@attribute1 > @attribute2).should == GreaterThanPredicate.new(@attribute1, @attribute2)
+ (@attribute1 > @attribute2).should == ActiveRelation::Predicates::GreaterThan.new(@attribute1, @attribute2)
end
end
describe '>=' do
it "manufactures a greater-than or equal to predicate" do
- (@attribute1 >= @attribute2).should == GreaterThanOrEqualToPredicate.new(@attribute1, @attribute2)
+ (@attribute1 >= @attribute2).should == ActiveRelation::Predicates::GreaterThanOrEqualTo.new(@attribute1, @attribute2)
end
end
describe '=~' do
it "manufactures a match predicate" do
- (@attribute1 =~ /.*/).should == MatchPredicate.new(@attribute1, @attribute2)
+ (@attribute1 =~ /.*/).should == ActiveRelation::Predicates::Match.new(@attribute1, @attribute2)
end
end
end
diff --git a/spec/active_relation/relations/deletion_relation_spec.rb b/spec/active_relation/relations/deletion_relation_spec.rb
index 5e8c5137b2..b80589bde6 100644
--- a/spec/active_relation/relations/deletion_relation_spec.rb
+++ b/spec/active_relation/relations/deletion_relation_spec.rb
@@ -1,20 +1,20 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe DeletionRelation do
+describe ActiveRelation::Relations::Deletion do
before do
- @relation = TableRelation.new(:users)
+ @relation = ActiveRelation::Relations::Table.new(:users)
end
describe '#to_sql' do
it 'manufactures sql deleting a table relation' do
- DeletionRelation.new(@relation).to_sql.should be_like("""
+ ActiveRelation::Relations::Deletion.new(@relation).to_sql.should be_like("""
DELETE
FROM `users`
""")
end
it 'manufactures sql deleting a selection relation' do
- DeletionRelation.new(@relation.select(@relation[:id] == 1)).to_sql.should be_like("""
+ ActiveRelation::Relations::Deletion.new(@relation.select(@relation[:id] == 1)).to_sql.should be_like("""
DELETE
FROM `users`
WHERE `users`.`id` = 1
diff --git a/spec/active_relation/relations/insertion_relation_spec.rb b/spec/active_relation/relations/insertion_relation_spec.rb
index 177918a94a..da39edf773 100644
--- a/spec/active_relation/relations/insertion_relation_spec.rb
+++ b/spec/active_relation/relations/insertion_relation_spec.rb
@@ -1,13 +1,13 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe InsertionRelation do
+describe ActiveRelation::Relations::Insertion do
before do
- @relation = TableRelation.new(:users)
+ @relation = ActiveRelation::Relations::Table.new(:users)
end
describe '#to_sql' do
it 'manufactures sql inserting the data for one item' do
- InsertionRelation.new(@relation, @relation[:name] => "nick").to_sql.should be_like("""
+ ActiveRelation::Relations::Insertion.new(@relation, @relation[:name] => "nick").to_sql.should be_like("""
INSERT
INTO `users`
(`users`.`name`) VALUES ('nick')
@@ -15,8 +15,8 @@ describe InsertionRelation do
end
it 'manufactures sql inserting the data for multiple items' do
- nested_insertion = InsertionRelation.new(@relation, @relation[:name] => "cobra")
- InsertionRelation.new(nested_insertion, nested_insertion[:name] => "commander").to_sql.should be_like("""
+ nested_insertion = ActiveRelation::Relations::Insertion.new(@relation, @relation[:name] => "cobra")
+ ActiveRelation::Relations::Insertion.new(nested_insertion, nested_insertion[:name] => "commander").to_sql.should be_like("""
INSERT
INTO `users`
(`users`.`name`) VALUES ('cobra'), ('commander')
diff --git a/spec/active_relation/relations/join_operation_spec.rb b/spec/active_relation/relations/join_operation_spec.rb
deleted file mode 100644
index a8ab85123b..0000000000
--- a/spec/active_relation/relations/join_operation_spec.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-
-describe 'between two relations' do
- before do
- @relation1 = TableRelation.new(:foo)
- @relation2 = TableRelation.new(:bar)
- end
-
- describe '==' do
- it "obtains if the relations of both joins are identical" do
- JoinOperation.new(@relation1, @relation2).should == JoinOperation.new(@relation1, @relation2)
- JoinOperation.new(@relation1, @relation2).should_not == JoinOperation.new(@relation1, @relation1)
- end
-
- it "is commutative on the relations" do
- JoinOperation.new(@relation1, @relation2).should == JoinOperation.new(@relation2, @relation1)
- end
- end
-
- describe 'on' do
- before do
- @predicate = Predicate.new
- @join_operation = JoinOperation.new(@relation1, @relation2)
- class << @join_operation
- def relation_class
- JoinRelation
- end
- end
- end
-
- it "manufactures a join relation of the appropriate type" do
- @join_operation.on(@predicate).should == JoinRelation.new(@relation1, @relation2, @predicate)
- end
-
- it "accepts arbitrary strings" do
- @join_operation.on("arbitrary").should == JoinRelation.new(@relation1, @relation2, "arbitrary")
- end
- end
-end \ No newline at end of file
diff --git a/spec/active_relation/relations/join_relation_spec.rb b/spec/active_relation/relations/join_relation_spec.rb
index 3e60cc4c34..32771428a8 100644
--- a/spec/active_relation/relations/join_relation_spec.rb
+++ b/spec/active_relation/relations/join_relation_spec.rb
@@ -1,27 +1,27 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe JoinRelation do
+describe ActiveRelation::Relations::Join do
before do
- @relation1 = TableRelation.new(:foo)
- @relation2 = TableRelation.new(:bar)
- @predicate = EqualityPredicate.new(@relation1[:id], @relation2[:id])
+ @relation1 = ActiveRelation::Relations::Table.new(:foo)
+ @relation2 = ActiveRelation::Relations::Table.new(:bar)
+ @predicate = ActiveRelation::Predicates::Equality.new(@relation1[:id], @relation2[:id])
end
describe '==' do
it 'obtains if the two relations and the predicate are identical' do
- JoinRelation.new(@relation1, @relation2, @predicate).should == JoinRelation.new(@relation1, @relation2, @predicate)
- JoinRelation.new(@relation1, @relation2, @predicate).should_not == JoinRelation.new(@relation1, @relation1, @predicate)
+ ActiveRelation::Relations::Join.new("INNER JOIN", @relation1, @relation2, @predicate).should == ActiveRelation::Relations::Join.new("INNER JOIN", @relation1, @relation2, @predicate)
+ ActiveRelation::Relations::Join.new("INNER JOIN", @relation1, @relation2, @predicate).should_not == ActiveRelation::Relations::Join.new("INNER JOIN", @relation1, @relation1, @predicate)
end
it 'is commutative on the relations' do
- JoinRelation.new(@relation1, @relation2, @predicate).should == JoinRelation.new(@relation2, @relation1, @predicate)
+ ActiveRelation::Relations::Join.new("INNER JOIN", @relation1, @relation2, @predicate).should == ActiveRelation::Relations::Join.new("INNER JOIN", @relation2, @relation1, @predicate)
end
end
describe '#qualify' do
it 'distributes over the relations and predicates' do
- InnerJoinRelation.new(@relation1, @relation2, @predicate).qualify. \
- should == InnerJoinRelation.new(@relation1.qualify, @relation2.qualify, @predicate.qualify)
+ ActiveRelation::Relations::Join.new("INNER JOIN", @relation1, @relation2, @predicate).qualify. \
+ should == ActiveRelation::Relations::Join.new("INNER JOIN", @relation1.qualify, @relation2.qualify, @predicate.qualify)
end
end
@@ -31,7 +31,7 @@ describe JoinRelation do
end
it 'manufactures sql joining the two tables on the predicate, merging the selects' do
- InnerJoinRelation.new(@relation1, @relation2, @predicate).to_sql.should be_like("""
+ ActiveRelation::Relations::Join.new("INNER JOIN", @relation1, @relation2, @predicate).to_sql.should be_like("""
SELECT `foo`.`name`, `foo`.`id`, `bar`.`name`, `bar`.`foo_id`, `bar`.`id`
FROM `foo`
INNER JOIN `bar` ON `foo`.`id` = `bar`.`id`
diff --git a/spec/active_relation/relations/order_relation_spec.rb b/spec/active_relation/relations/order_relation_spec.rb
index 8655780c37..edf2faf455 100644
--- a/spec/active_relation/relations/order_relation_spec.rb
+++ b/spec/active_relation/relations/order_relation_spec.rb
@@ -1,23 +1,23 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe OrderRelation do
+describe ActiveRelation::Relations::Order do
before do
- @relation1 = TableRelation.new(:foo)
- @relation2 = TableRelation.new(:bar)
+ @relation1 = ActiveRelation::Relations::Table.new(:foo)
+ @relation2 = ActiveRelation::Relations::Table.new(:bar)
@attribute1 = @relation1[:id]
@attribute2 = @relation2[:id]
end
describe '#qualify' do
it "distributes over the relation and attributes" do
- OrderRelation.new(@relation1, @attribute1).qualify. \
- should == OrderRelation.new(@relation1.qualify, @attribute1.qualify)
+ ActiveRelation::Relations::Order.new(@relation1, @attribute1).qualify. \
+ should == ActiveRelation::Relations::Order.new(@relation1.qualify, @attribute1.qualify)
end
end
describe '#to_sql' do
it "manufactures sql with an order clause" do
- OrderRelation.new(@relation1, @attribute1).to_sql.should be_like("""
+ ActiveRelation::Relations::Order.new(@relation1, @attribute1).to_sql.should be_like("""
SELECT `foo`.`name`, `foo`.`id`
FROM `foo`
ORDER BY `foo`.`id`
diff --git a/spec/active_relation/relations/projection_relation_spec.rb b/spec/active_relation/relations/projection_relation_spec.rb
index 77722a17c5..8ba571e06c 100644
--- a/spec/active_relation/relations/projection_relation_spec.rb
+++ b/spec/active_relation/relations/projection_relation_spec.rb
@@ -1,31 +1,31 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe ProjectionRelation do
+describe ActiveRelation::Relations::Projection do
before do
- @relation1 = TableRelation.new(:foo)
- @relation2 = TableRelation.new(:bar)
+ @relation1 = ActiveRelation::Relations::Table.new(:foo)
+ @relation2 = ActiveRelation::Relations::Table.new(:bar)
@attribute1 = @relation1[:id]
@attribute2 = @relation2[:id]
end
describe '==' do
it "obtains if the relations and attributes are identical" do
- ProjectionRelation.new(@relation1, @attribute1, @attribute2).should == ProjectionRelation.new(@relation1, @attribute1, @attribute2)
- ProjectionRelation.new(@relation1, @attribute1).should_not == ProjectionRelation.new(@relation2, @attribute1)
- ProjectionRelation.new(@relation1, @attribute1).should_not == ProjectionRelation.new(@relation1, @attribute2)
+ ActiveRelation::Relations::Projection.new(@relation1, @attribute1, @attribute2).should == ActiveRelation::Relations::Projection.new(@relation1, @attribute1, @attribute2)
+ ActiveRelation::Relations::Projection.new(@relation1, @attribute1).should_not == ActiveRelation::Relations::Projection.new(@relation2, @attribute1)
+ ActiveRelation::Relations::Projection.new(@relation1, @attribute1).should_not == ActiveRelation::Relations::Projection.new(@relation1, @attribute2)
end
end
describe '#qualify' do
it "distributes over teh relation and attributes" do
- ProjectionRelation.new(@relation1, @attribute1).qualify. \
- should == ProjectionRelation.new(@relation1.qualify, @attribute1.qualify)
+ ActiveRelation::Relations::Projection.new(@relation1, @attribute1).qualify. \
+ should == ActiveRelation::Relations::Projection.new(@relation1.qualify, @attribute1.qualify)
end
end
describe '#to_sql' do
it "manufactures sql with a limited select clause" do
- ProjectionRelation.new(@relation1, @attribute1).to_sql.should be_like("""
+ ActiveRelation::Relations::Projection.new(@relation1, @attribute1).to_sql.should be_like("""
SELECT `foo`.`id`
FROM `foo`
""")
diff --git a/spec/active_relation/relations/range_relation_spec.rb b/spec/active_relation/relations/range_relation_spec.rb
index 67e2b0d164..d4107259aa 100644
--- a/spec/active_relation/relations/range_relation_spec.rb
+++ b/spec/active_relation/relations/range_relation_spec.rb
@@ -1,9 +1,9 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe RangeRelation do
+describe ActiveRelation::Relations::Range do
before do
- @relation1 = TableRelation.new(:foo)
- @relation2 = TableRelation.new(:bar)
+ @relation1 = ActiveRelation::Relations::Table.new(:foo)
+ @relation2 = ActiveRelation::Relations::Table.new(:bar)
@range1 = 1..2
@range2 = 4..9
end
@@ -18,7 +18,7 @@ describe RangeRelation do
it "manufactures sql with limit and offset" do
range_size = @range2.last - @range2.first + 1
range_start = @range2.first
- RangeRelation.new(@relation1, @range2).to_s.should be_like("""
+ ActiveRelation::Relations::Range.new(@relation1, @range2).to_s.should be_like("""
SELECT `foo`.`name`, `foo`.`id`
FROM `foo`
LIMIT #{range_size}
diff --git a/spec/active_relation/relations/relation_spec.rb b/spec/active_relation/relations/relation_spec.rb
index 5d7c40a530..caee3bb527 100644
--- a/spec/active_relation/relations/relation_spec.rb
+++ b/spec/active_relation/relations/relation_spec.rb
@@ -1,40 +1,44 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe Relation do
+describe ActiveRelation::Relations::Base do
before do
- @relation1 = TableRelation.new(:foo)
- @relation2 = TableRelation.new(:bar)
- @attribute1 = Attribute.new(@relation1, :id)
- @attribute2 = Attribute.new(@relation1, :name)
+ @relation1 = ActiveRelation::Relations::Table.new(:foo)
+ @relation2 = ActiveRelation::Relations::Table.new(:bar)
+ @attribute1 = ActiveRelation::Primitives::Attribute.new(@relation1, :id)
+ @attribute2 = ActiveRelation::Primitives::Attribute.new(@relation1, :name)
end
describe '[]' do
it "manufactures an attribute when given a symbol" do
- @relation1[:id].should be_kind_of(Attribute)
+ @relation1[:id].should == ActiveRelation::Primitives::Attribute.new(@relation1, :id)
end
it "manufactures a range relation when given a range" do
- @relation1[1..2].should be_kind_of(RangeRelation)
+ @relation1[1..2].should == ActiveRelation::Relations::Range.new(@relation1, 1..2)
end
end
describe '#include?' do
it "manufactures an inclusion predicate" do
- @relation1.include?(@attribute1).should be_kind_of(RelationInclusionPredicate)
+ @relation1.include?(@attribute1).should be_kind_of(ActiveRelation::Predicates::RelationInclusion)
end
end
describe 'read operations' do
describe 'joins' do
+ before do
+ @predicate = @relation1[:id] == @relation2[:id]
+ end
+
describe '<=>' do
it "manufactures an inner join operation between those two relations" do
- (@relation1 <=> @relation2).should be_kind_of(InnerJoinOperation)
+ (@relation1 <=> @relation2).on(@predicate).should == ActiveRelation::Relations::Join.new("INNER JOIN", @relation1, @relation2, @predicate)
end
end
describe '<<' do
it "manufactures a left outer join operation between those two relations" do
- (@relation1 << @relation2).should be_kind_of(LeftOuterJoinOperation)
+ (@relation1 << @relation2).on(@predicate).should == ActiveRelation::Relations::Join.new("LEFT OUTER JOIN", @relation1, @relation2, @predicate)
end
end
end
@@ -45,33 +49,33 @@ describe Relation do
end
it "manufactures a projection relation" do
- @relation1.project(@attribute1, @attribute2).should be_kind_of(ProjectionRelation)
+ @relation1.project(@attribute1, @attribute2).should be_kind_of(ActiveRelation::Relations::Projection)
end
end
describe '#rename' do
it "manufactures a rename relation" do
- @relation1.rename(@attribute1, :foo).should be_kind_of(RenameRelation)
+ @relation1.rename(@attribute1, :foo).should be_kind_of(ActiveRelation::Relations::Rename)
end
end
describe '#select' do
before do
- @predicate = EqualityPredicate.new(@attribute1, @attribute2)
+ @predicate = ActiveRelation::Predicates::Equality.new(@attribute1, @attribute2)
end
it "manufactures a selection relation" do
- @relation1.select(@predicate).should be_kind_of(SelectionRelation)
+ @relation1.select(@predicate).should be_kind_of(ActiveRelation::Relations::Selection)
end
it "accepts arbitrary strings" do
- @relation1.select("arbitrary").should be_kind_of(SelectionRelation)
+ @relation1.select("arbitrary").should be_kind_of(ActiveRelation::Relations::Selection)
end
end
describe '#order' do
it "manufactures an order relation" do
- @relation1.order(@attribute1, @attribute2).should be_kind_of(OrderRelation)
+ @relation1.order(@attribute1, @attribute2).should be_kind_of(ActiveRelation::Relations::Order)
end
end
end
@@ -79,13 +83,13 @@ describe Relation do
describe 'write operations' do
describe '#delete' do
it 'manufactures a deletion relation' do
- @relation1.delete.should be_kind_of(DeletionRelation)
+ @relation1.delete.should be_kind_of(ActiveRelation::Relations::Deletion)
end
end
describe '#insert' do
it 'manufactures an insertion relation' do
- @relation1.insert(record = {:id => 1}).should be_kind_of(InsertionRelation)
+ @relation1.insert(record = {:id => 1}).should be_kind_of(ActiveRelation::Relations::Insertion)
end
end
end
diff --git a/spec/active_relation/relations/rename_relation_spec.rb b/spec/active_relation/relations/rename_relation_spec.rb
index 664e9c6145..6fac206ff1 100644
--- a/spec/active_relation/relations/rename_relation_spec.rb
+++ b/spec/active_relation/relations/rename_relation_spec.rb
@@ -1,15 +1,15 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe RenameRelation do
+describe ActiveRelation::Relations::Rename do
before do
- @relation = TableRelation.new(:foo)
- @renamed_relation = RenameRelation.new(@relation, @relation[:id] => :schmid)
+ @relation = ActiveRelation::Relations::Table.new(:foo)
+ @renamed_relation = ActiveRelation::Relations::Rename.new(@relation, @relation[:id] => :schmid)
end
describe '#initialize' do
it "manufactures nested rename relations if multiple renames are provided" do
- RenameRelation.new(@relation, @relation[:id] => :humpty, @relation[:name] => :dumpty). \
- should == RenameRelation.new(RenameRelation.new(@relation, @relation[:id] => :humpty), @relation[:name] => :dumpty)
+ ActiveRelation::Relations::Rename.new(@relation, @relation[:id] => :humpty, @relation[:name] => :dumpty). \
+ should == ActiveRelation::Relations::Rename.new(ActiveRelation::Relations::Rename.new(@relation, @relation[:id] => :humpty), @relation[:name] => :dumpty)
end
it "raises an exception if the alias provided is already used" do
@@ -25,7 +25,7 @@ describe RenameRelation do
describe '#attributes' do
it "manufactures a list of attributes with the renamed attribute aliased" do
- RenameRelation.new(@relation, @relation[:id] => :schmid).attributes.should ==
+ ActiveRelation::Relations::Rename.new(@relation, @relation[:id] => :schmid).attributes.should ==
(@relation.attributes - [@relation[:id]]) + [@relation[:id].alias(:schmid)]
end
end
@@ -45,8 +45,8 @@ describe RenameRelation do
describe '#qualify' do
it "distributes over the relation and renames" do
- RenameRelation.new(@relation, @relation[:id] => :schmid).qualify. \
- should == RenameRelation.new(@relation.qualify, @relation[:id].qualify => :schmid)
+ ActiveRelation::Relations::Rename.new(@relation, @relation[:id] => :schmid).qualify. \
+ should == ActiveRelation::Relations::Rename.new(@relation.qualify, @relation[:id].qualify => :schmid)
end
end
diff --git a/spec/active_relation/relations/selection_relation_spec.rb b/spec/active_relation/relations/selection_relation_spec.rb
index ac1f227c67..90dc3169b6 100644
--- a/spec/active_relation/relations/selection_relation_spec.rb
+++ b/spec/active_relation/relations/selection_relation_spec.rb
@@ -1,30 +1,30 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe SelectionRelation do
+describe ActiveRelation::Relations::Selection do
before do
- @relation1 = TableRelation.new(:foo)
- @relation2 = TableRelation.new(:bar)
- @predicate1 = EqualityPredicate.new(@relation1[:id], @relation2[:foo_id])
- @predicate2 = LessThanPredicate.new(@relation1[:age], 2)
+ @relation1 = ActiveRelation::Relations::Table.new(:foo)
+ @relation2 = ActiveRelation::Relations::Table.new(:bar)
+ @predicate1 = ActiveRelation::Predicates::Equality.new(@relation1[:id], @relation2[:foo_id])
+ @predicate2 = ActiveRelation::Predicates::LessThan.new(@relation1[:age], 2)
end
describe '#initialize' do
it "manufactures nested selection relations if multiple predicates are provided" do
- SelectionRelation.new(@relation1, @predicate1, @predicate2). \
- should == SelectionRelation.new(SelectionRelation.new(@relation1, @predicate2), @predicate1)
+ ActiveRelation::Relations::Selection.new(@relation1, @predicate1, @predicate2). \
+ should == ActiveRelation::Relations::Selection.new(ActiveRelation::Relations::Selection.new(@relation1, @predicate2), @predicate1)
end
end
describe '#qualify' do
it "distributes over the relation and predicates" do
- SelectionRelation.new(@relation1, @predicate1).qualify. \
- should == SelectionRelation.new(@relation1.qualify, @predicate1.qualify)
+ ActiveRelation::Relations::Selection.new(@relation1, @predicate1).qualify. \
+ should == ActiveRelation::Relations::Selection.new(@relation1.qualify, @predicate1.qualify)
end
end
describe '#to_sql' do
it "manufactures sql with where clause conditions" do
- SelectionRelation.new(@relation1, @predicate1).to_sql.should be_like("""
+ ActiveRelation::Relations::Selection.new(@relation1, @predicate1).to_sql.should be_like("""
SELECT `foo`.`name`, `foo`.`id`
FROM `foo`
WHERE `foo`.`id` = `bar`.`foo_id`
@@ -32,7 +32,7 @@ describe SelectionRelation do
end
it "allows arbitrary sql" do
- SelectionRelation.new(@relation1, "asdf").to_sql.should be_like("""
+ ActiveRelation::Relations::Selection.new(@relation1, "asdf").to_sql.should be_like("""
SELECT `foo`.`name`, `foo`.`id`
FROM `foo`
WHERE asdf
diff --git a/spec/active_relation/relations/table_relation_spec.rb b/spec/active_relation/relations/table_relation_spec.rb
index 79e9610e1b..62b8e44980 100644
--- a/spec/active_relation/relations/table_relation_spec.rb
+++ b/spec/active_relation/relations/table_relation_spec.rb
@@ -1,8 +1,8 @@
require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
-describe TableRelation do
+describe ActiveRelation::Relations::Table do
before do
- @relation = TableRelation.new(:users)
+ @relation = ActiveRelation::Relations::Table.new(:users)
end
describe '#to_sql' do
@@ -22,8 +22,8 @@ describe TableRelation do
describe '#qualify' do
it 'manufactures a rename relation with all attribute names qualified' do
- @relation.qualify.should == RenameRelation.new(
- RenameRelation.new(@relation, @relation[:id] => 'users.id'), @relation[:name] => 'users.name'
+ @relation.qualify.should == ActiveRelation::Relations::Rename.new(
+ ActiveRelation::Relations::Rename.new(@relation, @relation[:id] => 'users.id'), @relation[:name] => 'users.name'
)
end
end