diff options
author | Nick Kallen <nkallen@nick-kallens-computer-2.local> | 2008-01-01 16:44:33 -0800 |
---|---|---|
committer | Nick Kallen <nkallen@nick-kallens-computer-2.local> | 2008-01-01 16:44:33 -0800 |
commit | 6c89e3818d85e3169a7fb8de27b25357c2259881 (patch) | |
tree | 2ffe9fbe8765239733a864646ce71f9551736151 /spec/sql_builder | |
parent | 0496a59e1fe0caf2d295defb588a00460cf15efb (diff) | |
download | rails-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.rb | 18 | ||||
-rw-r--r-- | spec/sql_builder/select_builder_spec.rb | 170 |
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 |