rally-jasmine 1.2.0
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/.gitignore +13 -0
- data/.rspec +1 -0
- data/.travis.yml +58 -0
- data/Gemfile +8 -0
- data/HOW_TO_TEST.markdown +9 -0
- data/MIT.LICENSE +20 -0
- data/README.markdown +77 -0
- data/RELEASE.markdown +22 -0
- data/RELEASE_NOTES.markdown +6 -0
- data/Rakefile +53 -0
- data/bin/jasmine +6 -0
- data/generators/jasmine/jasmine_generator.rb +24 -0
- data/generators/jasmine/templates/INSTALL +9 -0
- data/generators/jasmine/templates/jasmine-example/SpecRunner.html +54 -0
- data/generators/jasmine/templates/jasmine-example/spec/PlayerSpec.js +58 -0
- data/generators/jasmine/templates/jasmine-example/spec/SpecHelper.js +9 -0
- data/generators/jasmine/templates/jasmine-example/src/Player.js +22 -0
- data/generators/jasmine/templates/jasmine-example/src/Song.js +7 -0
- data/generators/jasmine/templates/lib/tasks/jasmine.rake +8 -0
- data/generators/jasmine/templates/spec/javascripts/support/jasmine-rails.yml +81 -0
- data/generators/jasmine/templates/spec/javascripts/support/jasmine.yml +73 -0
- data/lib/generators/jasmine/examples/USAGE +11 -0
- data/lib/generators/jasmine/examples/examples_generator.rb +19 -0
- data/lib/generators/jasmine/examples/templates/app/assets/javascripts/jasmine_examples/Player.js +22 -0
- data/lib/generators/jasmine/examples/templates/app/assets/javascripts/jasmine_examples/Song.js +7 -0
- data/lib/generators/jasmine/examples/templates/spec/javascripts/helpers/SpecHelper.js +9 -0
- data/lib/generators/jasmine/examples/templates/spec/javascripts/jasmine_examples/PlayerSpec.js +58 -0
- data/lib/generators/jasmine/install/USAGE +11 -0
- data/lib/generators/jasmine/install/install_generator.rb +18 -0
- data/lib/generators/jasmine/install/templates/spec/javascripts/helpers/.gitkeep +0 -0
- data/lib/generators/jasmine/install/templates/spec/javascripts/support/jasmine.yml +76 -0
- data/lib/jasmine/application.rb +43 -0
- data/lib/jasmine/asset_pipeline_mapper.rb +19 -0
- data/lib/jasmine/base.rb +50 -0
- data/lib/jasmine/command_line_tool.rb +70 -0
- data/lib/jasmine/config.rb +121 -0
- data/lib/jasmine/dependencies.rb +59 -0
- data/lib/jasmine/firebug/firebug-1.6.2.xpi +0 -0
- data/lib/jasmine/firebug/firebug-1.7.0.xpi +0 -0
- data/lib/jasmine/firebug/firebug-license.txt +30 -0
- data/lib/jasmine/firebug/firebug.rb +30 -0
- data/lib/jasmine/page.rb +11 -0
- data/lib/jasmine/railtie.rb +21 -0
- 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 +55 -0
- data/lib/jasmine/run_specs.rb +32 -0
- data/lib/jasmine/runner_config.rb +71 -0
- data/lib/jasmine/runners/http.rb +71 -0
- data/lib/jasmine/selenium_driver.rb +52 -0
- data/lib/jasmine/server.rb +20 -0
- data/lib/jasmine/sprockets_mapper.rb +13 -0
- data/lib/jasmine/tasks/jasmine.rake +56 -0
- data/lib/jasmine/tasks/jasmine_rails3.rake +1 -0
- data/lib/jasmine/version.rb +3 -0
- data/lib/jasmine.rb +23 -0
- data/lib/rack/jasmine/cache_control.rb +20 -0
- data/lib/rack/jasmine/focused_suite.rb +17 -0
- data/lib/rack/jasmine/redirect.rb +20 -0
- data/lib/rack/jasmine/runner.rb +27 -0
- data/spec/application_spec.rb +99 -0
- data/spec/asset_pipeline_mapper_spec.rb +18 -0
- data/spec/config_spec.rb +309 -0
- data/spec/dependencies_spec.rb +327 -0
- data/spec/fixture/Rakefile +4 -0
- data/spec/fixture/jasmine.erb.yml +4 -0
- data/spec/fixture/spec/example_spec.js +5 -0
- data/spec/fixture/src/example.js +3 -0
- data/spec/jasmine_command_line_tool_rakeless_spec.rb +20 -0
- data/spec/jasmine_command_line_tool_spec.rb +29 -0
- data/spec/jasmine_pojs_spec.rb +47 -0
- data/spec/jasmine_rails2_spec.rb +89 -0
- data/spec/jasmine_rails3_spec.rb +69 -0
- data/spec/jasmine_self_test_config.rb +19 -0
- data/spec/jasmine_self_test_spec.rb +22 -0
- data/spec/page_spec.rb +25 -0
- data/spec/rack/jasmine/runner_spec.rb +25 -0
- 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 +136 -0
- data/spec/server_spec.rb +48 -0
- data/spec/spec_helper.rb +55 -0
- data/spec/sprockets_mapper_spec.rb +17 -0
- metadata +319 -0
@@ -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(asset_context)
|
15
|
+
mapper.files(src_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
ADDED
@@ -0,0 +1,309 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'selenium-webdriver'
|
3
|
+
|
4
|
+
describe Jasmine::Config do
|
5
|
+
describe "configuration" do
|
6
|
+
before :each do
|
7
|
+
Jasmine::Dependencies.stub(:rails_3_asset_pipeline?) { false }
|
8
|
+
|
9
|
+
temp_dir_before
|
10
|
+
|
11
|
+
Dir::chdir @tmp
|
12
|
+
dir_name = "test_js_project"
|
13
|
+
`mkdir -p #{dir_name}`
|
14
|
+
Dir::chdir dir_name
|
15
|
+
`#{@root}/bin/jasmine init .`
|
16
|
+
|
17
|
+
@project_dir = Dir.pwd
|
18
|
+
|
19
|
+
@template_dir = File.expand_path(File.join(@root, "generators/jasmine/templates"))
|
20
|
+
@config = Jasmine::Config.new
|
21
|
+
end
|
22
|
+
|
23
|
+
after(:each) do
|
24
|
+
temp_dir_after
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "defaults" do
|
28
|
+
it "src_dir uses root when src dir is blank" do
|
29
|
+
@config.stub!(:project_root).and_return('some_project_root')
|
30
|
+
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
|
31
|
+
YAML.stub!(:load).and_return({'src_dir' => nil})
|
32
|
+
@config.src_dir.should == 'some_project_root'
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should use correct default yaml config" do
|
36
|
+
@config.stub!(:project_root).and_return('some_project_root')
|
37
|
+
@config.simple_config_file.should == (File.join('some_project_root', 'spec/javascripts/support/jasmine.yml'))
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "simple_config" do
|
42
|
+
before(:each) do
|
43
|
+
@config.stub!(:src_dir).and_return(File.join(@project_dir, "."))
|
44
|
+
@config.stub!(:spec_dir).and_return(File.join(@project_dir, "spec/javascripts"))
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "using default jasmine.yml" do
|
48
|
+
before(:each) do
|
49
|
+
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should find the source files" do
|
53
|
+
@config.src_files.should =~ ['public/javascripts/Player.js', 'public/javascripts/Song.js']
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should find the stylesheet files" do
|
57
|
+
@config.stylesheets.should == []
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should find the spec files" do
|
61
|
+
@config.spec_files.should == ['PlayerSpec.js']
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should find any helpers" do
|
65
|
+
@config.helpers.should == ['helpers/SpecHelper.js']
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should build an array of all the JavaScript files to include, source files then spec files" do
|
69
|
+
@config.js_files.should == [
|
70
|
+
'/public/javascripts/Player.js',
|
71
|
+
'/public/javascripts/Song.js',
|
72
|
+
'/__spec__/helpers/SpecHelper.js',
|
73
|
+
'/__spec__/PlayerSpec.js'
|
74
|
+
]
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should allow the js_files to be filtered" do
|
78
|
+
@config.js_files("PlayerSpec.js").should == [
|
79
|
+
'/public/javascripts/Player.js',
|
80
|
+
'/public/javascripts/Song.js',
|
81
|
+
'/__spec__/helpers/SpecHelper.js',
|
82
|
+
'/__spec__/PlayerSpec.js'
|
83
|
+
]
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should report the full paths of the spec files" do
|
87
|
+
@config.spec_files_full_paths.should == [File.join(@project_dir, 'spec/javascripts/PlayerSpec.js')]
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should parse ERB" do
|
92
|
+
@config.stub!(:simple_config_file).and_return(File.expand_path(File.join(@root, 'spec', 'fixture','jasmine.erb.yml')))
|
93
|
+
Dir.stub!(:glob).and_return { |glob_string| [glob_string] }
|
94
|
+
@config.src_files.should == ['file0.js', 'file1.js', 'file2.js',]
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "if jasmine.yml not found" do
|
98
|
+
before(:each) do
|
99
|
+
File.stub!(:exist?).and_return(false)
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should default to loading no source files" do
|
103
|
+
@config.src_files.should be_empty
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should default to loading no stylesheet files" do
|
107
|
+
@config.stylesheets.should be_empty
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
|
112
|
+
describe "if jasmine.yml is empty" do
|
113
|
+
before(:each) do
|
114
|
+
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
|
115
|
+
YAML.stub!(:load).and_return(false)
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should default to loading no source files" do
|
119
|
+
@config.src_files.should be_empty
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should default to loading no stylesheet files" do
|
123
|
+
@config.stylesheets.should be_empty
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe "should use the first appearance of duplicate filenames" do
|
128
|
+
before(:each) do
|
129
|
+
Dir.stub!(:glob).and_return { |glob_string| [glob_string] }
|
130
|
+
fake_config = Hash.new.stub!(:[]).and_return { |x| ["file1.ext", "file2.ext", "file1.ext"] }
|
131
|
+
@config.stub!(:simple_config).and_return(fake_config)
|
132
|
+
end
|
133
|
+
|
134
|
+
it "src_files" do
|
135
|
+
@config.src_files.should == ['file1.ext', 'file2.ext']
|
136
|
+
end
|
137
|
+
|
138
|
+
it "stylesheets" do
|
139
|
+
@config.stylesheets.should == ['file1.ext', 'file2.ext']
|
140
|
+
end
|
141
|
+
|
142
|
+
it "spec_files" do
|
143
|
+
@config.spec_files.should == ['file1.ext', 'file2.ext']
|
144
|
+
end
|
145
|
+
|
146
|
+
it "helpers" do
|
147
|
+
@config.spec_files.should == ['file1.ext', 'file2.ext']
|
148
|
+
end
|
149
|
+
|
150
|
+
it "js_files" do
|
151
|
+
@config.js_files.should == ["/file1.ext",
|
152
|
+
"/file2.ext",
|
153
|
+
"/__spec__/file1.ext",
|
154
|
+
"/__spec__/file2.ext",
|
155
|
+
"/__spec__/file1.ext",
|
156
|
+
"/__spec__/file2.ext"]
|
157
|
+
end
|
158
|
+
|
159
|
+
it "spec_files_full_paths" do
|
160
|
+
@config.spec_files_full_paths.should == [
|
161
|
+
File.expand_path("spec/javascripts/file1.ext", @project_dir),
|
162
|
+
File.expand_path("spec/javascripts/file2.ext", @project_dir)
|
163
|
+
]
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
describe "should permit explicity-declared filenames to pass through regardless of their existence" do
|
168
|
+
before(:each) do
|
169
|
+
Dir.stub!(:glob).and_return { |glob_string| [] }
|
170
|
+
fake_config = Hash.new.stub!(:[]).and_return { |x| ["file1.ext", "!file2.ext", "**/*file3.ext"] }
|
171
|
+
@config.stub!(:simple_config).and_return(fake_config)
|
172
|
+
end
|
173
|
+
|
174
|
+
it "should contain explicitly files" do
|
175
|
+
@config.src_files.should == ["file1.ext"]
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
describe "should allow .gitignore style negation (!pattern)" do
|
180
|
+
before(:each) do
|
181
|
+
Dir.stub!(:glob).and_return { |glob_string| [glob_string] }
|
182
|
+
fake_config = Hash.new.stub!(:[]).and_return { |x| ["file1.ext", "!file1.ext", "file2.ext"] }
|
183
|
+
@config.stub!(:simple_config).and_return(fake_config)
|
184
|
+
end
|
185
|
+
|
186
|
+
it "should not contain negated files" do
|
187
|
+
@config.src_files.should == ["file2.ext"]
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
it "simple_config stylesheets" do
|
192
|
+
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
|
193
|
+
|
194
|
+
YAML.stub!(:load).and_return({'stylesheets' => ['foo.css', 'bar.css']})
|
195
|
+
Dir.stub!(:glob).and_return { |glob_string| [glob_string] }
|
196
|
+
|
197
|
+
@config.stylesheets.should == ['foo.css', 'bar.css']
|
198
|
+
end
|
199
|
+
|
200
|
+
it "using rails jasmine.yml" do
|
201
|
+
['public/javascripts/prototype.js',
|
202
|
+
'public/javascripts/effects.js',
|
203
|
+
'public/javascripts/controls.js',
|
204
|
+
'public/javascripts/dragdrop.js',
|
205
|
+
'public/javascripts/application.js'].each { |f| `touch #{f}` }
|
206
|
+
|
207
|
+
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine-rails.yml'))
|
208
|
+
|
209
|
+
@config.spec_files.should == ['PlayerSpec.js']
|
210
|
+
@config.helpers.should == ['helpers/SpecHelper.js']
|
211
|
+
@config.src_files.should == ['public/javascripts/prototype.js',
|
212
|
+
'public/javascripts/effects.js',
|
213
|
+
'public/javascripts/controls.js',
|
214
|
+
'public/javascripts/dragdrop.js',
|
215
|
+
'public/javascripts/application.js',
|
216
|
+
'public/javascripts/Player.js',
|
217
|
+
'public/javascripts/Song.js']
|
218
|
+
@config.js_files.should == [
|
219
|
+
'/public/javascripts/prototype.js',
|
220
|
+
'/public/javascripts/effects.js',
|
221
|
+
'/public/javascripts/controls.js',
|
222
|
+
'/public/javascripts/dragdrop.js',
|
223
|
+
'/public/javascripts/application.js',
|
224
|
+
'/public/javascripts/Player.js',
|
225
|
+
'/public/javascripts/Song.js',
|
226
|
+
'/__spec__/helpers/SpecHelper.js',
|
227
|
+
'/__spec__/PlayerSpec.js',
|
228
|
+
]
|
229
|
+
@config.js_files("PlayerSpec.js").should == [
|
230
|
+
'/public/javascripts/prototype.js',
|
231
|
+
'/public/javascripts/effects.js',
|
232
|
+
'/public/javascripts/controls.js',
|
233
|
+
'/public/javascripts/dragdrop.js',
|
234
|
+
'/public/javascripts/application.js',
|
235
|
+
'/public/javascripts/Player.js',
|
236
|
+
'/public/javascripts/Song.js',
|
237
|
+
'/__spec__/helpers/SpecHelper.js',
|
238
|
+
'/__spec__/PlayerSpec.js'
|
239
|
+
]
|
240
|
+
end
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
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"]
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
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"]
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
describe "when the asset pipeline (or any other sprockets environment) is active" do
|
261
|
+
let(:src_files) { ["assets/some.js", "assets/files.js"] }
|
262
|
+
let(:mapped_files) { ["some.js", "files.js"] }
|
263
|
+
let(:mapper) { double("mapper") }
|
264
|
+
|
265
|
+
let(:config) do
|
266
|
+
Jasmine::Config.new.tap do |config|
|
267
|
+
#TODO: simple_config should be a passed in hash
|
268
|
+
config.stub(:simple_config) { { 'src_files' => src_files} }
|
269
|
+
config.src_mapper = mapper
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
it "should use the mapper to return src_files" do
|
274
|
+
mapper.should_receive(:files).with(src_files).and_return(mapped_files)
|
275
|
+
config.src_files.should == mapped_files
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
describe "jasmine_host" do
|
280
|
+
it "should default to localhost" do
|
281
|
+
Jasmine::Config.new.jasmine_host.should == 'http://localhost'
|
282
|
+
end
|
283
|
+
|
284
|
+
it "should use ENV['JASMINE_HOST'] if it exists" do
|
285
|
+
ENV.stub(:[], "JASMINE_HOST").and_return("foo")
|
286
|
+
Jasmine::Config.new.jasmine_host.should == 'foo'
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
describe "port" do
|
291
|
+
it "should find an unused port" do
|
292
|
+
Jasmine.should_receive(:find_unused_port).and_return('1234')
|
293
|
+
Jasmine::Config.new.port.should == '1234'
|
294
|
+
end
|
295
|
+
|
296
|
+
it "should use ENV['JASMINE_PORT'] if it exists" do
|
297
|
+
ENV.stub(:[], "JASMINE_PORT").and_return("foo")
|
298
|
+
Jasmine::Config.new.port.should == 'foo'
|
299
|
+
end
|
300
|
+
|
301
|
+
it "should cache port" do
|
302
|
+
config = Jasmine::Config.new
|
303
|
+
Jasmine.stub(:find_unused_port).and_return('1234')
|
304
|
+
config.port.should == '1234'
|
305
|
+
Jasmine.stub(:find_unused_port).and_return('4321')
|
306
|
+
config.port.should == '1234'
|
307
|
+
end
|
308
|
+
end
|
309
|
+
end
|