mock_api 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1cd4eb2356fc4a77c03827c59fe71317b11a5f65c21b69753cdb132ce9e1232e
4
- data.tar.gz: 67471f95d1a847de19730defc62f5b3e715113d9d8dca1fc1d38c3f770c02f4f
3
+ metadata.gz: b121379ff62e2f7a4dc7717f98e2801eb309c8a1b4f35e4ca9996c088caccd90
4
+ data.tar.gz: aa59c66188eeabf1779cba5818d35d3c71daa255912c8c5e407d294cd05392d4
5
5
  SHA512:
6
- metadata.gz: 9e88c27a6bee6044a7172933b393b586597c59ab2bc01bf68c9314c8ad7349e9ba237faf7e04c6fc8ddf59c7fe7e71a4d4a99ccf2b50b8df5bb86b82649802fd
7
- data.tar.gz: 067674ade70c867d8c7506f44c583878965aee75ec7f73f3b35c6a357f1a42295dbea7ca50464f6c625f155f09ecdac5e32e8bf008639102aa80a4f28dc3d6f4
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,13 @@
1
+ module MockApi
2
+ class MockDefinition
3
+ attr_reader :_url, :entity_types
4
+
5
+ def url(url)
6
+ @_url = url
7
+ end
8
+
9
+ def store(*entity_types)
10
+ @entity_types = entity_types
11
+ end
12
+ end
13
+ end
@@ -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
@@ -21,38 +21,7 @@ module MockApi
21
21
  end
22
22
 
23
23
  def hooks
24
- this = self
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
@@ -1,16 +1,16 @@
1
1
  require_relative 'store'
2
2
 
3
3
  module MockApi
4
- class StoreRegistry
5
- include Singleton
6
-
7
- def initialize
8
- @stores = {}
4
+ module StoreRegistry
5
+ class << self
6
+ attr_accessor :stores
9
7
  end
10
8
 
11
- def find_or_create(name, entity_types)
12
- return @stores[name] if @stores.key?(name)
13
- @stores[name] = Store.new(*entity_types)
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
14
  end
15
15
  end
16
16
  end
@@ -1,3 +1,3 @@
1
1
  module MockApi
2
- VERSION = "0.2.2"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/mock_api.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require_relative 'mock_api/version'
2
+ require_relative 'mock_api/mock_definition'
2
3
  require_relative 'mock_api/runner'
3
4
  require_relative 'mock_api/store_registry'
4
5
 
@@ -6,7 +7,7 @@ module MockApi
6
7
  def self.included(klass)
7
8
  klass.extend(ClassMethods)
8
9
  class << klass
9
- attr_accessor :runner, :store
10
+ attr_accessor :runner
10
11
  end
11
12
  end
12
13
 
@@ -16,35 +17,23 @@ module MockApi
16
17
  definition.instance_exec(&block)
17
18
  store = nil
18
19
  unless definition.entity_types.nil?
19
- store = StoreRegistry.instance.find_or_create(name, definition.entity_types)
20
+ store = StoreRegistry.register(name, definition.entity_types)
20
21
  extend(store.mixin)
21
22
  include(store.mixin)
22
23
  end
23
24
  self.runner = Runner.new(url: definition._url, server: self, store: store)
24
25
  end
25
26
 
26
- def hooks
27
- runner.hooks
27
+ def run(url = nil)
28
+ url.nil? ? runner.run : runner.run(url)
28
29
  end
29
30
 
30
31
  def reset
31
32
  runner.reset
32
33
  end
33
34
 
34
- def run(url = nil)
35
- url.nil? ? runner.run : runner.run(url)
36
- end
37
-
38
- class MockDefinition
39
- attr_reader :_url, :entity_types
40
-
41
- def url(url)
42
- @_url = url
43
- end
44
-
45
- def store(*entity_types)
46
- @entity_types = entity_types
47
- end
35
+ def hooks
36
+ runner.hooks
48
37
  end
49
38
  end
50
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.2.2
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-10-01 00:00:00.000000000 Z
11
+ date: 2022-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -116,6 +116,9 @@ 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
121
124
  - lib/mock_api/store_registry.rb