aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorBryan Helmkamp <bryan@brynary.com>2009-05-17 14:58:46 -0400
committerBryan Helmkamp <bryan@brynary.com>2009-05-17 14:58:46 -0400
commit4e3c9a01307339916f6b947d24f19b0f442afd78 (patch)
tree21d75fb31b0c920deaeb8eb0d8c71e84525dca50 /spec
parent437429764510338bdc5f4915286425f07565a573 (diff)
downloadrails-4e3c9a01307339916f6b947d24f19b0f442afd78.tar.gz
rails-4e3c9a01307339916f6b947d24f19b0f442afd78.tar.bz2
rails-4e3c9a01307339916f6b947d24f19b0f442afd78.zip
most in memory operations save join and group
Conflicts: lib/arel/algebra/extensions/object.rb lib/arel/algebra/primitives/value.rb lib/arel/engines/memory/relations.rb lib/arel/engines/sql/formatters.rb lib/arel/engines/sql/primitives.rb spec/arel/unit/relations/alias_spec.rb spec/arel/unit/relations/array_spec.rb spec/arel/unit/relations/order_spec.rb
Diffstat (limited to 'spec')
-rw-r--r--spec/arel/unit/relations/alias_spec.rb4
-rw-r--r--spec/arel/unit/relations/array_spec.rb75
-rw-r--r--spec/arel/unit/relations/order_spec.rb12
3 files changed, 72 insertions, 19 deletions
diff --git a/spec/arel/unit/relations/alias_spec.rb b/spec/arel/unit/relations/alias_spec.rb
index 570f315892..63c15cfeff 100644
--- a/spec/arel/unit/relations/alias_spec.rb
+++ b/spec/arel/unit/relations/alias_spec.rb
@@ -30,7 +30,7 @@ module Arel
FROM `users`
WHERE `users`.`id` = 1
GROUP BY `users`.`id`
- ORDER BY `users`.`id`
+ ORDER BY `users`.`id` ASC
})
end
@@ -40,7 +40,7 @@ module Arel
FROM "users"
WHERE "users"."id" = 1
GROUP BY "users"."id"
- ORDER BY "users"."id"
+ ORDER BY "users"."id" ASC
})
end
end
diff --git a/spec/arel/unit/relations/array_spec.rb b/spec/arel/unit/relations/array_spec.rb
index c90843cd7d..d1c65c60a9 100644
--- a/spec/arel/unit/relations/array_spec.rb
+++ b/spec/arel/unit/relations/array_spec.rb
@@ -3,13 +3,18 @@ require File.join(File.dirname(__FILE__), '..', '..', '..', 'spec_helper')
module Arel
describe Array do
before do
- @relation = Array.new([[1], [2], [3]], [:id])
+ @relation = Array.new([
+ [1, 'duck' ],
+ [2, 'duck' ],
+ [3, 'goose']
+ ], [:id, :name])
end
describe '#attributes' do
it 'manufactures attributes corresponding to the names given on construction' do
@relation.attributes.should == [
- Attribute.new(@relation, :id)
+ Attribute.new(@relation, :id),
+ Attribute.new(@relation, :name)
]
end
end
@@ -17,17 +22,65 @@ module Arel
describe '#call' do
it "manufactures an array of hashes of attributes to values" do
@relation.call.should == [
- { @relation[:id] => 1 },
- { @relation[:id] => 2 },
- { @relation[:id] => 3 }
+ { @relation[:id] => 1, @relation[:name] => 'duck' },
+ { @relation[:id] => 2, @relation[:name] => 'duck' },
+ { @relation[:id] => 3, @relation[:name] => 'goose' }
]
end
-
- it '' do
- @relation.where(@relation[:id].lt(3)).call.should == [
- { @relation[:id] => 1 },
- { @relation[:id] => 2 }
- ]
+
+ describe 'where' do
+ it 'filters the relation with the provided predicate' do
+ @relation.where(@relation[:id].lt(3)).call.should == [
+ { @relation[:id] => 1, @relation[:name] => 'duck' },
+ { @relation[:id] => 2, @relation[:name] => 'duck' }
+ ]
+ end
+ end
+
+ describe 'group' do
+ it 'sorts the relation with the provided ordering' do
+ end
+ end
+
+ describe 'order' do
+ it 'sorts the relation with the provided ordering' do
+ @relation.order(@relation[:id].desc).call.should == [
+ { @relation[:id] => 3, @relation[:name] => 'goose' },
+ { @relation[:id] => 2, @relation[:name] => 'duck' },
+ { @relation[:id] => 1, @relation[:name] => 'duck' }
+ ]
+ end
+ end
+
+ describe 'project' do
+ it 'projects' do
+ @relation.project(@relation[:id]).call.should == [
+ { @relation[:id] => 1 },
+ { @relation[:id] => 2 },
+ { @relation[:id] => 3 }
+ ]
+ end
+ end
+
+ describe 'skip' do
+ it 'slices' do
+ @relation.skip(1).call.should == [
+ { @relation[:id] => 2, @relation[:name] => 'duck' },
+ { @relation[:id] => 3, @relation[:name] => 'goose' }
+ ]
+ end
+ end
+
+ describe 'take' do
+ it 'dices' do
+ @relation.take(2).call.should == [
+ { @relation[:id] => 1, @relation[:name] => 'duck' },
+ { @relation[:id] => 2, @relation[:name] => 'duck' }
+ ]
+ end
+ end
+
+ describe 'join' do
end
end
end
diff --git a/spec/arel/unit/relations/order_spec.rb b/spec/arel/unit/relations/order_spec.rb
index 31014ddd39..cb0f1de84c 100644
--- a/spec/arel/unit/relations/order_spec.rb
+++ b/spec/arel/unit/relations/order_spec.rb
@@ -16,7 +16,7 @@ module Arel
sql.should be_like(%Q{
SELECT `users`.`id`, `users`.`name`
FROM `users`
- ORDER BY `users`.`id`
+ ORDER BY `users`.`id` ASC
})
end
@@ -24,7 +24,7 @@ module Arel
sql.should be_like(%Q{
SELECT "users"."id", "users"."name"
FROM "users"
- ORDER BY "users"."id"
+ ORDER BY "users"."id" ASC
})
end
end
@@ -42,7 +42,7 @@ module Arel
sql.should be_like(%Q{
SELECT `users`.`id`, `users`.`name`
FROM `users`
- ORDER BY `users`.`id`, `users`.`name`
+ ORDER BY `users`.`id` ASC, `users`.`name` ASC
})
end
@@ -50,7 +50,7 @@ module Arel
sql.should be_like(%Q{
SELECT "users"."id", "users"."name"
FROM "users"
- ORDER BY "users"."id", "users"."name"
+ ORDER BY "users"."id" ASC, "users"."name" ASC
})
end
end
@@ -95,7 +95,7 @@ module Arel
sql.should be_like(%Q{
SELECT `users`.`id`, `users`.`name`
FROM `users`
- ORDER BY `users`.`name`, `users`.`id`
+ ORDER BY `users`.`name` ASC, `users`.`id` ASC
})
end
@@ -103,7 +103,7 @@ module Arel
sql.should be_like(%Q{
SELECT "users"."id", "users"."name"
FROM "users"
- ORDER BY "users"."name", "users"."id"
+ ORDER BY "users"."name" ASC, "users"."id" ASC
})
end
end