Sha256: 8731916ff06ec678d482dfdfc7d2542724f2d8a48900638869bf0267d1919276

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true
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.2.1 spec/support/ar_classes.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/rspec-activemodel-mocks-1.2.0/spec/support/ar_classes.rb
rspec-activemodel-mocks-1.2.0 spec/support/ar_classes.rb