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 |