active_mocker 1.4.2 → 1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -0
- data/README.md +35 -29
- data/lib/active_mocker.rb +3 -1
- data/lib/active_mocker/active_record.rb +27 -5
- data/lib/active_mocker/active_record/scope.rb +5 -5
- data/lib/active_mocker/active_record/unknown_module.rb +4 -4
- data/lib/active_mocker/generate.rb +36 -15
- data/lib/active_mocker/loaded_mocks.rb +60 -54
- data/lib/active_mocker/mock.rb +24 -0
- data/lib/active_mocker/mock/association.rb +6 -0
- data/lib/{active_mock → active_mocker/mock}/base.rb +43 -89
- data/lib/{active_mock → active_mocker/mock}/collection.rb +14 -7
- data/lib/{active_mock → active_mocker/mock}/do_nothing_active_record_methods.rb +7 -1
- data/lib/active_mocker/mock/exceptions.rb +25 -0
- data/lib/active_mocker/mock/has_and_belongs_to_many.rb +6 -0
- data/lib/active_mocker/mock/has_many.rb +60 -0
- data/lib/active_mocker/mock/hash_process.rb +19 -0
- data/lib/active_mocker/mock/mock_abilities.rb +98 -0
- data/lib/{active_mock → active_mocker/mock}/next_id.rb +7 -2
- data/lib/{active_mock → active_mocker/mock}/object_inspect.rb +3 -1
- data/lib/{active_mock → active_mocker/mock}/queries.rb +32 -29
- data/lib/active_mocker/mock/records.rb +62 -0
- data/lib/{active_mock → active_mocker/mock}/relation.rb +4 -3
- data/lib/active_mocker/mock/template_methods.rb +39 -0
- data/lib/active_mocker/mock_template.erb +45 -31
- data/lib/active_mocker/model_reader.rb +29 -0
- data/lib/active_mocker/model_schema.rb +23 -16
- data/lib/active_mocker/model_schema/generate.rb +19 -8
- data/lib/active_mocker/railtie.rb +17 -0
- data/lib/active_mocker/reparameterize.rb +2 -4
- data/lib/active_mocker/rspec_helper.rb +18 -0
- data/lib/active_mocker/task.rake +15 -0
- data/lib/active_mocker/version.rb +1 -1
- metadata +80 -206
- data/.gitignore +0 -19
- data/.hound.yml +0 -0
- data/.travis.yml +0 -5
- data/Gemfile +0 -4
- data/Rakefile +0 -26
- data/active_mocker.gemspec +0 -40
- data/lib/active_mock/association.rb +0 -7
- data/lib/active_mock/creators.rb +0 -25
- data/lib/active_mock/has_and_belongs_to_many.rb +0 -7
- data/lib/active_mock/has_many.rb +0 -54
- data/lib/active_mock/records.rb +0 -83
- data/lib/active_mocker/active_mock.rb +0 -26
- data/lib/active_mocker/active_record/const_missing.rb +0 -5
- data/lib/active_mocker/class_exists.rb +0 -12
- data/lib/active_mocker/const_sets.rb +0 -24
- data/lib/active_mocker/mock_task.rb +0 -12
- data/sample_app_rails_4/.idea/.generators +0 -8
- data/sample_app_rails_4/.idea/.name +0 -1
- data/sample_app_rails_4/.idea/.rakeTasks +0 -7
- data/sample_app_rails_4/.idea/dataSources.ids +0 -141
- data/sample_app_rails_4/.idea/dataSources.xml +0 -36
- data/sample_app_rails_4/.idea/dictionaries/zeisler.xml +0 -3
- data/sample_app_rails_4/.idea/encodings.xml +0 -5
- data/sample_app_rails_4/.idea/inspectionProfiles/Project_Default.xml +0 -20
- data/sample_app_rails_4/.idea/inspectionProfiles/profiles_settings.xml +0 -7
- data/sample_app_rails_4/.idea/misc.xml +0 -5
- data/sample_app_rails_4/.idea/modules.xml +0 -10
- data/sample_app_rails_4/.idea/runConfigurations/Development__sample_app_rails_4.xml +0 -28
- data/sample_app_rails_4/.idea/runConfigurations/Production__sample_app_rails_4.xml +0 -28
- data/sample_app_rails_4/.idea/runConfigurations/spec__sample_app_rails_4.xml +0 -26
- data/sample_app_rails_4/.idea/runConfigurations/test__sample_app_rails_4.xml +0 -28
- data/sample_app_rails_4/.idea/sample_app_rails_4.iml +0 -262
- data/sample_app_rails_4/.idea/scopes/scope_settings.xml +0 -5
- data/sample_app_rails_4/.idea/vcs.xml +0 -7
- data/sample_app_rails_4/.idea/workspace.xml +0 -619
- data/sample_app_rails_4/.rspec +0 -1
- data/sample_app_rails_4/.secret +0 -1
- data/sample_app_rails_4/Gemfile +0 -13
- data/sample_app_rails_4/Guardfile +0 -53
- data/sample_app_rails_4/LICENSE +0 -21
- data/sample_app_rails_4/README.md +0 -25
- data/sample_app_rails_4/README.nitrous.md +0 -20
- data/sample_app_rails_4/Rakefile +0 -6
- data/sample_app_rails_4/app/assets/images/rails.png +0 -0
- data/sample_app_rails_4/app/assets/javascripts/application.js +0 -17
- data/sample_app_rails_4/app/assets/javascripts/sessions.js.coffee +0 -3
- data/sample_app_rails_4/app/assets/javascripts/static_pages.js.coffee +0 -3
- data/sample_app_rails_4/app/assets/javascripts/users.js.coffee +0 -3
- data/sample_app_rails_4/app/assets/stylesheets/application.css +0 -13
- data/sample_app_rails_4/app/assets/stylesheets/custom.css.scss +0 -246
- data/sample_app_rails_4/app/assets/stylesheets/sessions.css.scss +0 -3
- data/sample_app_rails_4/app/assets/stylesheets/static_pages.css.scss +0 -3
- data/sample_app_rails_4/app/assets/stylesheets/users.css.scss +0 -3
- data/sample_app_rails_4/app/controllers/application_controller.rb +0 -6
- data/sample_app_rails_4/app/controllers/concerns/.keep +0 -0
- data/sample_app_rails_4/app/controllers/microposts_controller.rb +0 -31
- data/sample_app_rails_4/app/controllers/relationships_controller.rb +0 -21
- data/sample_app_rails_4/app/controllers/sessions_controller.rb +0 -21
- data/sample_app_rails_4/app/controllers/static_pages_controller.rb +0 -18
- data/sample_app_rails_4/app/controllers/users_controller.rb +0 -80
- data/sample_app_rails_4/app/helpers/application_helper.rb +0 -12
- data/sample_app_rails_4/app/helpers/sessions_helper.rb +0 -49
- data/sample_app_rails_4/app/helpers/static_pages_helper.rb +0 -2
- data/sample_app_rails_4/app/helpers/users_helper.rb +0 -10
- data/sample_app_rails_4/app/mailers/.keep +0 -0
- data/sample_app_rails_4/app/models/.keep +0 -0
- data/sample_app_rails_4/app/models/concerns/.keep +0 -0
- data/sample_app_rails_4/app/models/micropost.rb +0 -24
- data/sample_app_rails_4/app/models/relationship.rb +0 -6
- data/sample_app_rails_4/app/models/user.rb +0 -39
- data/sample_app_rails_4/app/views/layouts/_footer.html.erb +0 -13
- data/sample_app_rails_4/app/views/layouts/_header.html.erb +0 -31
- data/sample_app_rails_4/app/views/layouts/_shim.html.erb +0 -3
- data/sample_app_rails_4/app/views/layouts/application.html.erb +0 -22
- data/sample_app_rails_4/app/views/microposts/_micropost.html.erb +0 -11
- data/sample_app_rails_4/app/views/relationships/create.js.erb +0 -2
- data/sample_app_rails_4/app/views/relationships/destroy.js.erb +0 -2
- data/sample_app_rails_4/app/views/sessions/new.html.erb +0 -19
- data/sample_app_rails_4/app/views/shared/_error_messages.html.erb +0 -12
- data/sample_app_rails_4/app/views/shared/_feed.html.erb +0 -6
- data/sample_app_rails_4/app/views/shared/_feed_item.html.erb +0 -15
- data/sample_app_rails_4/app/views/shared/_micropost_form.html.erb +0 -7
- data/sample_app_rails_4/app/views/shared/_stats.html.erb +0 -15
- data/sample_app_rails_4/app/views/shared/_user_info.html.erb +0 -12
- data/sample_app_rails_4/app/views/static_pages/about.html.erb +0 -8
- data/sample_app_rails_4/app/views/static_pages/contact.html.erb +0 -6
- data/sample_app_rails_4/app/views/static_pages/help.html.erb +0 -8
- data/sample_app_rails_4/app/views/static_pages/home.html.erb +0 -34
- data/sample_app_rails_4/app/views/static_pages/show.html.erb +0 -0
- data/sample_app_rails_4/app/views/users/_follow.html.erb +0 -5
- data/sample_app_rails_4/app/views/users/_follow_form.html.erb +0 -9
- data/sample_app_rails_4/app/views/users/_unfollow.html.erb +0 -5
- data/sample_app_rails_4/app/views/users/_user.html.erb +0 -8
- data/sample_app_rails_4/app/views/users/edit.html.erb +0 -27
- data/sample_app_rails_4/app/views/users/index.html.erb +0 -10
- data/sample_app_rails_4/app/views/users/new.html.erb +0 -24
- data/sample_app_rails_4/app/views/users/show.html.erb +0 -24
- data/sample_app_rails_4/app/views/users/show_follow.html.erb +0 -30
- data/sample_app_rails_4/bin/bundle +0 -3
- data/sample_app_rails_4/bin/rails +0 -4
- data/sample_app_rails_4/bin/rake +0 -4
- data/sample_app_rails_4/bin/rspec +0 -16
- data/sample_app_rails_4/config.ru +0 -4
- data/sample_app_rails_4/config/application.rb +0 -28
- data/sample_app_rails_4/config/boot.rb +0 -4
- data/sample_app_rails_4/config/database.yml +0 -27
- data/sample_app_rails_4/config/environment.rb +0 -5
- data/sample_app_rails_4/config/environments/development.rb +0 -25
- data/sample_app_rails_4/config/environments/production.rb +0 -79
- data/sample_app_rails_4/config/environments/test.rb +0 -38
- data/sample_app_rails_4/config/initializers/active_mocker.rb +0 -12
- data/sample_app_rails_4/config/initializers/backtrace_silencers.rb +0 -7
- data/sample_app_rails_4/config/initializers/filter_parameter_logging.rb +0 -4
- data/sample_app_rails_4/config/initializers/inflections.rb +0 -16
- data/sample_app_rails_4/config/initializers/mime_types.rb +0 -5
- data/sample_app_rails_4/config/initializers/secret_token.rb +0 -22
- data/sample_app_rails_4/config/initializers/session_store.rb +0 -3
- data/sample_app_rails_4/config/initializers/wrap_parameters.rb +0 -14
- data/sample_app_rails_4/config/locales/en.yml +0 -23
- data/sample_app_rails_4/config/routes.rb +0 -17
- data/sample_app_rails_4/db/migrate/20130311191400_create_users.rb +0 -10
- data/sample_app_rails_4/db/migrate/20130311194153_add_index_to_users_email.rb +0 -5
- data/sample_app_rails_4/db/migrate/20130311201841_add_password_digest_to_users.rb +0 -5
- data/sample_app_rails_4/db/migrate/20130314184954_add_remember_token_to_users.rb +0 -6
- data/sample_app_rails_4/db/migrate/20130315015932_add_admin_to_users.rb +0 -5
- data/sample_app_rails_4/db/migrate/20130315175534_create_microposts.rb +0 -11
- data/sample_app_rails_4/db/migrate/20130315230445_create_relationships.rb +0 -13
- data/sample_app_rails_4/db/schema.rb +0 -51
- data/sample_app_rails_4/db/seeds.rb +0 -7
- data/sample_app_rails_4/features/signing_in.feature +0 -13
- data/sample_app_rails_4/features/step_definitions/authentication_steps.rb +0 -30
- data/sample_app_rails_4/features/support/env.rb +0 -59
- data/sample_app_rails_4/lib/assets/.keep +0 -0
- data/sample_app_rails_4/lib/tasks/.keep +0 -0
- data/sample_app_rails_4/lib/tasks/active_mocker.rake +0 -10
- data/sample_app_rails_4/lib/tasks/cucumber.rake +0 -65
- data/sample_app_rails_4/lib/tasks/sample_data.rake +0 -42
- data/sample_app_rails_4/lib/unit_logger.rb +0 -22
- data/sample_app_rails_4/public/404.html +0 -27
- data/sample_app_rails_4/public/422.html +0 -26
- data/sample_app_rails_4/public/500.html +0 -26
- data/sample_app_rails_4/public/assets/application-4962059d8f80f9bb096692bacc29c4e8.css +0 -5091
- data/sample_app_rails_4/public/assets/application-4962059d8f80f9bb096692bacc29c4e8.css.gz +0 -0
- data/sample_app_rails_4/public/assets/application-eeb856e3fe2c8f879c91d0e81d59cb40.js +0 -12952
- data/sample_app_rails_4/public/assets/application-eeb856e3fe2c8f879c91d0e81d59cb40.js.gz +0 -0
- data/sample_app_rails_4/public/assets/glyphicons-halflings-c806376f05e4ccabe2c5315a8e95667c.png +0 -0
- data/sample_app_rails_4/public/assets/glyphicons-halflings-white-62b67d9edee3db90d18833087f848d6e.png +0 -0
- data/sample_app_rails_4/public/assets/manifest-802de9eb1c853769101852422b620883.json +0 -1
- data/sample_app_rails_4/public/assets/rails-231a680f23887d9dd70710ea5efd3c62.png +0 -0
- data/sample_app_rails_4/public/favicon.ico +0 -0
- data/sample_app_rails_4/public/robots.txt +0 -5
- data/sample_app_rails_4/script/cucumber +0 -10
- data/sample_app_rails_4/spec/compare_mocker_and_record_spec.rb +0 -1038
- data/sample_app_rails_4/spec/factories.rb +0 -17
- data/sample_app_rails_4/spec/micropost_mock_spec.rb +0 -145
- data/sample_app_rails_4/spec/mocks/micropost_mock.rb +0 -153
- data/sample_app_rails_4/spec/mocks/relationship_mock.rb +0 -151
- data/sample_app_rails_4/spec/mocks/user_mock.rb +0 -215
- data/sample_app_rails_4/spec/reload_spec.rb +0 -45
- data/sample_app_rails_4/spec/spec_helper.rb +0 -46
- data/sample_app_rails_4/spec/user_mock_spec.rb +0 -197
- data/sample_app_rails_4/vendor/assets/javascripts/.keep +0 -0
- data/sample_app_rails_4/vendor/assets/stylesheets/.keep +0 -0
- data/spec/lib/acitve_mock/queriable_spec.rb +0 -207
- data/spec/lib/active_mocker/db_to_ruby_type_spec.rb +0 -124
- data/spec/lib/active_mocker/generate_spec.rb +0 -40
- data/spec/lib/active_mocker/loaded_mocks_spec.rb +0 -167
- data/spec/lib/active_mocker/logger_spec.rb +0 -32
- data/spec/lib/active_mocker/model_reader_spec.rb +0 -206
- data/spec/lib/active_mocker/model_schema/generate_spec.rb +0 -111
- data/spec/lib/active_mocker/model_schema_spec.rb +0 -145
- data/spec/lib/active_mocker/schema_reader_spec.rb +0 -109
- data/spec/lib/model.rb +0 -43
- data/spec/lib/person.rb +0 -9
- data/spec/lib/readme_spec.rb +0 -199
- data/spec/lib/reparameterize_spec.rb +0 -202
- data/spec/lib/schema.rb +0 -40
- data/spec/unit_logger.rb +0 -24
@@ -1,109 +0,0 @@
|
|
1
|
-
require 'rspec'
|
2
|
-
$:.unshift File.expand_path('../../', __FILE__)
|
3
|
-
require 'string_reader'
|
4
|
-
require 'file_reader'
|
5
|
-
require 'active_mocker/table'
|
6
|
-
require 'active_mocker/field'
|
7
|
-
require 'active_mocker/active_record/schema'
|
8
|
-
require 'active_mocker/schema_reader'
|
9
|
-
require 'active_support/all'
|
10
|
-
|
11
|
-
describe ActiveMocker::SchemaReader do
|
12
|
-
|
13
|
-
let(:schema_file){ File.join(File.expand_path('../../', __FILE__), 'schema.rb') }
|
14
|
-
|
15
|
-
let(:example_schema){
|
16
|
-
StringReader.new(
|
17
|
-
<<-eos
|
18
|
-
ActiveRecord::Schema.define(version: 20140327205359) do
|
19
|
-
|
20
|
-
create_table "people", force: true do |t|
|
21
|
-
t.integer "company_id"
|
22
|
-
t.string "first_name", limit: 128
|
23
|
-
t.string "middle_name", limit: 128
|
24
|
-
t.string "last_name", limit: 128
|
25
|
-
t.string "address_1", limit: 200
|
26
|
-
t.string "address_2", limit: 100
|
27
|
-
t.string "city", limit: 100
|
28
|
-
t.integer "state_id"
|
29
|
-
t.integer "zip_code_id"
|
30
|
-
t.string "title", limit: 150
|
31
|
-
t.string "department", limit: 150
|
32
|
-
t.string "person_email", limit: 150
|
33
|
-
t.string "work_phone", limit: 20
|
34
|
-
t.string "cell_phone", limit: 20
|
35
|
-
t.string "home_phone", limit: 20
|
36
|
-
t.string "fax", limit: 20
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
create_table "zip_codes", force: true do |t|
|
41
|
-
t.string "zip_code", limit: 9
|
42
|
-
t.integer "state_id"
|
43
|
-
t.integer "cola_by_fip_id"
|
44
|
-
t.string "city_name", limit: 100
|
45
|
-
t.string "County_name", limit: 100
|
46
|
-
t.decimal "City_Latitude", precision: 8, scale: 4
|
47
|
-
t.decimal "City_Longitude", precision: 8, scale: 4
|
48
|
-
end
|
49
|
-
|
50
|
-
add_index "zip_codes", ["zip_code"], name: "index_zip_codes_on_zip_code", unique: true, using: :btree
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
eos
|
55
|
-
)
|
56
|
-
}
|
57
|
-
|
58
|
-
context 'inject string_reader as file_reader' do
|
59
|
-
|
60
|
-
let(:subject){described_class.new({schema_file:nil, file_reader: example_schema, clear_cache: true})}
|
61
|
-
|
62
|
-
let!(:search){subject.search(nil)}
|
63
|
-
|
64
|
-
it 'let not read a file but return a string instead to be evaluated' do
|
65
|
-
tables = subject.tables
|
66
|
-
expect(tables.first.name).to eq 'people'
|
67
|
-
expect(tables.last.name).to eq 'zip_codes'
|
68
|
-
expect(tables.last.fields.count).to eq 8
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
|
-
context 'reads from file' do
|
74
|
-
|
75
|
-
let(:subject){described_class.new({schema_file: schema_file})}
|
76
|
-
|
77
|
-
|
78
|
-
describe '#search' do
|
79
|
-
|
80
|
-
it 'takes a table name and will return its attributes' do
|
81
|
-
described_class.new({schema_file: schema_file}).search(nil)
|
82
|
-
end
|
83
|
-
|
84
|
-
end
|
85
|
-
|
86
|
-
let(:tables){subject.search("people")}
|
87
|
-
|
88
|
-
describe '#column_names' do
|
89
|
-
|
90
|
-
it 'returns an array of columns from the schema.rb' do
|
91
|
-
tables
|
92
|
-
expect(subject.tables.first.name).to eq 'people'
|
93
|
-
expect(subject.tables.first.column_names).to eq ["id", "company_id", "first_name", "middle_name", "last_name", "address_1", "address_2", "city", "state_id", "zip_code_id", "title", "department", "person_email", "work_phone", "cell_phone", "home_phone", "fax", "user_id_assistant", "birth_date", "needs_review", "created_at", "updated_at"]
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
97
|
-
|
98
|
-
describe '#fields' do
|
99
|
-
|
100
|
-
it 'returns all fields from schema' do
|
101
|
-
tables
|
102
|
-
expect(subject.tables.first.fields[1].to_h).to eq({:name=>"company_id", :type=>:integer, :options=>{}})
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|
data/spec/lib/model.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
class Model < ActiveRecord::Base
|
2
|
-
include FooBar
|
3
|
-
extend Baz
|
4
|
-
|
5
|
-
include ModelCore::PlanService::Dah
|
6
|
-
|
7
|
-
belongs_to :company, class_name: 'PlanServiceCategory', foreign_key: 'category_id'
|
8
|
-
belongs_to :person, through: 'customer'
|
9
|
-
has_many :users
|
10
|
-
has_one :account
|
11
|
-
has_and_belongs_to_many :disclosures
|
12
|
-
devise :database_authenticatable, :registerable,
|
13
|
-
:recoverable, :rememberable, :trackable, :validatable
|
14
|
-
|
15
|
-
def self.duper(value, *args)
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
scope :named, ->(name, value=nil, options={}) { }
|
20
|
-
|
21
|
-
def foo(foobar, value)
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.foo
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
def super
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.bang!
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def bar
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
data/spec/lib/person.rb
DELETED
data/spec/lib/readme_spec.rb
DELETED
@@ -1,199 +0,0 @@
|
|
1
|
-
# require 'rspec'
|
2
|
-
# $:.unshift File.expand_path('../../../active_mocker', __FILE__)
|
3
|
-
# require 'active_mocker'
|
4
|
-
# require 'string_reader'
|
5
|
-
#
|
6
|
-
# describe 'ReadMe', pending:true do
|
7
|
-
#
|
8
|
-
# before(:each) do
|
9
|
-
# ActiveMocker.configure do |config|
|
10
|
-
# # Required Options
|
11
|
-
# config.schema_file = ""
|
12
|
-
# config.model_dir = ""
|
13
|
-
# config.schema_file_reader = schema_file
|
14
|
-
# config.model_file_reader = model_file
|
15
|
-
# config.mock_dir =
|
16
|
-
# config.logger = Logger.new(STDOUT)
|
17
|
-
# end
|
18
|
-
# end
|
19
|
-
#
|
20
|
-
# let(:schema_file){
|
21
|
-
# StringReader.new <<-eos
|
22
|
-
#
|
23
|
-
# ActiveRecord::Schema.define(version: 20140327205359) do
|
24
|
-
#
|
25
|
-
# create_table "people", force: true do |t|
|
26
|
-
# t.integer "account_id"
|
27
|
-
# t.string "first_name", limit: 128
|
28
|
-
# t.string "last_name", limit: 128
|
29
|
-
# t.string "address", limit: 200
|
30
|
-
# t.string "city", limit: 100
|
31
|
-
# end
|
32
|
-
#
|
33
|
-
# end
|
34
|
-
#
|
35
|
-
# eos
|
36
|
-
# }
|
37
|
-
#
|
38
|
-
# let(:model_file){
|
39
|
-
# StringReader.new <<-eos
|
40
|
-
# class Person < ActiveRecord::Base
|
41
|
-
# belongs_to :account
|
42
|
-
#
|
43
|
-
# def bar(name, type=nil)
|
44
|
-
# puts name
|
45
|
-
# end
|
46
|
-
#
|
47
|
-
# def self.bar
|
48
|
-
# end
|
49
|
-
#
|
50
|
-
# end
|
51
|
-
# eos
|
52
|
-
# }
|
53
|
-
#
|
54
|
-
# before do
|
55
|
-
# ActiveMocker.mock('Person')
|
56
|
-
# end
|
57
|
-
#
|
58
|
-
# let(:person_mock){PersonMock}
|
59
|
-
#
|
60
|
-
# describe 'Usage' do
|
61
|
-
#
|
62
|
-
# it 'Mock a Person' do
|
63
|
-
# expect(ActiveMocker.mock('Person')).to eq PersonMock
|
64
|
-
# end
|
65
|
-
#
|
66
|
-
# it '::column_names' do
|
67
|
-
# expect(PersonMock.column_names).to eq ["id", "account_id", "first_name", "last_name", "address", "city"]
|
68
|
-
# end
|
69
|
-
#
|
70
|
-
# it '::new' do
|
71
|
-
# expect(PersonMock.new(first_name: "Dustin", last_name: "Zeisler").inspect).to eq("#<PersonMock id: nil, account_id: nil, first_name: \"Dustin\", last_name: \"Zeisler\", address: nil, city: nil>")
|
72
|
-
# end
|
73
|
-
#
|
74
|
-
# it '#first_name' do
|
75
|
-
# person_mock = PersonMock.new(first_name: "Dustin", last_name: "Zeisler")
|
76
|
-
# expect( person_mock.first_name).to eq 'Dustin'
|
77
|
-
# end
|
78
|
-
#
|
79
|
-
# end
|
80
|
-
#
|
81
|
-
# describe 'When schema.rb changes, the mock fails' do
|
82
|
-
#
|
83
|
-
# let(:schema_file){
|
84
|
-
# StringReader.new <<-eos
|
85
|
-
#
|
86
|
-
# ActiveRecord::Schema.define(version: 20140327205359) do
|
87
|
-
#
|
88
|
-
# create_table "people", force: true do |t|
|
89
|
-
# t.integer "account_id"
|
90
|
-
# t.string "f_name", limit: 128
|
91
|
-
# t.string "l_name", limit: 128
|
92
|
-
# t.string "address", limit: 200
|
93
|
-
# t.string "city", limit: 100
|
94
|
-
# end
|
95
|
-
#
|
96
|
-
# end
|
97
|
-
#
|
98
|
-
# eos
|
99
|
-
# }
|
100
|
-
#
|
101
|
-
# it 'fails' do
|
102
|
-
# expect{ActiveMocker.mock('Person').new(first_name: "Dustin", last_name: "Zeisler")}.to raise_error(RuntimeError)
|
103
|
-
# end
|
104
|
-
#
|
105
|
-
# end
|
106
|
-
#
|
107
|
-
# describe 'Mocking instance and class methods' do
|
108
|
-
#
|
109
|
-
# it 'bar is not Implemented' do
|
110
|
-
# expect{person_mock.bar}.to raise_error( RuntimeError, '::bar is not Implemented for Class: PersonMock' )
|
111
|
-
# end
|
112
|
-
#
|
113
|
-
# it 'is implemented' do
|
114
|
-
# person_mock.mock_instance_method(:bar) do |name, type=nil|
|
115
|
-
# "Now implemented with #{name} and #{type}"
|
116
|
-
# end
|
117
|
-
#
|
118
|
-
# expect(person_mock.new.bar('foo', 'type')).to eq "Now implemented with foo and type"
|
119
|
-
#
|
120
|
-
# person_mock.mock_class_method(:bar) do
|
121
|
-
# "Now implemented"
|
122
|
-
# end
|
123
|
-
#
|
124
|
-
# expect(person_mock.bar).to eq "Now implemented"
|
125
|
-
#
|
126
|
-
# end
|
127
|
-
#
|
128
|
-
# it 'has argument error' do
|
129
|
-
#
|
130
|
-
# person_mock.mock_instance_method(:bar) do |name, type=nil|
|
131
|
-
# "Now implemented with #{name} and #{type}"
|
132
|
-
# end
|
133
|
-
#
|
134
|
-
# expect{person_mock.new.bar}.to raise_error(ArgumentError, 'wrong number of arguments (0 for 1..2)')
|
135
|
-
#
|
136
|
-
# end
|
137
|
-
#
|
138
|
-
# end
|
139
|
-
#
|
140
|
-
# describe 'When the model changes, the mock fails' do
|
141
|
-
#
|
142
|
-
# context 'different arguments' do
|
143
|
-
#
|
144
|
-
# let(:model_file){
|
145
|
-
# StringReader.new <<-eos
|
146
|
-
# class Person < ActiveRecord::Base
|
147
|
-
# belongs_to :account
|
148
|
-
#
|
149
|
-
# def bar(name)
|
150
|
-
# puts name
|
151
|
-
# end
|
152
|
-
#
|
153
|
-
# end
|
154
|
-
# eos
|
155
|
-
# }
|
156
|
-
#
|
157
|
-
# it 'has argument error' do
|
158
|
-
#
|
159
|
-
# person_mock.mock_instance_method(:bar) do |name, type=nil|
|
160
|
-
# "Now implemented with #{name} and #{type}"
|
161
|
-
# end
|
162
|
-
#
|
163
|
-
# expect{person_mock.new.bar('foo', 'type')}.to raise_error(ArgumentError, 'wrong number of arguments (2 for 1)')
|
164
|
-
#
|
165
|
-
# end
|
166
|
-
#
|
167
|
-
# end
|
168
|
-
#
|
169
|
-
# context 'different method name' do
|
170
|
-
#
|
171
|
-
# let(:model_file){
|
172
|
-
# StringReader.new <<-eos
|
173
|
-
# class Person < ActiveRecord::Base
|
174
|
-
# belongs_to :account
|
175
|
-
#
|
176
|
-
# def foo(name)
|
177
|
-
# puts name
|
178
|
-
# end
|
179
|
-
#
|
180
|
-
# end
|
181
|
-
#
|
182
|
-
# eos
|
183
|
-
# }
|
184
|
-
#
|
185
|
-
# it 'when method name changes' do
|
186
|
-
#
|
187
|
-
# person_mock.mock_instance_method(:bar) do |name, type=nil|
|
188
|
-
# "Now implemented with #{name} and #{type}"
|
189
|
-
# end
|
190
|
-
#
|
191
|
-
# expect{person_mock.new.bar}.to raise_error(NoMethodError)
|
192
|
-
#
|
193
|
-
# end
|
194
|
-
#
|
195
|
-
# end
|
196
|
-
#
|
197
|
-
# end
|
198
|
-
#
|
199
|
-
# end
|
@@ -1,202 +0,0 @@
|
|
1
|
-
require 'rspec'
|
2
|
-
require 'rspec/given'
|
3
|
-
$:.unshift File.expand_path('../../../lib', __FILE__)
|
4
|
-
require 'active_mocker/reparameterize'
|
5
|
-
|
6
|
-
describe ActiveMocker::Reparameterize do
|
7
|
-
|
8
|
-
describe '::call' do
|
9
|
-
|
10
|
-
describe 'create parameter arguments' do
|
11
|
-
|
12
|
-
context 'keyreq' do
|
13
|
-
|
14
|
-
Given(:parameters) { [[:keyreq, 'named_param']] }
|
15
|
-
|
16
|
-
When(:call) { described_class.call(parameters) }
|
17
|
-
|
18
|
-
Then { expect(call).to eq('named_param:') }
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
context 'key' do
|
23
|
-
|
24
|
-
Given(:parameters) { [[:key, 'named_param']] }
|
25
|
-
|
26
|
-
When (:call) { described_class.call(parameters) }
|
27
|
-
|
28
|
-
Then { expect(call).to eq('named_param: nil') }
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'req' do
|
33
|
-
|
34
|
-
Given(:parameters) { [[:req, 'req_param']] }
|
35
|
-
|
36
|
-
When (:call) { described_class.call(parameters) }
|
37
|
-
|
38
|
-
Then { expect(call).to eq('req_param') }
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'rest' do
|
43
|
-
|
44
|
-
Given(:parameters) { [[:rest, 'rest_param']] }
|
45
|
-
|
46
|
-
When (:call) { described_class.call(parameters) }
|
47
|
-
|
48
|
-
Then { expect(call).to eq('*rest_param') }
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
|
53
|
-
context 'opt' do
|
54
|
-
|
55
|
-
Given(:parameters) { [[:opt, 'opt_param']] }
|
56
|
-
|
57
|
-
When(:call) { described_class.call(parameters) }
|
58
|
-
|
59
|
-
Then { expect(call).to eq('opt_param=nil') }
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
context 'req, rest' do
|
64
|
-
|
65
|
-
Given(:parameters) { [[:req, 'req_param'], [:rest, 'rest_param']] }
|
66
|
-
|
67
|
-
When(:call) { described_class.call(parameters) }
|
68
|
-
|
69
|
-
Then { expect(call).to eq('req_param, *rest_param') }
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
|
-
context 'req, opt' do
|
74
|
-
|
75
|
-
Given(:parameters) { [[:req, 'req_param'], [:opt, 'opt_param']] }
|
76
|
-
|
77
|
-
When(:call) { described_class.call(parameters) }
|
78
|
-
|
79
|
-
Then { expect(call).to eq('req_param, opt_param=nil') }
|
80
|
-
|
81
|
-
end
|
82
|
-
|
83
|
-
context 'key, keyreq' do
|
84
|
-
|
85
|
-
Given(:parameters) { [[:key, 'named_param'], [:keyreq, 'named_param']] }
|
86
|
-
|
87
|
-
When(:call) { described_class.call(parameters) }
|
88
|
-
|
89
|
-
Then { expect(call).to eq('named_param: nil, named_param:') }
|
90
|
-
|
91
|
-
end
|
92
|
-
|
93
|
-
context 'rep, key' do
|
94
|
-
|
95
|
-
Given(:parameters) { [[:key, 'key_param'], [:req, 'req_param']] }
|
96
|
-
|
97
|
-
When (:call) { described_class.call(parameters) }
|
98
|
-
|
99
|
-
Then { expect(call).to eq('key_param: nil, req_param') }
|
100
|
-
|
101
|
-
end
|
102
|
-
|
103
|
-
end
|
104
|
-
|
105
|
-
context 'create a parameter passable list' do
|
106
|
-
|
107
|
-
context 'keyreq' do
|
108
|
-
|
109
|
-
Given(:parameters) { [[:keyreq, 'named_param']] }
|
110
|
-
|
111
|
-
When (:call) { described_class.call(parameters, param_list: true) }
|
112
|
-
|
113
|
-
Then { expect(call).to eq('named_param: named_param') }
|
114
|
-
|
115
|
-
end
|
116
|
-
|
117
|
-
context 'key' do
|
118
|
-
|
119
|
-
Given(:parameters) { [[:key, 'named_param']] }
|
120
|
-
|
121
|
-
When (:call) { described_class.call(parameters, param_list: true) }
|
122
|
-
|
123
|
-
Then { expect(call).to eq('named_param: named_param') }
|
124
|
-
|
125
|
-
end
|
126
|
-
|
127
|
-
context 'req' do
|
128
|
-
|
129
|
-
Given(:parameters) { [[:req, 'req_param']] }
|
130
|
-
|
131
|
-
When (:call) { described_class.call(parameters, param_list: true) }
|
132
|
-
|
133
|
-
Then { expect(call).to eq('req_param') }
|
134
|
-
|
135
|
-
end
|
136
|
-
|
137
|
-
context 'rest' do
|
138
|
-
|
139
|
-
Given(:parameters) { [[:rest, 'rest_param']] }
|
140
|
-
|
141
|
-
When (:call) { described_class.call(parameters, param_list: true) }
|
142
|
-
|
143
|
-
Then { expect(call).to eq('rest_param') }
|
144
|
-
|
145
|
-
end
|
146
|
-
|
147
|
-
|
148
|
-
context 'opt' do
|
149
|
-
|
150
|
-
Given(:parameters) { [[:opt, 'opt_param']] }
|
151
|
-
|
152
|
-
When (:call) { described_class.call(parameters, param_list: true) }
|
153
|
-
|
154
|
-
Then { expect(call).to eq('opt_param') }
|
155
|
-
|
156
|
-
end
|
157
|
-
|
158
|
-
context 'req, rest' do
|
159
|
-
|
160
|
-
Given(:parameters) { [[:req, 'req_param'], [:rest, 'rest_param']] }
|
161
|
-
|
162
|
-
When (:call) { described_class.call(parameters, param_list: true) }
|
163
|
-
|
164
|
-
Then { expect(call).to eq('req_param, rest_param') }
|
165
|
-
|
166
|
-
end
|
167
|
-
|
168
|
-
context 'req, opt' do
|
169
|
-
|
170
|
-
Given(:parameters) { [[:req, 'req_param'], [:opt, 'opt_param']] }
|
171
|
-
|
172
|
-
When (:call) { described_class.call(parameters, param_list: true) }
|
173
|
-
|
174
|
-
Then { expect(call).to eq('req_param, opt_param') }
|
175
|
-
|
176
|
-
end
|
177
|
-
|
178
|
-
context 'key, keyreq' do
|
179
|
-
|
180
|
-
Given(:parameters) { [[:key, 'key_param'], [:keyreq, 'keyreq_param']] }
|
181
|
-
|
182
|
-
When (:call) { described_class.call(parameters, param_list: true) }
|
183
|
-
|
184
|
-
Then { expect(call).to eq('key_param: key_param, keyreq_param: keyreq_param') }
|
185
|
-
|
186
|
-
end
|
187
|
-
|
188
|
-
context 'rep, key' do
|
189
|
-
|
190
|
-
Given(:parameters) { [[:key, 'key_param'], [:req, 'req_param']] }
|
191
|
-
|
192
|
-
When (:call) { described_class.call(parameters, param_list: true) }
|
193
|
-
|
194
|
-
Then { expect(call).to eq('key_param: key_param, req_param') }
|
195
|
-
|
196
|
-
end
|
197
|
-
|
198
|
-
end
|
199
|
-
|
200
|
-
end
|
201
|
-
|
202
|
-
end
|