Sha256: 8b2b733ab74bf58bd8544e3111f7b7eff8a0307f514c0837d8595c0235700be7

Contents?: true

Size: 1.4 KB

Versions: 3

Compression:

Stored size: 1.4 KB

Contents

ActiveRecord::Base.establish_connection(
  :adapter => 'sqlite3',
  :database => ':memory:'
)

module Connections
  def self.extended(host)
    host.connection.execute <<-eosql
      CREATE TABLE #{host.table_name} (
        #{host.primary_key} integer PRIMARY KEY AUTOINCREMENT,
        associated_model_id integer,
        mockable_model_id integer,
        nonexistent_model_id integer
      )
    eosql
  end
end

module ConnectionsView
  def self.extended(host)
    host.connection.execute <<-eosql
      CREATE TABLE some_table (
        associated_model_id integer,
        mockable_model_id integer,
        nonexistent_model_id integer
      )
    eosql

    host.connection.execute <<-eosql
      CREATE VIEW #{host.table_name} AS
        select * from some_table;
    eosql
  end
end

class NonActiveRecordModel
  extend ActiveModel::Naming
  include ActiveModel::Conversion
end

class MockableModel < ActiveRecord::Base
  extend Connections
  has_one :associated_model
end

# (e.g. model backed database views)
class MockableModelNoPrimaryKey < ActiveRecord::Base
  extend ConnectionsView
end

class SubMockableModel < MockableModel
end

class AssociatedModel < ActiveRecord::Base
  extend Connections
  belongs_to :mockable_model
  belongs_to :nonexistent_model, :class_name => "Other"
end

class AlternatePrimaryKeyModel < ActiveRecord::Base
  self.primary_key = :my_id
  extend Connections
  attr_accessor :my_id
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
rspec-activemodel-mocks-1.1.0 spec/support/ar_classes.rb
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/rspec-activemodel-mocks-1.0.3/spec/support/ar_classes.rb
rspec-activemodel-mocks-1.0.3 spec/support/ar_classes.rb