aboutsummaryrefslogtreecommitdiffstats
path: root/spec/sql_builder
diff options
context:
space:
mode:
authorNick Kallen <nkallen@nick-kallens-computer-2.local>2008-01-01 16:44:33 -0800
committerNick Kallen <nkallen@nick-kallens-computer-2.local>2008-01-01 16:44:33 -0800
commit6c89e3818d85e3169a7fb8de27b25357c2259881 (patch)
tree2ffe9fbe8765239733a864646ce71f9551736151 /spec/sql_builder
parent0496a59e1fe0caf2d295defb588a00460cf15efb (diff)
downloadrails-6c89e3818d85e3169a7fb8de27b25357c2259881.tar.gz
rails-6c89e3818d85e3169a7fb8de27b25357c2259881.tar.bz2
rails-6c89e3818d85e3169a7fb8de27b25357c2259881.zip
integration test
Diffstat (limited to 'spec/sql_builder')
-rw-r--r--spec/sql_builder/conditions_spec.rb18
-rw-r--r--spec/sql_builder/select_builder_spec.rb170
2 files changed, 188 insertions, 0 deletions
diff --git a/spec/sql_builder/conditions_spec.rb b/spec/sql_builder/conditions_spec.rb
new file mode 100644
index 0000000000..78590e2631
--- /dev/null
+++ b/spec/sql_builder/conditions_spec.rb
@@ -0,0 +1,18 @@
+require File.join(File.dirname(__FILE__), '..', 'spec_helper')
+
+describe ConditionsBuilder do
+ describe '#to_s' do
+ describe 'with aliased columns' do
+ it 'manufactures correct sql' do
+ ConditionsBuilder.new do
+ equals do
+ column(:a, :b)
+ column(:c, :d, :e)
+ end
+ end.to_s.should be_like("""
+ a.b = e
+ """)
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/spec/sql_builder/select_builder_spec.rb b/spec/sql_builder/select_builder_spec.rb
new file mode 100644
index 0000000000..39597b0392
--- /dev/null
+++ b/spec/sql_builder/select_builder_spec.rb
@@ -0,0 +1,170 @@
+require File.join(File.dirname(__FILE__), '..', 'spec_helper')
+
+describe SelectBuilder do
+ describe '#to_s' do
+ describe 'with select and from clauses' do
+ it 'manufactures correct sql' do
+ SelectBuilder.new do
+ select do
+ all
+ end
+ from :users
+ end.to_s.should be_like("""
+ SELECT *
+ FROM users
+ """)
+ end
+ end
+
+ describe 'with specified columns and column aliases' do
+ it 'manufactures correct sql' do
+ SelectBuilder.new do
+ select do
+ column(:a, :b, :c)
+ column(:e, :f)
+ end
+ from :users
+ end.to_s.should be_like("""
+ SELECT a.b AS c, e.f
+ FROM users
+ """)
+ end
+ end
+
+ describe 'with where clause' do
+ it 'manufactures correct sql' do
+ SelectBuilder.new do
+ select do
+ all
+ end
+ from :users
+ where do
+ equals do
+ value :a
+ column :b, :c
+ end
+ end
+ end.to_s.should be_like("""
+ SELECT *
+ FROM users
+ WHERE a = b.c
+ """)
+ end
+ end
+
+ describe 'with inner join' do
+ it 'manufactures correct sql' do
+ SelectBuilder.new do
+ select do
+ all
+ end
+ from :users do
+ inner_join(:friendships) do
+ equals do
+ value :id
+ value :user_id
+ end
+ end
+ end
+ end.to_s.should be_like("""
+ SELECT *
+ FROM users INNER JOIN friendships ON id = user_id
+ """)
+ end
+ end
+
+ describe 'with order' do
+ it 'manufactures correct sql' do
+ SelectBuilder.new do
+ select do
+ all
+ end
+ from :users
+ order_by do
+ column :users, :id
+ column :users, :created_at, :alias
+ end
+ end.to_s.should be_like("""
+ SELECT *
+ FROM users
+ ORDER BY users.id, alias
+ """)
+ end
+ end
+
+ describe 'with limit and/or offset' do
+ it 'manufactures correct sql' do
+ SelectBuilder.new do
+ select do
+ all
+ end
+ from :users
+ limit 10
+ offset 10
+ end.to_s.should be_like("""
+ SELECT *
+ FROM users
+ LIMIT 10
+ OFFSET 10
+ """)
+ end
+ end
+
+ describe 'repeated clauses' do
+ describe 'with repeating joins' do
+ it 'manufactures correct sql' do
+ SelectBuilder.new do
+ select do
+ all
+ end
+ from :users do
+ inner_join(:friendships) do
+ equals do
+ value :id
+ value :user_id
+ end
+ end
+ end
+ inner_join(:pictures) do
+ equals do
+ value :id
+ value :user_id
+ end
+ end
+ end.to_s.should be_like("""
+ SELECT *
+ FROM users INNER JOIN friendships ON id = user_id INNER JOIN pictures ON id = user_id
+ """)
+ end
+ end
+
+ describe 'with repeating wheres' do
+ it 'manufactures correct sql' do
+ SelectBuilder.new do
+ select do
+ all
+ end
+ from :users
+ where do
+ equals do
+ value :a
+ value :b
+ end
+ end
+ where do
+ equals do
+ value :b
+ value :c
+ end
+ end
+ end.to_s.should be_like("""
+ SELECT *
+ FROM users
+ WHERE a = b
+ AND b = c
+ """)
+ end
+ end
+ end
+ end
+end \ No newline at end of file