Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

active_record_mocks

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

active_record_mocks

  • 1.2.1
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Active Record Mocks.

Build Status Coverage Status Code Climate Dependency Status

ActiveRecord Mocks is designed to aide you in testing your ActiveRecord concerns by creating random models (or even named models) that are removed after each test. It was originally concieved to test concerns, includes and other types of things that normally aren't tied to a model specifically.

Installing

gem "active_record_mocks"

Using

with_mocked_tables do |m|
  m.enable_extension "uuid-ossp"
  m.enable_extension "hstore"

  t1 = m.create_table do |t|
    t.model_name :Foo
    t.belongs_to :bar

    t.layout do |l|
       l.integer :bar_id
    end
  end

  t2 = m.create_table do |t|
    t.model_name :Bar
    t.has_many   :foo

    t.layout do |l|
      l.text :bar_text
    end
  end

  # Do Work Here
end

Extensions

You can enable PostgreSQL extensions inside of your models using the enable_extension method when inside of with_mocked_tables or with_mocked_models like so:

with_mocked_tables do |m|
  m.enable_extension "extension-name"
end

Creating Tables and Layouts

To create tables you use the create_table method when inside of with_mocked_tables or with_mocked_models, like so:

with_mocked_tables do |m|
  m.create_table migration_arguments do |t|
    t.layout do |l|
      l.text :foo_text
    end
  end
end
Belongs to, Has Many and other methods

Any method that ActiveRecordMocks does not know or understand is passed on to the model itself, so if you need for example belongs_to then you would simply use belongs to when creating your table:

with_mocked_tables do |m|
  m.create_table migration_arguments do |t|
    t.belongs_to :bar_model
    t.layout do |l|
      l.text :foo_text
    end
  end
end
Named models and tables

If you need a named model or a named table or a model whose table is different than it's model you can use the methods model_name and table_name, if you simply need a named model and you use standard naming conventions than you can simply leave out the table_name when using model name and ActiveRecordMocks will tabelize the name of your model automatically the same as Rails would.

with_mocked_tables do |m|
  t1 = m.create_table migration_arguments do |t|
    t.model_name :Foo
    t.layout do |l|
      l.text :foo_text
    end
  end
end

# Results in:
#   - Foo  (Model)
#   - foos (Table)
with_mocked_tables do |m|
  t1 = m.create_table migration_arguments do |t|
    t.table_name :old_foo
    t.model_name :Foo
    t.layout do |l|
      l.text :foo_text
    end
  end
end

# Results in:
#   - Foo      (Model)
#   - old_foo  (Table)
Model Includes

If you need to include anything into your model you can use the includes method when inside of with_mocked_models or with_mocked_tables, like so:

with_mocked_tables do |m|
  m.create_table migration_arguments do |t|
    t.includes Bar1, Bar2
    t.layout do |l|
      l.text :foo_text
    end
  end
end
Using a custom parent class

If you need to test a base class that is not ActiveRecord::Base, you can do so by specifying the parent_class method.

This is useful if your code base uses a custom base class that derives from ActiveRecord::Base, like so:


class MyBase < ActiveRecord::Base
  self.abstract_class = true
  def a_custom_method
    42
  end
end

with_mocked_tables do |m|
  m.create_table migration_arguments do |t|
    t.parent_class :MyBase
    t.model_name :Foo
    t.layout do |l|
      l.text :foo_text
    end
  end

  f = Foo.new
  f.is_a?(MyBase)   # <= true
  f.a_custom_method # <= 42
end


FAQs

Package last updated on 17 Jun 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc