diff options
-rw-r--r-- | spec/active_relation/unit/relations/relation_spec.rb | 1 | ||||
-rw-r--r-- | spec/active_relation/unit/relations/update_spec.rb | 2 | ||||
-rw-r--r-- | spec/doubles/database.rb | 47 | ||||
-rw-r--r-- | spec/doubles/hash.rb | 23 | ||||
-rw-r--r-- | spec/fakes/database.rb | 48 | ||||
-rw-r--r-- | spec/spec_helper.rb | 17 |
6 files changed, 77 insertions, 61 deletions
diff --git a/spec/active_relation/unit/relations/relation_spec.rb b/spec/active_relation/unit/relations/relation_spec.rb index c40974e136..0509c19c94 100644 --- a/spec/active_relation/unit/relations/relation_spec.rb +++ b/spec/active_relation/unit/relations/relation_spec.rb @@ -201,7 +201,6 @@ module ActiveRelation describe Relation::Enumerable do it "implements enumerable" do @relation.collect.should == @relation.session.read(@relation) - @relation.first.should == @relation.session.read(@relation).first end end diff --git a/spec/active_relation/unit/relations/update_spec.rb b/spec/active_relation/unit/relations/update_spec.rb index 24beb315e5..29dd4e12dd 100644 --- a/spec/active_relation/unit/relations/update_spec.rb +++ b/spec/active_relation/unit/relations/update_spec.rb @@ -5,7 +5,7 @@ module ActiveRelation before do @relation = Table.new(:users) end - + describe '#to_sql' do it "manufactures sql updating attributes when given multiple attributes" do Update.new(@relation, @relation[:id] => 1, @relation[:name] => "nick").to_sql.should be_like(" diff --git a/spec/doubles/database.rb b/spec/doubles/database.rb new file mode 100644 index 0000000000..cc44596690 --- /dev/null +++ b/spec/doubles/database.rb @@ -0,0 +1,47 @@ +module Fake + class Engine + def connection + @conn ||= Connection.new + end + end + + class Connection + include ActiveRecord::ConnectionAdapters::Quoting + + def columns(table_name, comment) + { "users" => + [ + Column.new("id", :integer), + Column.new("name", :string) + ], + "photos" => + [ + Column.new("id", :integer), + Column.new("user_id", :integer), + Column.new("camera_id", :integer) + ] + }[table_name] + end + + def select_all(*args) + [] + end + + def quote_column_name(column_name) + "`#{column_name}`" + end + + def quote_table_name(table_name) + "`#{table_name}`" + end + end + + class Column + attr_reader :name, :type + + def initialize(name, type) + @name = name + @type = type + end + end +end
\ No newline at end of file diff --git a/spec/doubles/hash.rb b/spec/doubles/hash.rb new file mode 100644 index 0000000000..97d25742cb --- /dev/null +++ b/spec/doubles/hash.rb @@ -0,0 +1,23 @@ +class Hash + def ordered_array + to_a.sort { |(key1, value1), (key2, value2)| key1.hash <=> key2.hash } + end + + def keys + ordered_array.collect(&:first) + end + + def values + ordered_array.collect { |_, v| v } + end + + def each(&block) + ordered_array.each(&block) + end + + def shift + returning to_a.first do |k, v| + delete(k) + end + end +end diff --git a/spec/fakes/database.rb b/spec/fakes/database.rb deleted file mode 100644 index 1b73986e0b..0000000000 --- a/spec/fakes/database.rb +++ /dev/null @@ -1,48 +0,0 @@ -class FakeDatabase - def self.connection - @@conn ||= FakeConnection.new - end -end - -class FakeConnection - include ActiveRecord::ConnectionAdapters::Quoting - - def columns(table_name, comment) - case table_name - when "users" - [ - FakeColumn.new("id", :integer), - FakeColumn.new("name", :string) - ] - when "photos" - [ - FakeColumn.new("id", :integer), - FakeColumn.new("user_id", :integer), - FakeColumn.new("camera_id", :integer) - ] - else - raise "unknown table: #{table_name}" - end - end - - def select_all(*args) - [] - end - - def quote_column_name(column_name) - "`#{column_name}`" - end - - def quote_table_name(table_name) - "`#{table_name}`" - end -end - -class FakeColumn - attr_reader :name, :type - - def initialize(name, type) - @name = name - @type = type - end -end
\ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index af4e71d2d3..6180f822bd 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,25 +1,20 @@ +dir = File.dirname(__FILE__) +$LOAD_PATH.unshift "#{dir}/../lib" + require 'rubygems' require 'spec' require 'pp' require 'fileutils' -dir = File.dirname(__FILE__) -$LOAD_PATH.unshift "#{dir}/../lib" -Dir["#{dir}/matchers/*"].each { |m| require "#{dir}/matchers/#{File.basename(m)}" } require 'active_relation' -require "#{dir}/fakes/database" -class Hash - def shift - returning to_a.sort { |(key1, value1), (key2, value2)| key1.hash <=> key2.hash }.shift do |key, _| - delete(key) - end - end +[:matchers, :doubles].each do |helper| + Dir["#{dir}/#{helper}/*"].each { |m| require "#{dir}/#{helper}/#{File.basename(m)}" } end Spec::Runner.configure do |config| config.include(BeLikeMatcher, HashTheSameAsMatcher) config.mock_with :rr config.before do - ActiveRelation::Table.engine = ActiveRelation::Engine.new(FakeDatabase) + ActiveRelation::Table.engine = ActiveRelation::Engine.new(Fake::Engine.new) end end
\ No newline at end of file |