Skip to content

Commit 0dc86f8

Browse files
committed
Merge pull request #166 from mikz/master
Make DSL work with config.disable_monkeypatching!
2 parents 687731c + 9c7350b commit 0dc86f8

File tree

2 files changed

+54
-21
lines changed

2 files changed

+54
-21
lines changed

features/example_request.feature

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ Feature: Example Request
88
end
99
end
1010
"""
11-
And a file named "app_spec.rb" with:
12-
"""
11+
12+
Scenario: Output should have the correct error line
13+
Given a file named "app_spec.rb" with:
14+
"""
1315
require "rspec_api_documentation"
1416
require "rspec_api_documentation/dsl"
1517
@@ -26,11 +28,32 @@ Feature: Example Request
2628
end
2729
"""
2830
When I run `rspec app_spec.rb --require ./app.rb --format RspecApiDocumentation::ApiFormatter`
29-
30-
Scenario: Output should have the correct error line
3131
Then the output should contain "expected: 201"
3232
Then the output should not contain "endpoint.rb"
3333
Then the output should contain:
3434
"""
3535
rspec ./app_spec.rb:10 # Example Request GET / Greeting your favorite gem
3636
"""
37+
38+
Scenario: should work with RSpec monkey patching disabled
39+
When a file named "app_spec.rb" with:
40+
"""
41+
require "rspec_api_documentation/dsl"
42+
43+
RSpec.configure do |config|
44+
config.disable_monkey_patching!
45+
end
46+
47+
RspecApiDocumentation.configure do |config|
48+
config.app = App
49+
end
50+
51+
RSpec.resource "Example Request" do
52+
get "/" do
53+
example_request "Greeting your favorite gem" do
54+
expect(status).to eq(200)
55+
end
56+
end
57+
end
58+
"""
59+
Then I successfully run `rspec app_spec.rb --require ./app.rb`

lib/rspec_api_documentation/dsl.rb

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,36 @@
1+
require "rspec_api_documentation"
12
require "rspec_api_documentation/dsl/resource"
23
require "rspec_api_documentation/dsl/endpoint"
34
require "rspec_api_documentation/dsl/callback"
45

5-
# Custom describe block that sets metadata to enable the rest of RAD
6-
#
7-
# resource "Orders", :meta => :data do
8-
# # ...
9-
# end
10-
#
11-
# Params:
12-
# +args+:: Glob of RSpec's `describe` arguments
13-
# +block+:: Block to pass into describe
14-
#
15-
def self.resource(*args, &block)
16-
options = if args.last.is_a?(Hash) then args.pop else {} end
17-
options[:api_doc_dsl] = :resource
18-
options[:resource_name] = args.first
19-
options[:document] ||= :all
20-
args.push(options)
21-
describe(*args, &block)
6+
7+
module RspecApiDocumentation
8+
module DSL
9+
10+
# Custom describe block that sets metadata to enable the rest of RAD
11+
#
12+
# resource "Orders", :meta => :data do
13+
# # ...
14+
# end
15+
#
16+
# Params:
17+
# +args+:: Glob of RSpec's `describe` arguments
18+
# +block+:: Block to pass into describe
19+
#
20+
def resource(*args, &block)
21+
options = if args.last.is_a?(Hash) then args.pop else {} end
22+
options[:api_doc_dsl] = :resource
23+
options[:resource_name] = args.first
24+
options[:document] ||= :all
25+
args.push(options)
26+
describe(*args, &block)
27+
end
28+
end
2229
end
2330

31+
RSpec::Core::ExampleGroup.extend(RspecApiDocumentation::DSL)
32+
RSpec::Core::DSL.expose_example_group_alias(:resource)
33+
2434
RSpec.configuration.include RspecApiDocumentation::DSL::Resource, :api_doc_dsl => :resource
2535
RSpec.configuration.include RspecApiDocumentation::DSL::Endpoint, :api_doc_dsl => :endpoint
2636
RSpec.configuration.include RspecApiDocumentation::DSL::Callback, :api_doc_dsl => :callback

0 commit comments

Comments
 (0)