diff options
| author | Aaron Patterson <aaron.patterson@gmail.com> | 2011-02-04 13:34:41 -0800 | 
|---|---|---|
| committer | Aaron Patterson <aaron.patterson@gmail.com> | 2011-02-04 13:34:57 -0800 | 
| commit | df077604865b12b119be0259575675f45b958524 (patch) | |
| tree | 2c9bc66fe3e966160414b13aec03cd1ce1cff89a /activerecord/test | |
| parent | adbae9aab8a439a824cf1612febb5918d0f4cf87 (diff) | |
| download | rails-df077604865b12b119be0259575675f45b958524.tar.gz rails-df077604865b12b119be0259575675f45b958524.tar.bz2 rails-df077604865b12b119be0259575675f45b958524.zip | |
introduce a fake AR adapter for mocking database return values
Diffstat (limited to 'activerecord/test')
| -rw-r--r-- | activerecord/test/active_record/connection_adapters/fake_adapter.rb | 36 | ||||
| -rw-r--r-- | activerecord/test/models/contact.rb | 12 | 
2 files changed, 43 insertions, 5 deletions
| diff --git a/activerecord/test/active_record/connection_adapters/fake_adapter.rb b/activerecord/test/active_record/connection_adapters/fake_adapter.rb new file mode 100644 index 0000000000..1c2942170e --- /dev/null +++ b/activerecord/test/active_record/connection_adapters/fake_adapter.rb @@ -0,0 +1,36 @@ +module ActiveRecord +  class Base +    def self.fake_connection(config) +      ConnectionAdapters::FakeAdapter.new nil, logger +    end +  end + +  module ConnectionAdapters +    class FakeAdapter < AbstractAdapter +      attr_accessor :tables, :primary_keys + +      def initialize(connection, logger) +        super +        @tables       = [] +        @primary_keys = {} +        @columns      = Hash.new { |h,k| h[k] = [] } +      end + +      def primary_key(table) +        @primary_keys[table] +      end + +      def merge_column(table_name, name, sql_type = nil, options = {}) +        @columns[table_name] << ActiveRecord::ConnectionAdapters::Column.new( +          name.to_s, +          options[:default], +          sql_type.to_s, +          options[:null]) +      end + +      def columns(table_name, message) +        @columns[table_name] +      end +    end +  end +end diff --git a/activerecord/test/models/contact.rb b/activerecord/test/models/contact.rb index 5bbe7ebb12..e081eee661 100644 --- a/activerecord/test/models/contact.rb +++ b/activerecord/test/models/contact.rb @@ -1,12 +1,14 @@  class Contact < ActiveRecord::Base -  def self.columns -    @columns -  end +  establish_connection(:adapter => 'fake') + +  connection.tables = ['contacts'] +  connection.primary_keys = { +    'contacts' => 'id' +  }    # mock out self.columns so no pesky db is needed for these tests    def self.column(name, sql_type = nil, options = {}) -    @columns ||= [] -    @columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, options[:default], sql_type.to_s, options[:null]) +    connection.merge_column('contacts', name, sql_type, options)    end    column :name,        :string | 
