active_mocker 2.4.0.pre3 → 2.4.0.pre4
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/CHANGELOG.md +12 -0
- data/lib/active_mocker/mock_creator.rb +45 -10
- data/lib/active_mocker/mock_template/_defined_methods.erb +5 -5
- data/lib/active_mocker/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc207130a0c46ded87f8d86a71bf1cdc8519998e
|
4
|
+
data.tar.gz: db15587b7ba52220b56090f7772a2d2886c8133e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba893dcaf811234838ff1c6b3f68f3924d79081d2ac6684e7d349006e1830dc212c2ef0806c6525e9292a33a79cdac0dc059ac681f043a64f08eb949722264e4
|
7
|
+
data.tar.gz: 31f2c55772b8862c114fc8da4ea410e24024281942e7e8b52a11ed22e2f1525e79e134be02aaef58e5699297b7fe89cbcec3ebb2fdc02c63bf7c41951dac86a7
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
# Changelog
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
+
## 2.4.0.pre4 - 2016-10-20
|
5
|
+
### Enhancement
|
6
|
+
- Whitelist methods to import into mock code by adding a comment with `ActiveMocker.safe_methods(*methods)`
|
7
|
+
```ruby
|
8
|
+
# ActiveMocker.safe_methods :full_name
|
9
|
+
class User < ActiveRecord::Base
|
10
|
+
def full_name
|
11
|
+
"#{last_name}, #{first_name}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
```
|
15
|
+
|
4
16
|
## 2.4.0.pre3 - 2016-10-18
|
5
17
|
### Fix
|
6
18
|
- Add missing requires
|
@@ -102,6 +102,13 @@ module ActiveMocker
|
|
102
102
|
|
103
103
|
# -- END defaults -- #
|
104
104
|
|
105
|
+
def parent_class_constant
|
106
|
+
v = ParentClass.new(parsed_source: class_introspector.parsed_source,
|
107
|
+
klasses_to_be_mocked: klasses_to_be_mocked,
|
108
|
+
mock_append_name: mock_append_name).call
|
109
|
+
@parent_class_constant = v.parent_class
|
110
|
+
end
|
111
|
+
|
105
112
|
def verify_class
|
106
113
|
v = ParentClass.new(parsed_source: class_introspector.parsed_source,
|
107
114
|
klasses_to_be_mocked: klasses_to_be_mocked,
|
@@ -320,13 +327,13 @@ module ActiveMocker
|
|
320
327
|
end
|
321
328
|
end
|
322
329
|
|
323
|
-
Method = Struct.new(:name, :arguments)
|
330
|
+
Method = Struct.new(:name, :arguments, :body)
|
324
331
|
|
325
332
|
module Scopes
|
326
333
|
def scope_methods
|
327
334
|
class_introspector.class_macros.select { |h| h.keys.first == :scope }.map do |h|
|
328
335
|
a = h.values.first.first
|
329
|
-
Method.new(a[0], ReverseParameters.new(a[1], blocks_as_values: true))
|
336
|
+
Method.new(a[0], ReverseParameters.new(a[1], blocks_as_values: true), nil)
|
330
337
|
end
|
331
338
|
end
|
332
339
|
end
|
@@ -352,11 +359,11 @@ module ActiveMocker
|
|
352
359
|
|
353
360
|
module DefinedMethods
|
354
361
|
def instance_methods
|
355
|
-
class_introspector
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
362
|
+
meths = class_introspector.get_class.public_instance_methods(false).sort
|
363
|
+
if safe_methods.include?(:initialize)
|
364
|
+
meths << :initialize
|
365
|
+
end
|
366
|
+
meths.map { |m| create_method(m, :instance_method) }
|
360
367
|
end
|
361
368
|
|
362
369
|
def class_methods
|
@@ -369,10 +376,38 @@ module ActiveMocker
|
|
369
376
|
|
370
377
|
private
|
371
378
|
|
379
|
+
def safe_methods
|
380
|
+
@safe_methods ||= class_introspector.parsed_source.comments.flat_map do |comment|
|
381
|
+
if comment.text.include?("ActiveMocker.safe_methods")
|
382
|
+
ActiveMocker.module_eval(comment.text.delete("#"))
|
383
|
+
end
|
384
|
+
end
|
385
|
+
end
|
386
|
+
|
387
|
+
module ActiveMocker
|
388
|
+
def self.safe_methods(*methods)
|
389
|
+
methods
|
390
|
+
end
|
391
|
+
end
|
392
|
+
|
372
393
|
def create_method(m, type)
|
373
|
-
|
374
|
-
|
375
|
-
|
394
|
+
if safe_methods.include?(m)
|
395
|
+
def_method = class_introspector.parsed_source.defs.detect { |meth| meth.name == m }
|
396
|
+
Method.new(
|
397
|
+
m,
|
398
|
+
def_method.arguments,
|
399
|
+
def_method.body
|
400
|
+
)
|
401
|
+
else
|
402
|
+
Method.new(
|
403
|
+
m,
|
404
|
+
ReverseParameters.new(
|
405
|
+
class_introspector.get_class.send(type, m).parameters,
|
406
|
+
blocks_as_values: true
|
407
|
+
).parameters,
|
408
|
+
"call_mock_method(method: __method__, caller: Kernel.caller, arguments: [])"
|
409
|
+
)
|
410
|
+
end
|
376
411
|
end
|
377
412
|
end
|
378
413
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<% instance_methods.each do |method| -%>
|
2
|
-
def <%= method.name %><%= "(#{method.arguments
|
3
|
-
|
2
|
+
def <%= method.name %><%= "(#{method.arguments})" unless method.arguments.blank? %>
|
3
|
+
<%= method.body %>
|
4
4
|
end
|
5
5
|
<% end -%>
|
6
6
|
<% class_methods.each do |method| -%>
|
7
|
-
def self.<%= method.name %><%= "(#{method.arguments
|
8
|
-
|
7
|
+
def self.<%= method.name %><%= "(#{method.arguments})" unless method.arguments.blank? %>
|
8
|
+
<%= method.body %>
|
9
9
|
end
|
10
|
-
<% end -%>
|
10
|
+
<% end -%>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_mocker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.0.
|
4
|
+
version: 2.4.0.pre4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dustin Zeisler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
117
|
+
version: 0.7.1
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
124
|
+
version: 0.7.1
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: bundler
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|