mock_api 0.2.2 → 0.4.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: 1eaae08cfc3a1fe35bef04e1f1c926a18c228dcec1250130c8c4f3a70a519659
4
+ data.tar.gz: bfc085e8af5aa04c85e24424b565649b45e6ede30051cf1dbbe15b4714b5e35f
5
5
  SHA512:
6
- metadata.gz: 9e88c27a6bee6044a7172933b393b586597c59ab2bc01bf68c9314c8ad7349e9ba237faf7e04c6fc8ddf59c7fe7e71a4d4a99ccf2b50b8df5bb86b82649802fd
7
- data.tar.gz: 067674ade70c867d8c7506f44c583878965aee75ec7f73f3b35c6a357f1a42295dbea7ca50464f6c625f155f09ecdac5e32e8bf008639102aa80a4f28dc3d6f4
6
+ metadata.gz: e60469aac27e8ec1ea5a5a8aedca38c48f7aa73aae7d9a32098c449e026a4bd7c5e0fa66f917c1d51f2768ad0a54f47724d7da4b59a6eca66d86048975164a4e
7
+ data.tar.gz: d340ae7b577987c4ce993b3d7ada4deb599b8360e0b8a9b17edba1db45422c1d5e9f95883f831b595630e9645b5ee1eca07d765b2822561136c56780fdc053de
@@ -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,10 @@
1
+ module MockApi
2
+ class Railtie < Rails::Railtie
3
+ initializer "mock_api.add_mocks_to_autoload_paths", before: :set_autoload_paths do |app|
4
+ paths = ["#{Rails.root}/test/api_mocks", "#{Rails.root}/spec/api_mocks"]
5
+ paths
6
+ .select { |path| Dir.exist?(path) }
7
+ .each { |path| app.config.autoload_paths << path }
8
+ end
9
+ end
10
+ 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.4.0"
3
3
  end
data/lib/mock_api.rb CHANGED
@@ -1,12 +1,14 @@
1
- require_relative 'mock_api/version'
2
- require_relative 'mock_api/runner'
3
- require_relative 'mock_api/store_registry'
1
+ require 'mock_api/version'
2
+ require 'mock_api/mock_definition'
3
+ require 'mock_api/runner'
4
+ require 'mock_api/store_registry'
5
+ require 'mock_api/railtie' if defined?(Rails::Railtie)
4
6
 
5
7
  module MockApi
6
8
  def self.included(klass)
7
9
  klass.extend(ClassMethods)
8
10
  class << klass
9
- attr_accessor :runner, :store
11
+ attr_accessor :runner
10
12
  end
11
13
  end
12
14
 
@@ -16,35 +18,23 @@ module MockApi
16
18
  definition.instance_exec(&block)
17
19
  store = nil
18
20
  unless definition.entity_types.nil?
19
- store = StoreRegistry.instance.find_or_create(name, definition.entity_types)
21
+ store = StoreRegistry.register(name, definition.entity_types)
20
22
  extend(store.mixin)
21
23
  include(store.mixin)
22
24
  end
23
25
  self.runner = Runner.new(url: definition._url, server: self, store: store)
24
26
  end
25
27
 
26
- def hooks
27
- runner.hooks
28
+ def run(url = nil)
29
+ url.nil? ? runner.run : runner.run(url)
28
30
  end
29
31
 
30
32
  def reset
31
33
  runner.reset
32
34
  end
33
35
 
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
36
+ def hooks
37
+ runner.hooks
48
38
  end
49
39
  end
50
40
  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.4.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-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -116,6 +116,10 @@ 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/railtie.rb
122
+ - lib/mock_api/rspec.rb
119
123
  - lib/mock_api/runner.rb
120
124
  - lib/mock_api/store.rb
121
125
  - lib/mock_api/store_registry.rb