rails_mocks 0.0.1
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 +7 -0
- data/README.md +3 -0
- data/lib/rails_mocks.rb +3 -0
- data/lib/rails_mocks/middleware.rb +37 -0
- data/lib/rails_mocks/rails.rb +17 -0
- data/lib/rails_mocks/stub.rb +49 -0
- data/lib/rails_mocks/version.rb +5 -0
- metadata +94 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 18844b035c16dde338319e066450327234660c9eb12d3a9c202e3e6f1bf601d4
|
4
|
+
data.tar.gz: 2a6493246d7d5f8e52d3f73def90060b8391a8423823aba45868da110bb2d77f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 287bbcdcf0f8d507644c53c34f89e8e290b6fabc8478f6b6e7c3cfe973c804029e6d4cd0d647033ad06ffa52cfe522cb47b0523bfc02e17152cc494ce40d63cd
|
7
|
+
data.tar.gz: f1aa861a3d1c78e21923a7f3491ed53689f37d9cb5aeaa060f8bd5ee0ab2a744e93097c6e6f2a1f466427c92d27e39d733dbed207edd9cc0a8a1aa376cb5c6e2
|
data/README.md
ADDED
data/lib/rails_mocks.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsMocks
|
4
|
+
class Middleware
|
5
|
+
HEADER_NAME = "HTTP_RAILS_MOCKS"
|
6
|
+
|
7
|
+
def initialize(app)
|
8
|
+
@app = app
|
9
|
+
end
|
10
|
+
|
11
|
+
def call(req)
|
12
|
+
return @app.call(req) if stubs(req).blank?
|
13
|
+
|
14
|
+
status, headers, response = nil
|
15
|
+
RSpec::Mocks.with_temporary_scope do
|
16
|
+
RSpec::Mocks::Syntax.enable_expect(self.class)
|
17
|
+
parsed_stubs(req).each do |stub|
|
18
|
+
allow(stub.allow).to(stub.receiver)
|
19
|
+
end
|
20
|
+
status, headers, response = @app.call(req)
|
21
|
+
end
|
22
|
+
[status, headers, response]
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def parsed_stubs(req)
|
28
|
+
JSON.parse(stubs(req), symbolize_names: true).map do |stub|
|
29
|
+
RailsMocks::Stub.new(stub)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def stubs(req)
|
34
|
+
req[HEADER_NAME]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsMocks
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
initializer "rails_mocks.configure_rails_initialization" do
|
6
|
+
insert_middleware
|
7
|
+
end
|
8
|
+
|
9
|
+
def insert_middleware
|
10
|
+
app.middleware.use RailsMocks::Middleware
|
11
|
+
end
|
12
|
+
|
13
|
+
def app
|
14
|
+
Rails.application
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsMocks
|
4
|
+
class Stub
|
5
|
+
include RSpec::Mocks::ExampleMethods
|
6
|
+
|
7
|
+
def initialize(stub)
|
8
|
+
@stub = stub
|
9
|
+
end
|
10
|
+
|
11
|
+
def allow
|
12
|
+
stub[:allow].constantize
|
13
|
+
end
|
14
|
+
|
15
|
+
def receiver
|
16
|
+
receiver = receive(_receive)
|
17
|
+
receiver.with(_with) if _with
|
18
|
+
receiver.and_return(_and_return) if _and_return
|
19
|
+
receiver
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
attr_reader :stub
|
25
|
+
|
26
|
+
def _receive
|
27
|
+
stub[:receive]
|
28
|
+
end
|
29
|
+
|
30
|
+
def _with
|
31
|
+
fetch_data(:with)
|
32
|
+
end
|
33
|
+
|
34
|
+
def _and_return
|
35
|
+
fetch_data(:and_return)
|
36
|
+
end
|
37
|
+
|
38
|
+
def fetch_data(key)
|
39
|
+
data = stub.fetch(key, {})
|
40
|
+
body = data[:body]
|
41
|
+
return double(body) if wrap_double?(data)
|
42
|
+
body
|
43
|
+
end
|
44
|
+
|
45
|
+
def wrap_double?(data)
|
46
|
+
data[:double]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rails_mocks
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Anton Kachan
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-07-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 6.1.3.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 6.1.3.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec-mocks
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.9.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.9.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry-byebug
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.7'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.7'
|
55
|
+
description: Provides rspec-mocks syntax from an external source like cypress
|
56
|
+
email:
|
57
|
+
- anton.kachan@freshly.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- README.md
|
63
|
+
- lib/rails_mocks.rb
|
64
|
+
- lib/rails_mocks/middleware.rb
|
65
|
+
- lib/rails_mocks/rails.rb
|
66
|
+
- lib/rails_mocks/stub.rb
|
67
|
+
- lib/rails_mocks/version.rb
|
68
|
+
homepage: https://github.com/anton-kachan/rails_mocks
|
69
|
+
licenses:
|
70
|
+
- MIT
|
71
|
+
metadata:
|
72
|
+
homepage_uri: https://github.com/anton-kachan/rails_mocks
|
73
|
+
source_code_uri: https://github.com/anton-kachan/rails_mocks
|
74
|
+
changelog_uri: https://github.com/anton-kachan/rails_mocks/blob/master/CHANGELOG.md
|
75
|
+
post_install_message:
|
76
|
+
rdoc_options: []
|
77
|
+
require_paths:
|
78
|
+
- lib
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
requirements: []
|
90
|
+
rubygems_version: 3.2.23
|
91
|
+
signing_key:
|
92
|
+
specification_version: 4
|
93
|
+
summary: Makes stubbing in your Rails application from an external resource easier.
|
94
|
+
test_files: []
|