diff --git a/lib/minitest-vcr/spec.rb b/lib/minitest-vcr/spec.rb index 605f9f8..677558a 100644 --- a/lib/minitest-vcr/spec.rb +++ b/lib/minitest-vcr/spec.rb @@ -1,5 +1,6 @@ require "vcr" require "minispec-metadata" +require "extensions/string" module MinitestVcr module Spec @@ -7,18 +8,18 @@ module Spec def self.configure! run_before = lambda do |example| if metadata[:vcr] - example.class.name.scan(/^(.*?)::[abc]/) do |name| - @class_name = name.first - end - if @class_name.nil? - test_info = example.class.name.split("::").map {|e| e.sub(/[^\w]*$/, "")}.reject(&:empty?) - ["vcr"] - @class_name = "" - else - test_info = example.class.name.gsub(@class_name, "").split("::").map {|e| e.sub(/[^\w]*$/, "")}.reject(&:empty?) - ["vcr"] + example.class.name.scan(/^(.*?)::[abc]/) do |class_names| + class_name = class_names.first + + if class_name.nil? + @path = example.class.name.prep + else + @path = example.class.name.gsub(class_name, "").prep.unshift(class_name) + end end - VCR.insert_cassette @class_name + "/" + test_info.join("/") + "/#{spec_name}" + VCR.insert_cassette @path.push(spec_name).join("/") unless @path.nil? end end diff --git a/test/cassettes/MinitestVcr_Spec/an_it_with_metadata/with_a_nested_example_group/uses_a_cassette_for_any_examples/uses_a_cassette_for_any_examples.yml b/test/cassettes/MinitestVcr_Spec/an_it_with_metadata/with_a_nested_example_group/uses_a_cassette_for_any_examples/uses_a_cassette_for_any_examples.yml new file mode 100644 index 0000000..ff0a517 --- /dev/null +++ b/test/cassettes/MinitestVcr_Spec/an_it_with_metadata/with_a_nested_example_group/uses_a_cassette_for_any_examples/uses_a_cassette_for_any_examples.yml @@ -0,0 +1,64 @@ +--- +http_interactions: +- request: + method: get + uri: http://example.com/ + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Faraday v0.8.9 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - ! '*/*' + response: + status: + code: 200 + message: OK + headers: + Accept-Ranges: + - bytes + Cache-Control: + - max-age=604800 + Content-Type: + - text/html + Date: + - Wed, 15 Jan 2014 08:08:39 GMT + Etag: + - ! '"359670651"' + Expires: + - Wed, 22 Jan 2014 08:08:39 GMT + Last-Modified: + - Fri, 09 Aug 2013 23:54:35 GMT + Server: + - ECS (sea/55ED) + X-Cache: + - HIT + X-Ec-Custom-Error: + - '1' + Content-Length: + - '1270' + body: + encoding: US-ASCII + string: ! "\n\n\n Example Domain\n\n + \ \n \n \n \n\n\n\n
\n

Example Domain

\n + \

This domain is established to be used for illustrative examples in + documents. You may use this\n domain in examples without prior coordination + or asking for permission.

\n

More + information...

\n
\n\n\n" + http_version: + recorded_at: Wed, 15 Jan 2014 08:08:38 GMT +recorded_with: VCR 2.8.0 diff --git a/test/minitest-vcr/spec_test.rb b/test/minitest-vcr/spec_test.rb index 9012cb9..70aaa70 100644 --- a/test/minitest-vcr/spec_test.rb +++ b/test/minitest-vcr/spec_test.rb @@ -41,8 +41,8 @@ describe "#configure!", :vcr do before do - ::MiniTest::Spec.expects(:before).with(:each).returns(:true) - ::MiniTest::Spec.expects(:after).with(:each).returns(true) + ::MiniTest::Spec.expects(:before).with(:each) + ::MiniTest::Spec.expects(:after).with(:each) end it "should call before and after with proper args and block" do