sayso-js-test-driver-rails 0.4.3
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 +7 -0
- data/.gitmodules +6 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +21 -0
- data/LICENSE +19 -0
- data/README.markdown +118 -0
- data/Rakefile +12 -0
- data/js-test-driver-rails.gemspec +25 -0
- data/lib/js_test_driver.rb +6 -0
- data/lib/js_test_driver/config.rb +209 -0
- data/lib/js_test_driver/html_fixture.rb +40 -0
- data/lib/js_test_driver/runner.rb +232 -0
- data/lib/js_test_driver/tasks.rb +28 -0
- data/lib/js_test_driver/version.rb +3 -0
- data/test/fixtures/a.html +1 -0
- data/test/fixtures/b.html +1 -0
- data/test/fixtures/baz/a.html +1 -0
- data/test/fixtures/c.html +1 -0
- data/test/fixtures/foo/a.html +1 -0
- data/test/fixtures/foo/bar/a.html +1 -0
- data/test/fixtures/hello.txt +1 -0
- data/test/integration/sample_test.rb +15 -0
- data/test/sample/config/js_test_driver.rb +11 -0
- data/test/sample/lib/calculator.js +15 -0
- data/test/sample/specs/calculator_spec.js +19 -0
- data/test/sample/specs/spec_helper.js +4 -0
- data/test/test_helper.rb +28 -0
- data/test/unit/config_test.rb +270 -0
- data/test/unit/html_fixture_test.rb +70 -0
- data/test/unit/runner_test.rb +107 -0
- data/vendor/JasmineAdapter.js +179 -0
- data/vendor/VERSIONS +3 -0
- data/vendor/coverage.jar +0 -0
- data/vendor/jasmine.js +2435 -0
- data/vendor/js_test_driver.jar +0 -0
- metadata +129 -0
@@ -0,0 +1,232 @@
|
|
1
|
+
module JsTestDriver
|
2
|
+
# The Runner class is used
|
3
|
+
class Runner
|
4
|
+
|
5
|
+
def initialize(attributes = {})
|
6
|
+
self.attributes = attributes
|
7
|
+
end
|
8
|
+
|
9
|
+
# configuration, by default it's parsed from config_path
|
10
|
+
attr_writer :config
|
11
|
+
|
12
|
+
def config
|
13
|
+
@config ||= parse_config
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_writer :generated_files_dir
|
17
|
+
|
18
|
+
# this is where the generated files will be saved, by default this is `pwd`/.js_test_driver
|
19
|
+
#
|
20
|
+
# the generated files are the config yml file and the fixture files
|
21
|
+
def generated_files_dir
|
22
|
+
@generated_files_dir || default_generated_files_dir
|
23
|
+
end
|
24
|
+
|
25
|
+
# this is the path of the config file, by default its `pwd`/config/js_test_driver.rb
|
26
|
+
attr_writer :config_path
|
27
|
+
|
28
|
+
def config_path
|
29
|
+
@config_path ||= default_config_path
|
30
|
+
end
|
31
|
+
|
32
|
+
# this is the path to the js test driver jar file, by default it's stored relatively to this file
|
33
|
+
attr_writer :jar_path
|
34
|
+
|
35
|
+
def jar_path
|
36
|
+
@jar_path ||= default_jar_path
|
37
|
+
end
|
38
|
+
|
39
|
+
# this is where the config yml file will be saved, by default its saved in the generated files
|
40
|
+
# directory under the name jsTestDriver.conf
|
41
|
+
attr_writer :tmp_path
|
42
|
+
|
43
|
+
def config_yml_path
|
44
|
+
@tmp_path ||= default_config_yml_path
|
45
|
+
end
|
46
|
+
|
47
|
+
# starts the server on the default port specified in the config file
|
48
|
+
def start_server
|
49
|
+
command = execute_jar
|
50
|
+
|
51
|
+
add_start_server(command)
|
52
|
+
|
53
|
+
command.run
|
54
|
+
end
|
55
|
+
|
56
|
+
# captures the browsers
|
57
|
+
#
|
58
|
+
# by default it will capture the browsers specified in the config,
|
59
|
+
# but you can pass an argument like 'opera,chrome,firefox' to capture opera, chrome and firefox
|
60
|
+
def capture_browsers(browsers = nil)
|
61
|
+
browsers ||= ''
|
62
|
+
browsers = browsers.split(',')
|
63
|
+
browsers = config.browsers if browsers.empty?
|
64
|
+
|
65
|
+
url = config.server + "/capture"
|
66
|
+
|
67
|
+
browsers.each do |browser|
|
68
|
+
spawn("#{browser} \'#{url}\'")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# runs the tests specified by the argument
|
73
|
+
#
|
74
|
+
# by default it will run all the tests, but you can pass a string like:
|
75
|
+
# 'TestCase' or 'TestCase.test'
|
76
|
+
# to run either a single test case or a single test
|
77
|
+
def run_tests(tests = nil)
|
78
|
+
command = execute_jar
|
79
|
+
|
80
|
+
add_with_config(command)
|
81
|
+
add_run_tests(command, tests)
|
82
|
+
|
83
|
+
command.run
|
84
|
+
end
|
85
|
+
|
86
|
+
def start_server_capture_and_run(tests = nil, browsers = nil, output_xml_path = nil, console = nil)
|
87
|
+
command = execute_jar
|
88
|
+
|
89
|
+
add_start_server(command)
|
90
|
+
add_runner_mode(command)
|
91
|
+
add_with_config(command)
|
92
|
+
add_capture_browsers(command, browsers)
|
93
|
+
add_run_tests(command, tests)
|
94
|
+
add_output_directory(command, output_xml_path) if output_xml_path
|
95
|
+
add_capture_console(command) if console
|
96
|
+
|
97
|
+
result = command.run
|
98
|
+
|
99
|
+
if config.measure_coverage? && output_xml_path
|
100
|
+
generate_html_coverage_report(output_xml_path)
|
101
|
+
end
|
102
|
+
|
103
|
+
return result
|
104
|
+
end
|
105
|
+
|
106
|
+
def add_start_server(command)
|
107
|
+
command.option('--port', config.port)
|
108
|
+
end
|
109
|
+
|
110
|
+
def add_runner_mode(command)
|
111
|
+
command.option('--runnerMode', ENV['RUNNER_MODE']) unless ENV['RUNNER_MODE'].nil? || ENV['RUNNER_MODE'].empty?
|
112
|
+
end
|
113
|
+
|
114
|
+
def add_run_tests(command, tests)
|
115
|
+
command.option('--tests', tests || "all")
|
116
|
+
end
|
117
|
+
|
118
|
+
def add_capture_browsers(command, browsers)
|
119
|
+
browsers ||= config.browsers.join(',')
|
120
|
+
raise ArgumentError.new("No browsers defined!") if browsers == ""
|
121
|
+
command.option('--browser', browsers)
|
122
|
+
end
|
123
|
+
|
124
|
+
def add_output_directory(command, path)
|
125
|
+
path = File.expand_path(path)
|
126
|
+
FileUtils.mkdir_p(path) unless File.exists?(path)
|
127
|
+
command.option('--testOutput', path)
|
128
|
+
end
|
129
|
+
|
130
|
+
def add_capture_console(command)
|
131
|
+
command.option('--captureConsole')
|
132
|
+
end
|
133
|
+
|
134
|
+
def add_with_config(command)
|
135
|
+
save_config_file(config_yml_path)
|
136
|
+
command.option('--config', config_yml_path)
|
137
|
+
end
|
138
|
+
|
139
|
+
def execute_jar
|
140
|
+
Command.new('java').option('-jar', jar_path)
|
141
|
+
end
|
142
|
+
|
143
|
+
def generate_html_coverage_report(output_path)
|
144
|
+
unless genhtml_installed?
|
145
|
+
puts "Could not find genhtml. You must install lcov (sudo apt-get install lcov)"
|
146
|
+
return
|
147
|
+
end
|
148
|
+
|
149
|
+
output_path = File.expand_path(output_path)
|
150
|
+
|
151
|
+
config_file_name = File.basename(config_yml_path)
|
152
|
+
coverage_file_name = config_file_name + '-coverage.dat'
|
153
|
+
coverage_file_path = File.join(output_path, coverage_file_name)
|
154
|
+
coverage_out_dir = File.join(output_path, 'coverage')
|
155
|
+
|
156
|
+
system("genhtml -o #{coverage_out_dir} #{coverage_file_path}")
|
157
|
+
end
|
158
|
+
|
159
|
+
protected
|
160
|
+
|
161
|
+
def genhtml_installed?
|
162
|
+
!%x[which genhtml].strip.empty?
|
163
|
+
end
|
164
|
+
|
165
|
+
def parse_config
|
166
|
+
source = ""
|
167
|
+
if File.exist?(config_path)
|
168
|
+
source = File.read(config_path)
|
169
|
+
else
|
170
|
+
warn("Could not find JS Test Driver config: '#{config_path}', assuming empty config file!")
|
171
|
+
end
|
172
|
+
config = JsTestDriver::Config.parse(source)
|
173
|
+
config.config_dir = generated_files_dir
|
174
|
+
return config
|
175
|
+
end
|
176
|
+
|
177
|
+
def default_config_path
|
178
|
+
root = defined?(::Rails) ? ::Rails.root.to_s : '.'
|
179
|
+
return File.expand_path(File.join(root, 'config', 'js_test_driver.rb'))
|
180
|
+
end
|
181
|
+
|
182
|
+
def default_jar_path
|
183
|
+
current_dir = File.dirname(__FILE__)
|
184
|
+
path = File.join(current_dir, '..', '..', 'vendor', 'js_test_driver.jar')
|
185
|
+
return File.expand_path(path)
|
186
|
+
end
|
187
|
+
|
188
|
+
def default_config_yml_path
|
189
|
+
return File.expand_path("jsTestDriver.conf", generated_files_dir)
|
190
|
+
end
|
191
|
+
|
192
|
+
def default_generated_files_dir
|
193
|
+
return File.expand_path(".js_test_driver")
|
194
|
+
end
|
195
|
+
|
196
|
+
private
|
197
|
+
|
198
|
+
def save_config_file(path)
|
199
|
+
Dir.mkdir(generated_files_dir) unless File.exists?(generated_files_dir)
|
200
|
+
File.open(path, "w+") { |f| f.puts config.to_s }
|
201
|
+
config.save_fixtures
|
202
|
+
end
|
203
|
+
|
204
|
+
def attributes=(values)
|
205
|
+
values.each do |attr, value|
|
206
|
+
self.send("#{attr}=", value)
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
class Command
|
211
|
+
def initialize(executable)
|
212
|
+
@command = "#{executable}"
|
213
|
+
end
|
214
|
+
|
215
|
+
def option(name, value = nil)
|
216
|
+
value = "'#{value}'" if value && value =~ /\s/
|
217
|
+
@command = [@command, name, value].compact.join(' ')
|
218
|
+
self
|
219
|
+
end
|
220
|
+
|
221
|
+
def run
|
222
|
+
system(self.to_s)
|
223
|
+
end
|
224
|
+
|
225
|
+
def to_s
|
226
|
+
return @command
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
end
|
231
|
+
|
232
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'js_test_driver'))
|
2
|
+
|
3
|
+
namespace :js_test_driver do
|
4
|
+
|
5
|
+
desc "Starts the server using the provided configuration variables"
|
6
|
+
task :start_server do
|
7
|
+
JsTestDriver::Runner.new.start_server
|
8
|
+
end
|
9
|
+
|
10
|
+
desc "Runs the javascript tests"
|
11
|
+
task :run_tests do
|
12
|
+
exit(1) unless JsTestDriver::Runner.new.run_tests(ENV['TESTS'])
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "Capture the browsers defined in config"
|
16
|
+
task :capture_browsers do
|
17
|
+
JsTestDriver::Runner.new.capture_browsers(ENV['BROWSERS'])
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "Starts the server, captures the browsers, runs the tests - all at the same time"
|
21
|
+
task :run do
|
22
|
+
config = JsTestDriver::Runner.new
|
23
|
+
output_path = ENV['OUTPUT_PATH']
|
24
|
+
output_path = File.join(config.generated_files_dir, 'tests') if ENV['OUTPUT_XML']
|
25
|
+
config.start_server_capture_and_run(ENV['TESTS'], ENV['BROWSERS'], output_path, ENV['CAPTURE_CONSOLE'])
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>This is the file <b>a.html</b></p>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>This is the file <b>b.html</b></p>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>This is the file <b>baz/a.html</b></p>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>This is the file <b>c.html</b></p>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>This is the file <b>foo/a.html</b></p>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>This is the file <b>foo/bar/a.html</b></p>
|
@@ -0,0 +1 @@
|
|
1
|
+
This file is not a HTML file, so it will not be used as a fixture.
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
|
2
|
+
|
3
|
+
module JsTestDriver
|
4
|
+
class SampleTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_running_sample_specs
|
7
|
+
config = JsTestDriver::Runner.new(:config_path => File.expand_path('../../sample/config/js_test_driver.rb', __FILE__))
|
8
|
+
|
9
|
+
output_path = File.expand_path('../../../.js_test_driver/', __FILE__)
|
10
|
+
|
11
|
+
assert config.start_server_capture_and_run(nil, nil, output_path), 'running tests should return a success'
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
includes 'test/sample/lib/*.js'
|
2
|
+
|
3
|
+
['google-chrome', 'firefox', 'chromium-browser'].select{|b| !%x[which #{b}].strip.empty? }.each do |b|
|
4
|
+
browser b
|
5
|
+
end
|
6
|
+
|
7
|
+
enable_jasmine
|
8
|
+
measure_coverage
|
9
|
+
|
10
|
+
includes 'test/sample/specs/spec_helper.js'
|
11
|
+
includes 'test/sample/specs/**/*_spec.js'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
function Calculator(initialValue) {
|
2
|
+
this.value = initialValue;
|
3
|
+
}
|
4
|
+
|
5
|
+
Calculator.prototype = {
|
6
|
+
add: function(val) {
|
7
|
+
this.value += val;
|
8
|
+
},
|
9
|
+
multiply: function(val) {
|
10
|
+
this.value *= val;
|
11
|
+
},
|
12
|
+
sub: function(val) {
|
13
|
+
this.value -= val;
|
14
|
+
}
|
15
|
+
};
|
@@ -0,0 +1,19 @@
|
|
1
|
+
describe('Calculator', function () {
|
2
|
+
var calc;
|
3
|
+
|
4
|
+
beforeEach(function () {
|
5
|
+
calc = new Calculator(2);
|
6
|
+
});
|
7
|
+
|
8
|
+
it('adds values', function() {
|
9
|
+
calc.add(2);
|
10
|
+
|
11
|
+
expect(calc.value).toEqual(4);
|
12
|
+
});
|
13
|
+
|
14
|
+
it('multiplies values', function() {
|
15
|
+
calc.multiply(3);
|
16
|
+
|
17
|
+
expect(calc.value).toEqual(6);
|
18
|
+
});
|
19
|
+
});
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
|
4
|
+
Bundler.setup
|
5
|
+
|
6
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'js_test_driver'))
|
7
|
+
|
8
|
+
require 'test/unit'
|
9
|
+
require 'mocha'
|
10
|
+
|
11
|
+
class Test::Unit::TestCase
|
12
|
+
|
13
|
+
def setup
|
14
|
+
clean_up_saved_config_files
|
15
|
+
end
|
16
|
+
|
17
|
+
def fixture_dir
|
18
|
+
File.expand_path('fixtures', File.dirname(__FILE__))
|
19
|
+
end
|
20
|
+
|
21
|
+
def clean_up_saved_config_files
|
22
|
+
root_dir = File.expand_path('..', File.dirname(__FILE__))
|
23
|
+
Dir["#{root_dir}/**/.js_test_driver"].each do |file|
|
24
|
+
FileUtils.rm_rf(file)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,270 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
|
2
|
+
|
3
|
+
module JsTestDriver
|
4
|
+
class ConfigTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def default_result
|
7
|
+
{'server' => 'http://localhost:4224', 'basepath' => '/'}
|
8
|
+
end
|
9
|
+
|
10
|
+
def path(relative_file_name)
|
11
|
+
return File.expand_path(relative_file_name).gsub(/^\//, '')
|
12
|
+
end
|
13
|
+
|
14
|
+
def paths(arr)
|
15
|
+
arr.map{|s| path(s)}.sort
|
16
|
+
end
|
17
|
+
|
18
|
+
def assert_config_includes(config, hash)
|
19
|
+
expected = default_result.merge(hash)
|
20
|
+
assert_equal expected, YAML::load(config.to_s)
|
21
|
+
end
|
22
|
+
|
23
|
+
def given_an_empty_config
|
24
|
+
JsTestDriver::Config.new
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_empty_config
|
28
|
+
# given
|
29
|
+
config = given_an_empty_config
|
30
|
+
|
31
|
+
# then
|
32
|
+
assert_config_includes(config, default_result)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_custom_port
|
36
|
+
# given
|
37
|
+
config = given_an_empty_config
|
38
|
+
|
39
|
+
# when
|
40
|
+
config.port 666
|
41
|
+
|
42
|
+
# then
|
43
|
+
assert_config_includes config, 'server' => 'http://localhost:666'
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_custom_host
|
47
|
+
# given
|
48
|
+
config = given_an_empty_config
|
49
|
+
|
50
|
+
# when
|
51
|
+
config.host 'example.com'
|
52
|
+
|
53
|
+
# then
|
54
|
+
assert_config_includes config, 'server' => 'http://example.com:4224'
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_custom_server
|
58
|
+
# given
|
59
|
+
config = given_an_empty_config
|
60
|
+
|
61
|
+
# when
|
62
|
+
config.server 'https://example.com:443'
|
63
|
+
|
64
|
+
# then
|
65
|
+
assert_config_includes config, 'server' => 'https://example.com:443'
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_server_should_override_host_and_port
|
69
|
+
# given
|
70
|
+
config = given_an_empty_config
|
71
|
+
|
72
|
+
# when
|
73
|
+
config.port 666
|
74
|
+
config.host 'test.com'
|
75
|
+
config.server 'https://example.com:443'
|
76
|
+
|
77
|
+
# then
|
78
|
+
assert_config_includes config, 'server' => 'https://example.com:443'
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_config_with_includes
|
82
|
+
# given
|
83
|
+
config = given_an_empty_config
|
84
|
+
|
85
|
+
# when
|
86
|
+
config.includes('src/foo.js')
|
87
|
+
|
88
|
+
# then
|
89
|
+
assert_config_includes config, 'load' => paths(['src/foo.js'])
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_config_with_includes_with_globbing
|
93
|
+
# given
|
94
|
+
config = given_an_empty_config
|
95
|
+
|
96
|
+
# when
|
97
|
+
config.includes('test/fixtures/foo/**/*.html')
|
98
|
+
|
99
|
+
# then
|
100
|
+
assert_config_includes config, 'load' => paths(['test/fixtures/foo/bar/a.html', 'test/fixtures/foo/a.html'])
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_config_with_browsers
|
104
|
+
# given
|
105
|
+
config = given_an_empty_config
|
106
|
+
|
107
|
+
# when
|
108
|
+
config.browser('firefox')
|
109
|
+
config.browser('chrome')
|
110
|
+
|
111
|
+
# then
|
112
|
+
assert_equal ['firefox', 'chrome'], config.browsers
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_config_with_multiple_includes
|
116
|
+
# given
|
117
|
+
config = given_an_empty_config
|
118
|
+
|
119
|
+
# when
|
120
|
+
['a', 'b', 'c'].each do |name|
|
121
|
+
config.includes(name)
|
122
|
+
end
|
123
|
+
|
124
|
+
# then
|
125
|
+
assert_config_includes config, 'load' => paths(['a', 'b', 'c'])
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_config_with_excludes
|
129
|
+
# given
|
130
|
+
config = given_an_empty_config
|
131
|
+
|
132
|
+
# when
|
133
|
+
config.excludes('test/fixtures/foo/**/*.html')
|
134
|
+
|
135
|
+
# then
|
136
|
+
assert_config_includes config, 'exclude' => paths(['test/fixtures/foo/bar/a.html', 'test/fixtures/foo/a.html'])
|
137
|
+
end
|
138
|
+
|
139
|
+
def test_config_with_excludes_with_globbing
|
140
|
+
# given
|
141
|
+
config = given_an_empty_config
|
142
|
+
|
143
|
+
# when
|
144
|
+
config.excludes('src/foo.js')
|
145
|
+
|
146
|
+
# then
|
147
|
+
assert_config_includes config, 'exclude' => paths(['src/foo.js'])
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_empty_config_file
|
151
|
+
# given
|
152
|
+
str = ""
|
153
|
+
|
154
|
+
# when
|
155
|
+
config = JsTestDriver::Config.parse(str)
|
156
|
+
|
157
|
+
# then
|
158
|
+
assert_equal [], config.included_files
|
159
|
+
assert_equal [], config.excluded_files
|
160
|
+
assert_equal "http://localhost:4224", config.server
|
161
|
+
end
|
162
|
+
|
163
|
+
def test_sample_config_file
|
164
|
+
# given
|
165
|
+
str = <<-CONFIG
|
166
|
+
includes 'a', 'b'
|
167
|
+
includes 'c'
|
168
|
+
|
169
|
+
excludes 'd'
|
170
|
+
|
171
|
+
server 'http://example.com:666'
|
172
|
+
CONFIG
|
173
|
+
|
174
|
+
# when
|
175
|
+
config = JsTestDriver::Config.parse(str)
|
176
|
+
|
177
|
+
# then
|
178
|
+
assert_equal ['a', 'b', 'c'].map{|p| File.expand_path(p)}, config.included_files
|
179
|
+
assert_equal [File.expand_path('d')], config.excluded_files
|
180
|
+
assert_equal 'http://example.com:666', config.server
|
181
|
+
end
|
182
|
+
|
183
|
+
def test_given_a_config_path_should_expand_the_includes
|
184
|
+
# given
|
185
|
+
config = given_an_empty_config
|
186
|
+
config.config_dir = "/foo/bbb/ccc"
|
187
|
+
pwd = File.expand_path('.')
|
188
|
+
config.includes "a/a", "/b/b", "../c"
|
189
|
+
|
190
|
+
# then
|
191
|
+
assert_config_includes config, 'load' => ["a/a", '/b/b', "../c"].map{|p| path(p)}
|
192
|
+
end
|
193
|
+
|
194
|
+
def test_config_with_html_fixtures
|
195
|
+
# given
|
196
|
+
config = given_an_empty_config
|
197
|
+
config.config_dir = File.expand_path("configs")
|
198
|
+
|
199
|
+
# when
|
200
|
+
config.fixtures "fixture/directory", :name => "fixture_name", :namespace => "fixture_namespace"
|
201
|
+
|
202
|
+
# then
|
203
|
+
assert_config_includes config, 'load' => paths(["configs/fixtures/fixture_namespace/fixture_name.js"])
|
204
|
+
end
|
205
|
+
|
206
|
+
def test_should_save_fixtures
|
207
|
+
# given
|
208
|
+
config = given_an_empty_config
|
209
|
+
config.config_dir = "tmp/stuff"
|
210
|
+
config.fixtures fixture_dir, :name => "fixture_name", :namespace => "fixture_namespace"
|
211
|
+
|
212
|
+
# when
|
213
|
+
config.save_fixtures
|
214
|
+
|
215
|
+
# then
|
216
|
+
name = "tmp/stuff/fixtures/fixture_namespace/fixture_name.js"
|
217
|
+
assert File.exists?(name)
|
218
|
+
assert_equal File.read(name), config.html_fixtures.first.to_s
|
219
|
+
ensure
|
220
|
+
FileUtils.rm_rf("tmp/stuff")
|
221
|
+
end
|
222
|
+
|
223
|
+
def test_should_raise_argument_error_if_the_same_fixture_defined_twice
|
224
|
+
# given
|
225
|
+
config = given_an_empty_config
|
226
|
+
config.fixtures "fixture/directory"
|
227
|
+
|
228
|
+
assert_raises(ArgumentError) do
|
229
|
+
config.fixtures "fixture/some_other_directory"
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
def test_should_not_raise_argument_error_for_two_fixtures_with_different_names
|
234
|
+
# given
|
235
|
+
config = given_an_empty_config
|
236
|
+
config.fixtures "fixture/directory"
|
237
|
+
|
238
|
+
assert_nothing_raised do
|
239
|
+
config.fixtures "fixture/some_other_directory", :name => "some_other_name"
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
def test_enable_jasmine_adds_jasmine_and_jasmine_adapter
|
244
|
+
# given
|
245
|
+
config = given_an_empty_config
|
246
|
+
|
247
|
+
# when
|
248
|
+
config.enable_jasmine
|
249
|
+
|
250
|
+
# then
|
251
|
+
assert_equal 2, config.included_files.size
|
252
|
+
assert File.exists?(config.included_files[0])
|
253
|
+
assert Dir[config.included_files[1]].size > 0
|
254
|
+
end
|
255
|
+
|
256
|
+
def test_with_coverage_measuring_enabled
|
257
|
+
# given
|
258
|
+
config = given_an_empty_config
|
259
|
+
|
260
|
+
# when
|
261
|
+
config.measure_coverage
|
262
|
+
|
263
|
+
# then
|
264
|
+
assert_config_includes config, 'plugin' => [{'name' => 'coverage',
|
265
|
+
'jar' => File.expand_path('../../../vendor/coverage.jar', __FILE__),
|
266
|
+
'module' => 'com.google.jstestdriver.coverage.CoverageModule'}]
|
267
|
+
end
|
268
|
+
|
269
|
+
end
|
270
|
+
end
|