From 976999cb980eb47ac5f297de043e2ed55248c2a5 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Mon, 9 Nov 2009 19:24:40 -0500 Subject: Ruby 1.9: the constants must be qualified --- spec/arel/algebra/unit/predicates/binary_spec.rb | 2 +- spec/arel/algebra/unit/predicates/equality_spec.rb | 4 ++-- spec/arel/engines/sql/unit/predicates/binary_spec.rb | 2 +- spec/arel/engines/sql/unit/predicates/equality_spec.rb | 4 ++-- spec/arel/engines/sql/unit/predicates/in_spec.rb | 2 +- spec/arel/engines/sql/unit/predicates/predicates_spec.rb | 6 +++--- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/spec/arel/algebra/unit/predicates/binary_spec.rb b/spec/arel/algebra/unit/predicates/binary_spec.rb index be4c1ac738..051aeeeb6e 100644 --- a/spec/arel/algebra/unit/predicates/binary_spec.rb +++ b/spec/arel/algebra/unit/predicates/binary_spec.rb @@ -4,7 +4,7 @@ module Arel module Predicates describe Binary do before do - @relation = Table.new(:users) + @relation = Arel::Table.new(:users) @attribute1 = @relation[:id] @attribute2 = @relation[:name] class ConcreteBinary < Binary diff --git a/spec/arel/algebra/unit/predicates/equality_spec.rb b/spec/arel/algebra/unit/predicates/equality_spec.rb index cfd04cd90c..7d1d79ff35 100644 --- a/spec/arel/algebra/unit/predicates/equality_spec.rb +++ b/spec/arel/algebra/unit/predicates/equality_spec.rb @@ -4,8 +4,8 @@ module Arel module Predicates describe Equality do before do - @relation1 = Table.new(:users) - @relation2 = Table.new(:photos) + @relation1 = Arel::Table.new(:users) + @relation2 = Arel::Table.new(:photos) @attribute1 = @relation1[:id] @attribute2 = @relation2[:user_id] end diff --git a/spec/arel/engines/sql/unit/predicates/binary_spec.rb b/spec/arel/engines/sql/unit/predicates/binary_spec.rb index 23bce54792..08f3310f8e 100644 --- a/spec/arel/engines/sql/unit/predicates/binary_spec.rb +++ b/spec/arel/engines/sql/unit/predicates/binary_spec.rb @@ -10,7 +10,7 @@ module Arel end before do - @relation = Table.new(:users) + @relation = Arel::Table.new(:users) @attribute1 = @relation[:id] @attribute2 = @relation[:name] end diff --git a/spec/arel/engines/sql/unit/predicates/equality_spec.rb b/spec/arel/engines/sql/unit/predicates/equality_spec.rb index 4004bb5881..7a5cb42c85 100644 --- a/spec/arel/engines/sql/unit/predicates/equality_spec.rb +++ b/spec/arel/engines/sql/unit/predicates/equality_spec.rb @@ -4,8 +4,8 @@ module Arel module Predicates describe Equality do before do - @relation1 = Table.new(:users) - @relation2 = Table.new(:photos) + @relation1 = Arel::Table.new(:users) + @relation2 = Arel::Table.new(:photos) @attribute1 = @relation1[:id] @attribute2 = @relation2[:user_id] end diff --git a/spec/arel/engines/sql/unit/predicates/in_spec.rb b/spec/arel/engines/sql/unit/predicates/in_spec.rb index bb00733e60..691abcb2d2 100644 --- a/spec/arel/engines/sql/unit/predicates/in_spec.rb +++ b/spec/arel/engines/sql/unit/predicates/in_spec.rb @@ -4,7 +4,7 @@ module Arel module Predicates describe In do before do - @relation = Table.new(:users) + @relation = Arel::Table.new(:users) @attribute = @relation[:id] end diff --git a/spec/arel/engines/sql/unit/predicates/predicates_spec.rb b/spec/arel/engines/sql/unit/predicates/predicates_spec.rb index 7d53351546..81c348357c 100644 --- a/spec/arel/engines/sql/unit/predicates/predicates_spec.rb +++ b/spec/arel/engines/sql/unit/predicates/predicates_spec.rb @@ -4,11 +4,11 @@ module Arel module Predicates describe Predicate do before do - @relation = Table.new(:users) + @relation = Arel::Table.new(:users) @attribute1 = @relation[:id] @attribute2 = @relation[:name] - @operand1 = Equality.new(@attribute1, 1) - @operand2 = Equality.new(@attribute2, "name") + @operand1 = Arel::Predicates::Equality.new(@attribute1, 1) + @operand2 = Arel::Predicates::Equality.new(@attribute2, "name") end describe "when being combined with another predicate with AND logic" do -- cgit v1.2.3 From 130188e67ce76e4ced60dc0331d2ac5bba6cdb74 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Mon, 9 Nov 2009 19:31:53 -0500 Subject: Switch from rr to RSpec mocks. rr has issues on 1.9.2pre --- spec/arel/algebra/unit/relations/relation_spec.rb | 6 +++--- spec/arel/algebra/unit/session/session_spec.rb | 10 +++++----- spec/arel/engines/sql/unit/relations/table_spec.rb | 4 ++-- spec/spec_helper.rb | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/spec/arel/algebra/unit/relations/relation_spec.rb b/spec/arel/algebra/unit/relations/relation_spec.rb index 35ce8bf1fb..6bd7970e3f 100644 --- a/spec/arel/algebra/unit/relations/relation_spec.rb +++ b/spec/arel/algebra/unit/relations/relation_spec.rb @@ -150,7 +150,7 @@ module Arel describe '#delete' do it 'manufactures a deletion relation' do Session.start do - mock(Session.new).delete(Deletion.new(@relation)) + Session.new.should_receive(:delete).with(Deletion.new(@relation)) @relation.delete end end @@ -160,7 +160,7 @@ module Arel it 'manufactures an insertion relation' do Session.start do record = { @relation[:name] => 'carl' } - mock(Session.new).create(Insert.new(@relation, record)) + Session.new.should_receive(:create).with(Insert.new(@relation, record)) @relation.insert(record) end end @@ -170,7 +170,7 @@ module Arel it 'manufactures an update relation' do Session.start do assignments = { @relation[:name] => Value.new('bob', @relation) } - mock(Session.new).update(Update.new(@relation, assignments)) + Session.new.should_receive(:update).with(Update.new(@relation, assignments)) @relation.update(assignments) end end diff --git a/spec/arel/algebra/unit/session/session_spec.rb b/spec/arel/algebra/unit/session/session_spec.rb index 03aab6a03f..0553a140ec 100644 --- a/spec/arel/algebra/unit/session/session_spec.rb +++ b/spec/arel/algebra/unit/session/session_spec.rb @@ -40,19 +40,19 @@ module Arel describe '#create' do it "executes an insertion on the connection" do - mock(@insert).call + @insert.should_receive(:call) @session.create(@insert) end end describe '#read' do it "executes an selection on the connection" do - mock(@read).call + @read.should_receive(:call) @session.read(@read) end it "is memoized" do - mock(@read).call.once + @read.should_receive(:call).once @session.read(@read) @session.read(@read) end @@ -60,14 +60,14 @@ module Arel describe '#update' do it "executes an update on the connection" do - mock(@update).call + @update.should_receive(:call) @session.update(@update) end end describe '#delete' do it "executes a delete on the connection" do - mock(@delete).call + @delete.should_receive(:call) @session.delete(@delete) end end diff --git a/spec/arel/engines/sql/unit/relations/table_spec.rb b/spec/arel/engines/sql/unit/relations/table_spec.rb index 26b9364929..92e4549028 100644 --- a/spec/arel/engines/sql/unit/relations/table_spec.rb +++ b/spec/arel/engines/sql/unit/relations/table_spec.rb @@ -42,8 +42,8 @@ module Arel describe '#reset' do it "reloads columns from the database" do - lambda { stub(@relation.engine).columns { [] } }.should_not change { @relation.attributes } - lambda { @relation.reset }.should change { @relation.attributes } + lambda { @relation.engine.stub!(:columns => []) }.should_not change { @relation.attributes } + lambda { @relation.reset }.should change { @relation.attributes } end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 7d61fc9120..6d99fa4038 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -48,7 +48,7 @@ Spec::Runner.configure do |config| config.include BeLikeMatcher, HashTheSameAsMatcher, DisambiguateAttributesMatcher config.include AdapterGuards config.include Check - config.mock_with :rr + config.before do Arel::Table.engine = Arel::Sql::Engine.new(ActiveRecord::Base) end -- cgit v1.2.3 From 2eea340b2269aab85cead2a5e024d6ff9abd6c91 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Mon, 9 Nov 2009 19:37:00 -0500 Subject: Ruby 1.9: Improve the way we spec this --- spec/arel/algebra/unit/relations/relation_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/arel/algebra/unit/relations/relation_spec.rb b/spec/arel/algebra/unit/relations/relation_spec.rb index 6bd7970e3f..cf6509fe6a 100644 --- a/spec/arel/algebra/unit/relations/relation_spec.rb +++ b/spec/arel/algebra/unit/relations/relation_spec.rb @@ -180,8 +180,8 @@ module Arel describe Relation::Enumerable do it "implements enumerable" do - check @relation.collect.should == @relation.session.read(@relation).collect - @relation.first.should == @relation.session.read(@relation).first + @relation.map { |value| value }.should == + @relation.session.read(@relation).map { |value| value } end end end -- cgit v1.2.3 From 34e35c7cbc9f378564bf1dd0d6d29553dc59534e Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Mon, 9 Nov 2009 19:38:44 -0500 Subject: Rake check_dependencies is dead. Don't try to run it --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index e1557bda70..fba44e620f 100644 --- a/Rakefile +++ b/Rakefile @@ -36,7 +36,7 @@ else end desc "Run specs with mysql and sqlite3 database adapters (default)" - task :spec => ["check_dependencies", "spec:sqlite3", "spec:mysql", "spec:postgresql"] + task :spec => ["spec:sqlite3", "spec:mysql", "spec:postgresql"] desc "Default task is to run specs" task :default => :spec -- cgit v1.2.3 From 4dcfe6786e5fe72c27cadc5c0ee18aa6a67ba2bd Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Mon, 9 Nov 2009 19:49:51 -0500 Subject: Ruby 1.9: Sort attributes deterministically so specs always pass --- lib/arel/engines/sql/relations/writes.rb | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/arel/engines/sql/relations/writes.rb b/lib/arel/engines/sql/relations/writes.rb index 42496ef735..50fcb8e07e 100644 --- a/lib/arel/engines/sql/relations/writes.rb +++ b/lib/arel/engines/sql/relations/writes.rb @@ -14,8 +14,19 @@ module Arel insertion_attributes_values_sql = if record.is_a?(Value) record.value else - build_query "(#{record.keys.collect { |key| engine.quote_column_name(key.name) }.join(', ')})", - "VALUES (#{record.collect { |key, value| key.format(value) }.join(', ')})" + attributes = record.keys.sort_by do |attribute| + attribute.name.to_s + end + + first = attributes.collect do |key| + engine.quote_column_name(key.name) + end.join(', ') + + second = attributes.collect do |key| + key.format(record[key]) + end.join(', ') + + build_query "(#{first})", "VALUES (#{second})" end build_query \ @@ -37,7 +48,12 @@ module Arel def assignment_sql if assignments.respond_to?(:collect) - assignments.collect do |attribute, value| + attributes = assignments.keys.sort_by do |attribute| + attribute.name.to_s + end + + attributes.map do |attribute| + value = assignments[attribute] "#{engine.quote_column_name(attribute.name)} = #{attribute.format(value)}" end.join(",\n") else -- cgit v1.2.3