rspec-active_record_mocks 0.1.4 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Readme.md +100 -66
- data/lib/active_record_mocks.rb +21 -0
- data/lib/active_record_mocks/mock.rb +55 -0
- data/lib/active_record_mocks/mock/table.rb +148 -0
- data/lib/active_record_mocks/rails.rb +5 -0
- data/lib/active_record_mocks/rspec.rb +6 -0
- data/lib/active_record_mocks/version.rb +3 -0
- metadata +9 -5
- data/lib/rspec/active_record_mocks.rb +0 -98
- data/lib/rspec/active_record_mocks/version.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e35438d49c6384a1ff0f6f50e20be1d24ba5275
|
4
|
+
data.tar.gz: 3647113e60f410c852aa188b5b960b6a29a4acf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96ff970256537da82849bc5812e57da8ad3b7ffa7acff26deefeac9c773cc925097c7d025f9adabe68d330b363e50200fb6a62e3838ee7e600059ea07eacad7a
|
7
|
+
data.tar.gz: d3a6e82279c6eacf1aef4cdc8e6b7cedcb65e12d1e179fb9b5c449669aa0662f9b45cd8c8af3c054fc5860039327ea9e88cef48363b3ea0ed5a23a03253d76d1
|
data/Gemfile
CHANGED
data/Readme.md
CHANGED
@@ -1,114 +1,148 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
*Over the next few days this gem will be transformed to simply be
|
4
|
-
`active_record_mocks` so it works with Test::Unit, MiniTest and RSpec.
|
5
|
-
This gem will be a complete alias of the other one and will still be
|
6
|
-
published but your work flow might change a bit depending on how I
|
7
|
-
decide to go about the work flow, this means that you could end up
|
8
|
-
using it in an entirely different way than before.*
|
9
|
-
|
10
|
-
# RSpec Active Record Mocks.
|
1
|
+
# Active Record Mocks.
|
11
2
|
|
12
3
|
[](https://travis-ci.org/envygeeks/active_record_mocks) [](https://coveralls.io/r/envygeeks/active_record_mocks) [](https://codeclimate.com/github/envygeeks/active_record_mocks) [](https://gemnasium.com/envygeeks/active_record_mocks)
|
13
4
|
|
14
5
|
ActiveRecord Mocks is designed to aide you in testing your ActiveRecord
|
15
6
|
concerns by creating random models (or even named models) that are
|
16
|
-
removed after each test.
|
7
|
+
removed after each test. It was originally concieved to test concerns,
|
8
|
+
includes and other types of things that normally aren't tied to a
|
9
|
+
model specifically.
|
17
10
|
|
18
11
|
## Installing
|
19
12
|
|
20
13
|
```ruby
|
21
|
-
gem "
|
14
|
+
gem "active_record_mocks"
|
22
15
|
```
|
23
16
|
|
24
17
|
## Using
|
25
18
|
|
26
|
-
`RSpec::ActiveRecordMocks` supports `before` with `:all` or `:each`, it
|
27
|
-
can also be used directly inside the it. It's designed to try and be a
|
28
|
-
little bit flexible in how you try to use it.
|
29
|
-
|
30
19
|
```ruby
|
20
|
+
with_mocked_tables do |m|
|
21
|
+
m.enable_extension "uuid-ossp"
|
22
|
+
m.enable_extension "hstore"
|
31
23
|
|
32
|
-
|
33
|
-
|
34
|
-
|
24
|
+
t1 = m.create_table do |t|
|
25
|
+
t.model_name :Foo
|
26
|
+
t.belongs_to :bar
|
35
27
|
|
36
|
-
|
37
|
-
|
38
|
-
|
28
|
+
t.layout do |l|
|
29
|
+
l.integer :bar_id
|
30
|
+
end
|
39
31
|
end
|
32
|
+
|
33
|
+
t2 = m.create_table do |t|
|
34
|
+
t.model_name :Bar
|
35
|
+
t.has_many :foo
|
36
|
+
|
37
|
+
t.layout do |l|
|
38
|
+
l.text :bar_text
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Do Work Here
|
40
43
|
end
|
41
44
|
```
|
42
45
|
|
43
|
-
|
46
|
+
---
|
44
47
|
|
45
|
-
|
46
|
-
# An example using extensions!
|
47
|
-
# ----------------------------------------------------------------------------
|
48
|
+
### Extensions
|
48
49
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
You can enable PostgreSQL extensions inside of your models using the
|
51
|
+
`enable_extension` method when inside of `with_mocked_tables` or
|
52
|
+
`with_mocked_models` like so:
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
with_mocked_tables do |m|
|
56
|
+
m.enable_extension "extension-name"
|
54
57
|
end
|
55
58
|
```
|
56
59
|
|
57
|
-
|
60
|
+
---
|
58
61
|
|
59
|
-
|
60
|
-
# Before :all example with :include and a migration.
|
61
|
-
# Also works with `before :each`
|
62
|
-
# ----------------------------------------------------------------------------
|
62
|
+
### Creating Tables and Layouts
|
63
63
|
|
64
|
-
|
65
|
-
|
66
|
-
@test_model = mock_active_record_model(:include => TestConcern) do
|
67
|
-
table.string(:test_column)
|
68
|
-
end
|
69
|
-
end
|
64
|
+
To create tables you use the `create_table` method when inside of
|
65
|
+
`with_mocked_tables` or `with_mocked_models`, like so:
|
70
66
|
|
71
|
-
|
72
|
-
|
67
|
+
```ruby
|
68
|
+
with_mocked_tables do |m|
|
69
|
+
m.create_table migration_arguments do |t|
|
70
|
+
t.layout do |l|
|
71
|
+
l.text :foo_text
|
72
|
+
end
|
73
73
|
end
|
74
74
|
end
|
75
75
|
```
|
76
76
|
|
77
|
-
|
77
|
+
#### Belongs to, Has Many and other methods
|
78
78
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
# ----------------------------------------------------------------------------
|
79
|
+
Any method that `ActiveRecordMocks` does not know or understand is
|
80
|
+
passed on to the model itself, so if you need for example `belongs_to`
|
81
|
+
then you would simply use belongs to when creating your table:
|
83
82
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
83
|
+
```ruby
|
84
|
+
with_mocked_tables do |m|
|
85
|
+
m.create_table migration_arguments do |t|
|
86
|
+
t.belongs_to :bar_model
|
87
|
+
t.layout do |l|
|
88
|
+
l.text :foo_text
|
88
89
|
end
|
89
90
|
end
|
91
|
+
end
|
92
|
+
```
|
90
93
|
|
91
|
-
|
92
|
-
|
94
|
+
#### Named models and tables
|
95
|
+
|
96
|
+
If you need a named model or a named table or a model whose table is
|
97
|
+
different than it's model you can use the methods `model_name` and
|
98
|
+
`table_name`, if you simply need a named model and you use standard
|
99
|
+
naming conventions than you can simply leave out the `table_name`
|
100
|
+
when using model name and `ActiveRecordMocks` will tabelize the name
|
101
|
+
of your model automatically the same as `Rails` would.
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
with_mocked_tables do |m|
|
105
|
+
t1 = m.create_table migration_arguments do |t|
|
106
|
+
t.model_name :Foo
|
107
|
+
t.layout do |l|
|
108
|
+
l.text :foo_text
|
109
|
+
end
|
93
110
|
end
|
94
111
|
end
|
112
|
+
|
113
|
+
# Results in:
|
114
|
+
# - Foo (Model)
|
115
|
+
# - foos (Table)
|
95
116
|
```
|
96
117
|
|
97
118
|
```ruby
|
119
|
+
with_mocked_tables do |m|
|
120
|
+
t1 = m.create_table migration_arguments do |t|
|
121
|
+
t.table_name :old_foo
|
122
|
+
t.model_name :Foo
|
123
|
+
t.layout do |l|
|
124
|
+
l.text :foo_text
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
98
128
|
|
99
|
-
#
|
100
|
-
#
|
101
|
-
#
|
102
|
-
|
129
|
+
# Results in:
|
130
|
+
# - Foo (Model)
|
131
|
+
# - old_foo (Table)
|
132
|
+
```
|
103
133
|
|
104
|
-
|
105
|
-
before :all do
|
106
|
-
@model = mock_active_record_model do |table|
|
107
|
-
table.string(:column)
|
108
|
-
end
|
134
|
+
#### Model Includes
|
109
135
|
|
110
|
-
|
111
|
-
|
136
|
+
If you need to include anything into your model you can use the
|
137
|
+
`includes` method when inside of `with_mocked_models` or
|
138
|
+
`with_mocked_tables`, like so:
|
139
|
+
|
140
|
+
```ruby
|
141
|
+
with_mocked_tables do |m|
|
142
|
+
m.create_table migration_arguments do |t|
|
143
|
+
t.includes Bar1, Bar2
|
144
|
+
t.layout do |l|
|
145
|
+
l.text :foo_text
|
112
146
|
end
|
113
147
|
end
|
114
148
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "active_record"
|
2
|
+
|
3
|
+
module ActiveRecordMocks
|
4
|
+
require_relative "active_record_mocks/mock"
|
5
|
+
|
6
|
+
module IncludeMe
|
7
|
+
def mocked_active_record
|
8
|
+
Mock.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def with_mocked_tables(&block)
|
12
|
+
if block_given?
|
13
|
+
mocked_active_record.tap do |o|
|
14
|
+
block.call(o)
|
15
|
+
o.delete_tables
|
16
|
+
end
|
17
|
+
end
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require_relative "mock/table"
|
2
|
+
require "active_record"
|
3
|
+
|
4
|
+
module ActiveRecordMocks
|
5
|
+
class Mock
|
6
|
+
class ExtensionsUnsupported < StandardError
|
7
|
+
def initialize
|
8
|
+
super "Your database server does not support extensions."
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
attr_accessor :tables
|
13
|
+
|
14
|
+
def enable_extension(ext)
|
15
|
+
raise_if_extensions_unsupported!
|
16
|
+
ActiveRecord::Migration.tap do |o|
|
17
|
+
o.suppress_messages do
|
18
|
+
o.enable_extension(ext)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_table(*args, &block)
|
24
|
+
Table.new(*args).tap do |o|
|
25
|
+
if block_given?
|
26
|
+
block.call(o)
|
27
|
+
end
|
28
|
+
|
29
|
+
o.setup_mocking!
|
30
|
+
tables.push(o)
|
31
|
+
return o.model
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def initialize
|
36
|
+
@tables = [
|
37
|
+
]
|
38
|
+
end
|
39
|
+
|
40
|
+
def delete_tables
|
41
|
+
tables.each do |t|
|
42
|
+
Object.send(:remove_const, t.model_name)
|
43
|
+
ActiveRecord::Base.connection.drop_table(t.table_name)
|
44
|
+
end
|
45
|
+
nil
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
def raise_if_extensions_unsupported!
|
50
|
+
if ! ActiveRecord::Base.connection.respond_to?(:enable_extension)
|
51
|
+
raise ExtensionsUnsupported
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
require "active_support/core_ext/string/inflections"
|
2
|
+
|
3
|
+
module ActiveRecordMocks
|
4
|
+
class Mock
|
5
|
+
class Table
|
6
|
+
attr_reader :model_methods
|
7
|
+
attr_reader :args
|
8
|
+
|
9
|
+
def initialize(*args, &block)
|
10
|
+
@model_methods = []
|
11
|
+
@table_name = nil
|
12
|
+
@includes = []
|
13
|
+
@args = args
|
14
|
+
@layout = nil
|
15
|
+
@model_name = nil
|
16
|
+
end
|
17
|
+
|
18
|
+
# ---------------------------------------------------------------
|
19
|
+
# Tells us if we have already setup this model and object so
|
20
|
+
# that we don't keep setting stuff up.
|
21
|
+
# ---------------------------------------------------------------
|
22
|
+
|
23
|
+
def setup?
|
24
|
+
@already_setup ? true : false
|
25
|
+
end
|
26
|
+
|
27
|
+
# ---------------------------------------------------------------
|
28
|
+
# Gives the proper object of the model for you.
|
29
|
+
# ---------------------------------------------------------------
|
30
|
+
|
31
|
+
def model
|
32
|
+
if setup?
|
33
|
+
Object.const_get(@model_name)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# ---------------------------------------------------------------
|
38
|
+
# Allows you to set the files that should be included into the
|
39
|
+
# model, you must use t.includes because t.include is already
|
40
|
+
# a method on the object you are in.
|
41
|
+
# ---------------------------------------------------------------
|
42
|
+
|
43
|
+
def includes(*incs)
|
44
|
+
if setup? || incs.size == 0
|
45
|
+
@includes
|
46
|
+
else
|
47
|
+
incs.each do |i|
|
48
|
+
unless i.blank?
|
49
|
+
@includes.push(i)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# ---------------------------------------------------------------
|
56
|
+
# Allows you to set the layout for the table you are building.
|
57
|
+
# ---------------------------------------------------------------
|
58
|
+
|
59
|
+
def layout(&block)
|
60
|
+
setup? || ! block_given? ? @layout ||= nil : @layout = block
|
61
|
+
end
|
62
|
+
|
63
|
+
# ---------------------------------------------------------------
|
64
|
+
# Allows the setting of or setuping up of and returning of the
|
65
|
+
# name of the table that is being used for the model. If
|
66
|
+
# you do not customize this then it will be a tabelized name
|
67
|
+
# of the model, the same way that normal active_record would do.
|
68
|
+
# ---------------------------------------------------------------
|
69
|
+
|
70
|
+
def table_name(tname = nil)
|
71
|
+
if setup? || (! tname && @table_name)
|
72
|
+
@table_name
|
73
|
+
else
|
74
|
+
@table_name = \
|
75
|
+
tname ? tname : model_name.to_s.tableize
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# ---------------------------------------------------------------
|
80
|
+
# Allows for the setting of or setup of and returning of the name
|
81
|
+
# of the model being used, this should not be confused with model
|
82
|
+
# which returns the actual object. The model need not match the
|
83
|
+
# table and sometimes it won't if you chose to be that way.
|
84
|
+
# ---------------------------------------------------------------
|
85
|
+
|
86
|
+
def model_name(mname = nil)
|
87
|
+
if setup? || (! mname && @model_name)
|
88
|
+
@model_name
|
89
|
+
else
|
90
|
+
@model_name = mname ? mname : \
|
91
|
+
SecureRandom.hex(10).tr("^a-z", "").capitalize
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def setup_mocking!
|
96
|
+
if ! setup?
|
97
|
+
setup_table!
|
98
|
+
setup_model!
|
99
|
+
@already_setup = true
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
private
|
104
|
+
def setup_table!
|
105
|
+
ActiveRecord::Migration.tap do |o|
|
106
|
+
o.suppress_messages do
|
107
|
+
o.create_table table_name, *args do |t|
|
108
|
+
layout.call(t) if layout.is_a?(Proc)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
private
|
115
|
+
def setup_model!
|
116
|
+
Object.const_set(model_name,
|
117
|
+
Class.new(ActiveRecord::Base)).tap do |o|
|
118
|
+
o.table_name = table_name
|
119
|
+
setup_includes(o)
|
120
|
+
run_model_methods(o)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
private
|
125
|
+
def setup_includes(obj)
|
126
|
+
includes.each do |i|
|
127
|
+
obj.send(:include, i)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
private
|
132
|
+
def run_model_methods(obj)
|
133
|
+
model_methods.each do |m|
|
134
|
+
obj.send(m[:method], *m[:args], &m[:block])
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
public
|
139
|
+
def method_missing(methud, *args, &block)
|
140
|
+
model_methods.push({
|
141
|
+
:block => block,
|
142
|
+
:method => methud,
|
143
|
+
:args => args
|
144
|
+
})
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-active_record_mocks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordon Bedwell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -102,9 +102,13 @@ files:
|
|
102
102
|
- License
|
103
103
|
- Rakefile
|
104
104
|
- Gemfile
|
105
|
-
- lib/
|
106
|
-
- lib/
|
107
|
-
|
105
|
+
- lib/active_record_mocks.rb
|
106
|
+
- lib/active_record_mocks/rails.rb
|
107
|
+
- lib/active_record_mocks/version.rb
|
108
|
+
- lib/active_record_mocks/mock/table.rb
|
109
|
+
- lib/active_record_mocks/mock.rb
|
110
|
+
- lib/active_record_mocks/rspec.rb
|
111
|
+
homepage: https://github.com/envygeeks/active_record_mocks
|
108
112
|
licenses:
|
109
113
|
- Apache 2.0
|
110
114
|
metadata: {}
|
@@ -1,98 +0,0 @@
|
|
1
|
-
require "active_support/core_ext/string/inflections"
|
2
|
-
require "active_record"
|
3
|
-
require "rspec"
|
4
|
-
|
5
|
-
module RSpec
|
6
|
-
module ActiveRecordMocks
|
7
|
-
class ExtensionsUnsupportedError < StandardError
|
8
|
-
def initialize
|
9
|
-
super "Your adapter does not support PostgreSQL extensions"
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
# Allow people to mock ActiveRecord while giving them the flexibility.
|
14
|
-
|
15
|
-
def mock_active_record_model(opts = {}, &block)
|
16
|
-
tbl, ext = opts.delete(:name), opts.delete(:extensions)
|
17
|
-
tbl = create_active_record_table_for_mocking(tbl, ext, &block)
|
18
|
-
Object.const_set(tbl.camelize, Class.new(ActiveRecord::Base)).class_eval do
|
19
|
-
include opts.delete(:include) if opts[:include]
|
20
|
-
self.table_name = tbl and self
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# Roll through each one of the created tables and destroy them.
|
25
|
-
|
26
|
-
def clean_tables_for_active_record_mocking
|
27
|
-
if mocked_active_record_options[:mocked_active_record_tables]
|
28
|
-
mocked_active_record_options.delete(:mocked_active_record_tables).each do |tbl|
|
29
|
-
ActiveRecord::Base.connection.drop_table(tbl) if active_record_tables.include?(tbl)
|
30
|
-
if Object.const_defined?(tbl.camelize)
|
31
|
-
Object.send(:remove_const, tbl.camelize)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# Aliases ActiveRecord::Base.connection.tables to active_record_tables to
|
38
|
-
# a geniunely useful method that can be used by anybody doing db testing.
|
39
|
-
|
40
|
-
def active_record_tables
|
41
|
-
ActiveRecord::Base.connection.tables
|
42
|
-
end
|
43
|
-
|
44
|
-
# Allows us to access options for either the class or the test itself as
|
45
|
-
# to allow users to either work on the class or work in the test allowing
|
46
|
-
# us to cleanup without affecting the other.
|
47
|
-
|
48
|
-
private
|
49
|
-
def mocked_active_record_options
|
50
|
-
(example.nil?) ? (@mocked_active_record_options ||= {}) : example.options
|
51
|
-
end
|
52
|
-
|
53
|
-
# Creates a temporary table inside of the database using ActiveRecord.
|
54
|
-
|
55
|
-
private
|
56
|
-
def create_active_record_table_for_mocking(tbl, ext, &block)
|
57
|
-
tbl = (tbl || SecureRandom.hex(30).tr('^a-z', '')).to_s
|
58
|
-
setup_active_record_mocking_table(tbl, ext, &block)
|
59
|
-
tbl
|
60
|
-
end
|
61
|
-
|
62
|
-
# Sets up the table using an ActiveRecord migration.
|
63
|
-
|
64
|
-
private
|
65
|
-
def setup_active_record_mocking_table(tbl, ext, &block)
|
66
|
-
(mocked_active_record_options[:mocked_active_record_tables] ||= []).push(tbl)
|
67
|
-
ActiveRecord::Migration.suppress_messages do
|
68
|
-
setup_active_record_mocking_extensions(ext)
|
69
|
-
ActiveRecord::Migration.create_table tbl do |obj|
|
70
|
-
block.call(obj) if block_given?
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
# Sets up the extensions for PostgreSQL.
|
76
|
-
|
77
|
-
private
|
78
|
-
def setup_active_record_mocking_extensions(ext)
|
79
|
-
ext = [ext].delete_if { |value| value.blank? }.flatten
|
80
|
-
if ext.size > 0 && ! ActiveRecord::Base.connection.respond_to?(:enable_extension)
|
81
|
-
raise ExtensionsUnsupportedError
|
82
|
-
else
|
83
|
-
ext.each do |extension|
|
84
|
-
ActiveRecord::Migration.enable_extension(extension)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
RSpec.configure do |config|
|
92
|
-
config.include RSpec::ActiveRecordMocks
|
93
|
-
[:all, :each].each do |type|
|
94
|
-
config.after(type) do
|
95
|
-
clean_tables_for_active_record_mocking
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|