jasmine 1.2.0 → 1.2.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.
- data/.rspec +1 -0
- data/.travis.yml +1 -0
- data/Gemfile +1 -8
- data/RELEASE_NOTES.markdown +6 -0
- data/lib/jasmine.rb +8 -2
- data/lib/jasmine/application.rb +40 -0
- data/lib/jasmine/asset_pipeline_mapper.rb +20 -0
- data/lib/jasmine/base.rb +1 -1
- data/lib/jasmine/config.rb +12 -73
- data/lib/jasmine/dependencies.rb +4 -0
- data/lib/jasmine/page.rb +1 -1
- data/lib/jasmine/results.rb +19 -0
- data/lib/jasmine/results_processor.rb +37 -0
- data/lib/jasmine/rspec_formatter.rb +92 -0
- data/lib/jasmine/run.html.erb +1 -0
- data/lib/jasmine/run_specs.rb +33 -0
- data/lib/jasmine/runner_config.rb +60 -0
- data/lib/jasmine/runners/http.rb +70 -0
- data/lib/jasmine/selenium_driver.rb +0 -14
- data/lib/jasmine/server.rb +14 -35
- data/lib/jasmine/tasks/jasmine.rake +2 -2
- data/lib/jasmine/version.rb +1 -1
- data/lib/rack/jasmine/focused_suite.rb +3 -3
- data/spec/application_spec.rb +99 -0
- data/spec/asset_pipeline_mapper_spec.rb +18 -0
- data/spec/config_spec.rb +32 -67
- data/spec/dependencies_spec.rb +14 -3
- data/spec/jasmine_self_test_spec.rb +16 -16
- data/spec/page_spec.rb +1 -1
- data/spec/results_processor_spec.rb +3 -0
- data/spec/results_spec.rb +27 -0
- data/spec/rspec_formatter_spec.rb +88 -0
- data/spec/runner_config_spec.rb +131 -0
- data/spec/server_spec.rb +34 -81
- metadata +44 -24
- data/lib/jasmine/runner.rb +0 -32
- data/lib/jasmine/spec_builder.rb +0 -162
@@ -0,0 +1,60 @@
|
|
1
|
+
module Jasmine
|
2
|
+
class RunnerConfig
|
3
|
+
def initialize(config = Jasmine::Config.new)
|
4
|
+
@config = config
|
5
|
+
end
|
6
|
+
|
7
|
+
def css_files
|
8
|
+
@config.jasmine_stylesheets + @config.user_stylesheets
|
9
|
+
end
|
10
|
+
|
11
|
+
def jasmine_files
|
12
|
+
@config.jasmine_javascripts
|
13
|
+
end
|
14
|
+
|
15
|
+
def js_files
|
16
|
+
@config.js_files
|
17
|
+
end
|
18
|
+
|
19
|
+
def spec_files
|
20
|
+
@config.spec_files
|
21
|
+
end
|
22
|
+
|
23
|
+
def spec_files_full_paths
|
24
|
+
@config.spec_files_full_paths
|
25
|
+
end
|
26
|
+
|
27
|
+
def spec_path
|
28
|
+
@config.spec_path
|
29
|
+
end
|
30
|
+
|
31
|
+
def spec_dir
|
32
|
+
@config.spec_dir
|
33
|
+
end
|
34
|
+
|
35
|
+
def src_dir
|
36
|
+
@config.src_dir
|
37
|
+
end
|
38
|
+
|
39
|
+
def project_root
|
40
|
+
@config.project_root
|
41
|
+
end
|
42
|
+
|
43
|
+
def root_path
|
44
|
+
@config.root_path
|
45
|
+
end
|
46
|
+
|
47
|
+
def browser
|
48
|
+
ENV["JASMINE_BROWSER"] || 'firefox'
|
49
|
+
end
|
50
|
+
|
51
|
+
def jasmine_host
|
52
|
+
ENV["JASMINE_HOST"] || 'http://localhost'
|
53
|
+
end
|
54
|
+
|
55
|
+
def port
|
56
|
+
@port ||= ENV["JASMINE_PORT"] || Jasmine.find_unused_port
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module Jasmine
|
2
|
+
module Runners
|
3
|
+
class HTTP
|
4
|
+
attr_accessor :suites
|
5
|
+
|
6
|
+
def initialize(client, results_processor)
|
7
|
+
@client = client
|
8
|
+
@results_processor = results_processor
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
@client.connect
|
13
|
+
load_suite_info
|
14
|
+
wait_for_suites_to_finish_running
|
15
|
+
results = @results_processor.process(results_hash, suites)
|
16
|
+
@client.disconnect
|
17
|
+
results
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def load_suite_info
|
23
|
+
started = Time.now
|
24
|
+
while !eval_js('return jsApiReporter && jsApiReporter.started') do
|
25
|
+
raise "couldn't connect to Jasmine after 60 seconds" if (started + 60 < Time.now)
|
26
|
+
sleep 0.1
|
27
|
+
end
|
28
|
+
|
29
|
+
@suites = eval_js("var result = jsApiReporter.suites(); if (window.Prototype && Object.toJSON) { return Object.toJSON(result) } else { return JSON.stringify(result) }")
|
30
|
+
end
|
31
|
+
|
32
|
+
def results_hash
|
33
|
+
spec_results = {}
|
34
|
+
spec_ids.each_slice(50) do |slice|
|
35
|
+
spec_results.merge!(eval_js("var result = jsApiReporter.resultsForSpecs(#{json_generate(slice)}); if (window.Prototype && Object.toJSON) { return Object.toJSON(result) } else { return JSON.stringify(result) }"))
|
36
|
+
end
|
37
|
+
spec_results
|
38
|
+
end
|
39
|
+
|
40
|
+
def spec_ids
|
41
|
+
map_spec_ids = lambda do |suites|
|
42
|
+
suites.map do |suite_or_spec|
|
43
|
+
if suite_or_spec['type'] == 'spec'
|
44
|
+
suite_or_spec['id']
|
45
|
+
else
|
46
|
+
map_spec_ids.call(suite_or_spec['children'])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
map_spec_ids.call(@suites).compact.flatten
|
51
|
+
end
|
52
|
+
|
53
|
+
def wait_for_suites_to_finish_running
|
54
|
+
puts "Waiting for suite to finish in browser ..."
|
55
|
+
while !eval_js('return jsApiReporter.finished') do
|
56
|
+
sleep 0.1
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def eval_js(script)
|
61
|
+
@client.eval_js(script)
|
62
|
+
end
|
63
|
+
|
64
|
+
def json_generate(obj)
|
65
|
+
@client.json_generate(obj)
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -21,10 +21,6 @@ module Jasmine
|
|
21
21
|
@http_address = http_address
|
22
22
|
end
|
23
23
|
|
24
|
-
def tests_have_finished?
|
25
|
-
@driver.execute_script("return window.jasmine.getEnv().currentRunner.finished") == "true"
|
26
|
-
end
|
27
|
-
|
28
24
|
def connect
|
29
25
|
@driver.navigate.to @http_address
|
30
26
|
end
|
@@ -33,16 +29,6 @@ module Jasmine
|
|
33
29
|
@driver.quit
|
34
30
|
end
|
35
31
|
|
36
|
-
def run
|
37
|
-
until tests_have_finished? do
|
38
|
-
sleep 0.1
|
39
|
-
end
|
40
|
-
|
41
|
-
puts @driver.execute_script("return window.results()")
|
42
|
-
failed_count = @driver.execute_script("return window.jasmine.getEnv().currentRunner.results().failedCount").to_i
|
43
|
-
failed_count == 0
|
44
|
-
end
|
45
|
-
|
46
32
|
def eval_js(script)
|
47
33
|
result = @driver.execute_script(script)
|
48
34
|
JSON.parse("{\"result\":#{result}}", :max_nesting => false)["result"]
|
data/lib/jasmine/server.rb
CHANGED
@@ -1,40 +1,19 @@
|
|
1
|
-
require 'rack'
|
2
|
-
require 'rack/utils'
|
3
|
-
require 'jasmine-core'
|
4
|
-
require 'rack/jasmine/runner'
|
5
|
-
require 'rack/jasmine/focused_suite'
|
6
|
-
require 'rack/jasmine/redirect'
|
7
|
-
require 'rack/jasmine/cache_control'
|
8
|
-
require 'ostruct'
|
9
|
-
|
10
1
|
module Jasmine
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
page = Jasmine::Page.new(config_shim.instance_eval { binding })
|
17
|
-
Rack::Builder.app do
|
18
|
-
use Rack::Head
|
19
|
-
use Rack::Jasmine::CacheControl
|
20
|
-
if Jasmine::Dependencies.rails_3_asset_pipeline?
|
21
|
-
map('/assets') do
|
22
|
-
run Rails.application.assets
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
map('/run.html') { run Rack::Jasmine::Redirect.new('/') }
|
27
|
-
map('/__suite__') { run Rack::Jasmine::FocusedSuite.new(config) }
|
28
|
-
|
29
|
-
map('/__JASMINE_ROOT__') { run Rack::File.new(Jasmine::Core.path) }
|
30
|
-
map(config.spec_path) { run Rack::File.new(config.spec_dir) }
|
31
|
-
map(config.root_path) { run Rack::File.new(config.project_root) }
|
2
|
+
class Server
|
3
|
+
def initialize(port = 8888, application = Jasmine::Application.app)
|
4
|
+
@port = port
|
5
|
+
@application = application
|
6
|
+
end
|
32
7
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
8
|
+
def start
|
9
|
+
if Jasmine::Dependencies.legacy_rack?
|
10
|
+
handler = Rack::Handler.get('webrick')
|
11
|
+
handler.run(@application, :Port => @port, :AccessLog => [])
|
12
|
+
else
|
13
|
+
server = Rack::Server.new(:Port => @port, :AccessLog => [])
|
14
|
+
# workaround for Rack bug, when Rack > 1.2.1 is released Rack::Server.start(:app => Jasmine.app(self)) will work
|
15
|
+
server.instance_variable_set(:@app, @application)
|
16
|
+
server.start
|
38
17
|
end
|
39
18
|
end
|
40
19
|
end
|
@@ -27,7 +27,7 @@ namespace :jasmine do
|
|
27
27
|
t.rspec_opts = ["--colour", "--format", ENV['JASMINE_SPEC_FORMAT'] || "progress"]
|
28
28
|
t.verbose = true
|
29
29
|
if Jasmine::Dependencies.rails_3_asset_pipeline?
|
30
|
-
t.
|
30
|
+
t.rspec_opts += ["-r #{File.expand_path(File.join(::Rails.root, 'config', 'environment'))}"]
|
31
31
|
end
|
32
32
|
t.pattern = [Jasmine.runner_filepath]
|
33
33
|
end
|
@@ -48,7 +48,7 @@ namespace :jasmine do
|
|
48
48
|
port = ENV['JASMINE_PORT'] || 8888
|
49
49
|
puts "your tests are here:"
|
50
50
|
puts " http://localhost:#{port}/"
|
51
|
-
Jasmine::
|
51
|
+
Jasmine::Server.new(port).start
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
data/lib/jasmine/version.rb
CHANGED
@@ -2,12 +2,12 @@ module Rack
|
|
2
2
|
module Jasmine
|
3
3
|
|
4
4
|
class FocusedSuite
|
5
|
-
def initialize(
|
6
|
-
@
|
5
|
+
def initialize(runner_config)
|
6
|
+
@runner_config = runner_config
|
7
7
|
end
|
8
8
|
|
9
9
|
def call(env)
|
10
|
-
run_adapter = Rack::Jasmine::RunAdapter.new(@
|
10
|
+
run_adapter = Rack::Jasmine::RunAdapter.new(@runner_config)
|
11
11
|
run_adapter.run(env["PATH_INFO"])
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rack/test'
|
3
|
+
|
4
|
+
describe "Jasmine::Application" do
|
5
|
+
include Rack::Test::Methods
|
6
|
+
|
7
|
+
def app
|
8
|
+
@root = File.join(File.dirname(__FILE__))
|
9
|
+
runner_config = double("config",
|
10
|
+
:project_root => @root,
|
11
|
+
:spec_dir => File.join(@root, "fixture", "spec"),
|
12
|
+
:spec_path => "/__spec__",
|
13
|
+
:root_path => "/__root__",
|
14
|
+
:css_files => [],
|
15
|
+
:jasmine_files => [],
|
16
|
+
:js_files => ["path/file1.js", "path/file2.js"],
|
17
|
+
:src_dir => File.join(@root, "fixture", "src"),
|
18
|
+
:src_files => ["file1.js"],
|
19
|
+
:spec_files => ["example_spec.js"])
|
20
|
+
Jasmine::Application.app(runner_config)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "includes no-cache headers for specs" do
|
24
|
+
get "/__spec__/example_spec.js"
|
25
|
+
last_response.headers.should have_key("Cache-Control")
|
26
|
+
last_response.headers["Cache-Control"].should == "max-age=0, private, must-revalidate"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should serve static files from spec dir under __spec__" do
|
30
|
+
get "/__spec__/example_spec.js"
|
31
|
+
last_response.status.should == 200
|
32
|
+
last_response.content_type.should == "application/javascript"
|
33
|
+
last_response.body.should == File.read(File.join(@root, "fixture/spec/example_spec.js"))
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should serve static files from root dir under __root__" do
|
37
|
+
get "/__root__/fixture/src/example.js"
|
38
|
+
last_response.status.should == 200
|
39
|
+
last_response.content_type.should == "application/javascript"
|
40
|
+
last_response.body.should == File.read(File.join(@root, "fixture/src/example.js"))
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should serve static files from src dir under /" do
|
44
|
+
get "/example.js"
|
45
|
+
last_response.status.should == 200
|
46
|
+
last_response.content_type.should == "application/javascript"
|
47
|
+
last_response.body.should == File.read(File.join(@root, "fixture/src/example.js"))
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should serve Jasmine static files under /__JASMINE_ROOT__/" do
|
51
|
+
get "/__JASMINE_ROOT__/jasmine.css"
|
52
|
+
last_response.status.should == 200
|
53
|
+
last_response.content_type.should == "text/css"
|
54
|
+
last_response.body.should == File.read(File.join(Jasmine::Core.path, "jasmine.css"))
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should serve focused suites when prefixing spec files with /__suite__/" do
|
58
|
+
pending "Temporarily removing this feature (maybe permanent)"
|
59
|
+
Dir.stub!(:glob).and_return { |glob_string| [glob_string] }
|
60
|
+
get "/__suite__/file2.js"
|
61
|
+
last_response.status.should == 200
|
62
|
+
last_response.content_type.should == "text/html"
|
63
|
+
last_response.body.should include("\"/__spec__/file2.js")
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should redirect /run.html to /" do
|
67
|
+
get "/run.html"
|
68
|
+
last_response.status.should == 302
|
69
|
+
last_response.location.should == "/"
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should 404 non-existent files" do
|
73
|
+
get "/some-non-existent-file"
|
74
|
+
last_response.should be_not_found
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "/ page" do
|
78
|
+
it "should load each js file in order" do
|
79
|
+
get "/"
|
80
|
+
last_response.status.should == 200
|
81
|
+
last_response.body.should include("path/file1.js")
|
82
|
+
last_response.body.should include("path/file2.js")
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should return an empty 200 for HEAD requests to /" do
|
86
|
+
head "/"
|
87
|
+
last_response.status.should == 200
|
88
|
+
last_response.headers['Content-Type'].should == 'text/html'
|
89
|
+
last_response.body.should == ''
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should tell the browser not to cache any assets" do
|
93
|
+
head "/"
|
94
|
+
['Pragma'].each do |key|
|
95
|
+
last_response.headers[key].should == 'no-cache'
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Jasmine::AssetPipelineMapper do
|
4
|
+
describe "mapping files" do
|
5
|
+
it "should retrieve asset paths from the asset pipeline for passed files" do
|
6
|
+
#TODO: this expects all src files to be asset pipeline files
|
7
|
+
src_files = ["assets/application.js", "assets/other_manifest.js"]
|
8
|
+
asset_context = double("asset context")
|
9
|
+
asset_context.stub_chain(:asset_paths, :asset_for).with("application", "js").and_return(['asset1.js', 'asset2.js'])
|
10
|
+
asset_context.stub_chain(:asset_paths, :asset_for).with("other_manifest", "js").and_return(['asset1.js', 'asset3.js'])
|
11
|
+
asset_context.stub(:asset_path) do |asset|
|
12
|
+
"/some_location/#{asset}"
|
13
|
+
end
|
14
|
+
mapper = Jasmine::AssetPipelineMapper.new(src_files, asset_context)
|
15
|
+
mapper.files.should == ['some_location/asset1.js?body=true', 'some_location/asset2.js?body=true', 'some_location/asset3.js?body=true']
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/spec/config_spec.rb
CHANGED
@@ -4,6 +4,8 @@ require 'selenium-webdriver'
|
|
4
4
|
describe Jasmine::Config do
|
5
5
|
describe "configuration" do
|
6
6
|
before :each do
|
7
|
+
Jasmine::Dependencies.stub(:rails_3_asset_pipeline?) { false }
|
8
|
+
|
7
9
|
temp_dir_before
|
8
10
|
|
9
11
|
Dir::chdir @tmp
|
@@ -239,83 +241,46 @@ describe Jasmine::Config do
|
|
239
241
|
end
|
240
242
|
end
|
241
243
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
244
|
+
|
245
|
+
describe "jasmine_stylesheets" do
|
246
|
+
it "should return the relative web server path to the core Jasmine css stylesheets" do
|
247
|
+
#TODO: wrap Jasmine::Core with a class that knows about the core path and the relative mapping.
|
248
|
+
Jasmine::Core.stub(:css_files).and_return(["my_css_file1.css", "my_css_file2.css"])
|
249
|
+
Jasmine::Config.new.jasmine_stylesheets.should == ["/__JASMINE_ROOT__/my_css_file1.css", "/__JASMINE_ROOT__/my_css_file2.css"]
|
247
250
|
end
|
248
|
-
|
249
|
-
it "should use firefox by default" do
|
250
|
-
stub_env_hash({"JASMINE_BROWSER" => nil})
|
251
|
-
config = Jasmine::Config.new
|
252
|
-
config.stub!(:start_jasmine_server)
|
253
|
-
Jasmine::SeleniumDriver.should_receive(:new).
|
254
|
-
with("firefox", anything).
|
255
|
-
and_return(mock(Jasmine::SeleniumDriver, :connect => true))
|
256
|
-
config.start
|
257
|
-
end
|
251
|
+
end
|
258
252
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
Jasmine::SeleniumDriver.should_receive(:new).
|
264
|
-
with("mosaic", anything).
|
265
|
-
and_return(mock(Jasmine::SeleniumDriver, :connect => true))
|
266
|
-
config.start
|
267
|
-
end
|
253
|
+
describe "jasmine_javascripts" do
|
254
|
+
it "should return the relative web server path to the core Jasmine css javascripts" do
|
255
|
+
Jasmine::Core.stub(:js_files).and_return(["my_js_file1.js", "my_js_file2.js"])
|
256
|
+
Jasmine::Config.new.jasmine_javascripts.should == ["/__JASMINE_ROOT__/my_js_file1.js", "/__JASMINE_ROOT__/my_js_file2.js"]
|
268
257
|
end
|
258
|
+
end
|
269
259
|
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
config.instance_variable_set(:@jasmine_server_port, '1234')
|
275
|
-
config.stub!(:start_jasmine_server)
|
276
|
-
|
277
|
-
Jasmine::SeleniumDriver.should_receive(:new).
|
278
|
-
with(anything, "http://localhost:1234/").
|
279
|
-
and_return(mock(Jasmine::SeleniumDriver, :connect => true))
|
280
|
-
config.start
|
281
|
-
end
|
260
|
+
describe "when the asset pipeline is active" do
|
261
|
+
before do
|
262
|
+
Jasmine::Dependencies.stub(:rails_3_asset_pipeline?) { true }
|
263
|
+
end
|
282
264
|
|
283
|
-
|
284
|
-
stub_env_hash({"JASMINE_HOST" => "http://some_host"})
|
285
|
-
config = Jasmine::Config.new
|
286
|
-
config.instance_variable_set(:@jasmine_server_port, '1234')
|
287
|
-
config.stub!(:start_jasmine_server)
|
265
|
+
let(:src_files) { ["assets/some.js", "assets/files.js"] }
|
288
266
|
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
config.
|
267
|
+
let(:config) do
|
268
|
+
Jasmine::Config.new.tap do |config|
|
269
|
+
#TODO: simple_config should be a passed in hash
|
270
|
+
config.stub(:simple_config) { { 'src_files' => src_files} }
|
293
271
|
end
|
272
|
+
end
|
294
273
|
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
config.stub!(:start_server)
|
300
|
-
Jasmine::SeleniumDriver.should_receive(:new).
|
301
|
-
with(anything, "http://localhost:4321/").
|
302
|
-
and_return(mock(Jasmine::SeleniumDriver, :connect => true))
|
303
|
-
config.start
|
304
|
-
end
|
274
|
+
it "should use AssetPipelineMapper to return src_files" do
|
275
|
+
mapped_files = ["some.js", "files.js"]
|
276
|
+
Jasmine::AssetPipelineMapper.stub_chain(:new, :files).and_return(mapped_files)
|
277
|
+
config.src_files.should == mapped_files
|
305
278
|
end
|
306
279
|
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
Jasmine::SeleniumDriver.new('firefox', 'http://localhost:8888')
|
312
|
-
end
|
313
|
-
it "should use an local selenium server with a specific port if SELENIUM_SERVER_PORT is set" do
|
314
|
-
stub_env_hash({"SELENIUM_SERVER_PORT" => "4441"})
|
315
|
-
Selenium::WebDriver.should_receive(:for).with(:remote, :url => "http://localhost:4441/wd/hub", :desired_capabilities => :firefox)
|
316
|
-
Jasmine::SeleniumDriver.new('firefox', 'http://localhost:8888')
|
317
|
-
end
|
280
|
+
it "should pass the config src_files to the AssetPipelineMapper" do
|
281
|
+
Jasmine::Config.stub(:simple_config)
|
282
|
+
Jasmine::AssetPipelineMapper.should_receive(:new).with(src_files).and_return(double("mapper").as_null_object)
|
283
|
+
config.src_files
|
318
284
|
end
|
319
285
|
end
|
320
|
-
|
321
286
|
end
|