mock_api 0.2.1 → 0.3.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/lib/mock_api/minitest.rb +20 -0
- data/lib/mock_api/mock_definition.rb +13 -0
- data/lib/mock_api/rspec.rb +17 -0
- data/lib/mock_api/runner.rb +1 -32
- data/lib/mock_api/store_registry.rb +16 -0
- data/lib/mock_api/version.rb +1 -1
- data/lib/mock_api.rb +13 -21
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b121379ff62e2f7a4dc7717f98e2801eb309c8a1b4f35e4ca9996c088caccd90
|
4
|
+
data.tar.gz: aa59c66188eeabf1779cba5818d35d3c71daa255912c8c5e407d294cd05392d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cbdd4ac68a823a8cf205aacfe8c08c5d87b8361b85c74bbd824c69f3d191b0e944424ad3e841b06049b8d7a1d1dece6723e15f263b6637efe488c13dbaac65d1
|
7
|
+
data.tar.gz: 90f089659a7c8da0b5f83a5c70a4008844f154e8d22f2c5fb9b01db4ca0e94e3ad38a0fb03f5deb4ddf1c6d616fbdcf3059a7a35453c6e65f152842288f38e18
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'mock_api'
|
2
|
+
|
3
|
+
module MockApi
|
4
|
+
class Runner
|
5
|
+
def hooks
|
6
|
+
runner = self
|
7
|
+
Module.new do
|
8
|
+
define_method :before_setup do
|
9
|
+
runner.run
|
10
|
+
super()
|
11
|
+
end
|
12
|
+
define_method :after_teardown do
|
13
|
+
super()
|
14
|
+
runner.reset
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'mock_api'
|
2
|
+
|
3
|
+
module MockApi
|
4
|
+
class Runner
|
5
|
+
def hooks
|
6
|
+
runner = self
|
7
|
+
Module.new do
|
8
|
+
define_singleton_method :included do |klass|
|
9
|
+
klass.class_eval do
|
10
|
+
before { runner.run }
|
11
|
+
after { runner.reset }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/mock_api/runner.rb
CHANGED
@@ -21,38 +21,7 @@ module MockApi
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def hooks
|
24
|
-
|
25
|
-
Module.new do
|
26
|
-
define_singleton_method :included do |klass|
|
27
|
-
klass.class_eval do
|
28
|
-
if klass.method_defined?(:before_setup) # minitest
|
29
|
-
klass.define_method(:before_setup) do
|
30
|
-
super()
|
31
|
-
this.run
|
32
|
-
end
|
33
|
-
elsif respond_to?(:setup) # rails
|
34
|
-
setup { this.run }
|
35
|
-
elsif respond_to?(:before) # rspec
|
36
|
-
before { this.run }
|
37
|
-
else
|
38
|
-
raise "Unable to initialize MockApi setup hook in #{klass}"
|
39
|
-
end
|
40
|
-
|
41
|
-
if klass.method_defined?(:before_teardown) # minitest
|
42
|
-
klass.define_method(:before_teardown) do
|
43
|
-
super()
|
44
|
-
this.reset
|
45
|
-
end
|
46
|
-
elsif respond_to?(:teardown) # rails
|
47
|
-
teardown { this.reset }
|
48
|
-
elsif respond_to?(:after) # rspec
|
49
|
-
after { this.reset }
|
50
|
-
else
|
51
|
-
raise "Unable to initialize MockApi teardown hook in #{klass}"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
24
|
+
raise "MockApi hooks method needs 'mock_api/minitest' or 'mock_api/rspec' to be required"
|
56
25
|
end
|
57
26
|
end
|
58
27
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'store'
|
2
|
+
|
3
|
+
module MockApi
|
4
|
+
module StoreRegistry
|
5
|
+
class << self
|
6
|
+
attr_accessor :stores
|
7
|
+
end
|
8
|
+
|
9
|
+
self.stores = {}
|
10
|
+
|
11
|
+
def self.register(name, entity_types)
|
12
|
+
return stores[name] if stores.key?(name)
|
13
|
+
stores[name] = Store.new(*entity_types)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/mock_api/version.rb
CHANGED
data/lib/mock_api.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
require_relative 'mock_api/version'
|
2
|
+
require_relative 'mock_api/mock_definition'
|
2
3
|
require_relative 'mock_api/runner'
|
3
|
-
require_relative 'mock_api/
|
4
|
+
require_relative 'mock_api/store_registry'
|
4
5
|
|
5
6
|
module MockApi
|
6
7
|
def self.included(klass)
|
7
8
|
klass.extend(ClassMethods)
|
8
9
|
class << klass
|
9
|
-
attr_accessor :runner
|
10
|
+
attr_accessor :runner
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
@@ -14,34 +15,25 @@ module MockApi
|
|
14
15
|
def mock(&block)
|
15
16
|
definition = MockDefinition.new
|
16
17
|
definition.instance_exec(&block)
|
17
|
-
|
18
|
+
store = nil
|
19
|
+
unless definition.entity_types.nil?
|
20
|
+
store = StoreRegistry.register(name, definition.entity_types)
|
21
|
+
extend(store.mixin)
|
22
|
+
include(store.mixin)
|
23
|
+
end
|
18
24
|
self.runner = Runner.new(url: definition._url, server: self, store: store)
|
19
|
-
extend(store.mixin)
|
20
|
-
include(store.mixin)
|
21
25
|
end
|
22
26
|
|
23
|
-
def
|
24
|
-
runner.
|
27
|
+
def run(url = nil)
|
28
|
+
url.nil? ? runner.run : runner.run(url)
|
25
29
|
end
|
26
30
|
|
27
31
|
def reset
|
28
32
|
runner.reset
|
29
33
|
end
|
30
34
|
|
31
|
-
def
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
class MockDefinition
|
36
|
-
attr_reader :_url, :entity_types
|
37
|
-
|
38
|
-
def url(url)
|
39
|
-
@_url = url
|
40
|
-
end
|
41
|
-
|
42
|
-
def store(*entity_types)
|
43
|
-
@entity_types = entity_types
|
44
|
-
end
|
35
|
+
def hooks
|
36
|
+
runner.hooks
|
45
37
|
end
|
46
38
|
end
|
47
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mock_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Kramer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -116,8 +116,12 @@ extensions: []
|
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
118
|
- lib/mock_api.rb
|
119
|
+
- lib/mock_api/minitest.rb
|
120
|
+
- lib/mock_api/mock_definition.rb
|
121
|
+
- lib/mock_api/rspec.rb
|
119
122
|
- lib/mock_api/runner.rb
|
120
123
|
- lib/mock_api/store.rb
|
124
|
+
- lib/mock_api/store_registry.rb
|
121
125
|
- lib/mock_api/version.rb
|
122
126
|
homepage: https://github.com/davidtkramer/mock_api
|
123
127
|
licenses:
|