jasmine 0.4.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.
Files changed (32) hide show
  1. data/README.markdown +21 -0
  2. data/bin/jasmine +55 -0
  3. data/generators/jasmine/jasmine_generator.rb +25 -0
  4. data/generators/jasmine/templates/INSTALL +9 -0
  5. data/generators/jasmine/templates/lib/tasks/jasmine.rake +23 -0
  6. data/generators/jasmine/templates/spec/javascripts/ExampleSpec.js +11 -0
  7. data/generators/jasmine/templates/spec/javascripts/SpecHelper.js +1 -0
  8. data/generators/jasmine/templates/spec/javascripts/support/jasmine_config.rb +23 -0
  9. data/generators/jasmine/templates/spec/javascripts/support/jasmine_spec.rb +17 -0
  10. data/generators/jasmine/templates/spec/javascripts/support/sources-rails.yaml +8 -0
  11. data/generators/jasmine/templates/spec/javascripts/support/sources.yaml +5 -0
  12. data/jasmine/contrib/ruby/jasmine_runner.rb +334 -0
  13. data/jasmine/contrib/ruby/jasmine_spec_builder.rb +153 -0
  14. data/jasmine/contrib/ruby/run.html +47 -0
  15. data/jasmine/lib/TrivialReporter.js +117 -0
  16. data/jasmine/lib/consolex.js +28 -0
  17. data/jasmine/lib/jasmine-0.10.0.js +2261 -0
  18. data/jasmine/lib/jasmine.css +86 -0
  19. data/jasmine/lib/json2.js +478 -0
  20. data/lib/jasmine.rb +6 -0
  21. data/lib/jasmine/base.rb +63 -0
  22. data/lib/jasmine/config.rb +151 -0
  23. data/lib/jasmine/run.html.erb +43 -0
  24. data/lib/jasmine/selenium_driver.rb +44 -0
  25. data/lib/jasmine/server.rb +125 -0
  26. data/lib/jasmine/spec_builder.rb +152 -0
  27. data/spec/config_spec.rb +77 -0
  28. data/spec/jasmine_self_test_config.rb +15 -0
  29. data/spec/jasmine_self_test_spec.rb +18 -0
  30. data/spec/server_spec.rb +65 -0
  31. data/spec/spec_helper.rb +3 -0
  32. metadata +143 -0
@@ -0,0 +1,77 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
2
+
3
+ describe Jasmine::Config do
4
+ before(:each) do
5
+ @template_dir = File.expand_path(File.join(File.dirname(__FILE__), "../generators/jasmine/templates"))
6
+ @config = Jasmine::Config.new
7
+ @config.stub!(:src_dir).and_return(File.join(@template_dir, "public"))
8
+ @config.stub!(:spec_dir).and_return(File.join(@template_dir, "spec"))
9
+ end
10
+
11
+ describe "simple_config" do
12
+ it "if sources.yaml not found" do
13
+ File.stub!(:exist?).and_return(false)
14
+ @config.src_files.should == []
15
+ @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
16
+ @config.mappings.should == {
17
+ '/__root__' => @config.project_root,
18
+ '/__spec__' => @config.spec_dir
19
+ }
20
+ end
21
+
22
+ it "if sources.yaml is empty" do
23
+ YAML.stub!(:load).and_return(false)
24
+ @config.src_files.should == []
25
+ @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
26
+ @config.mappings.should == {
27
+ '/__root__' => @config.project_root,
28
+ '/__spec__' => @config.spec_dir
29
+ }
30
+ end
31
+
32
+ it "using default sources.yaml" do
33
+ @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/sources.yaml'))
34
+ @config.src_files.should == []
35
+ @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
36
+ @config.mappings.should == {
37
+ '/__root__' => @config.project_root,
38
+ '/__spec__' => @config.spec_dir
39
+ }
40
+ end
41
+
42
+ it "using rails sources.yaml" do
43
+ @config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/sources-rails.yaml'))
44
+ @config.src_files.should == ['javascripts/prototype.js',
45
+ 'javascripts/effects.js',
46
+ 'javascripts/controls.js',
47
+ 'javascripts/dragdrop.js',
48
+ 'javascripts/application.js']
49
+ @config.spec_files.should == ['javascripts/ExampleSpec.js', 'javascripts/SpecHelper.js']
50
+ @config.js_files.should == [
51
+ '/javascripts/prototype.js',
52
+ '/javascripts/effects.js',
53
+ '/javascripts/controls.js',
54
+ '/javascripts/dragdrop.js',
55
+ '/javascripts/application.js',
56
+ '/__spec__/javascripts/ExampleSpec.js',
57
+ '/__spec__/javascripts/SpecHelper.js',
58
+ ]
59
+ end
60
+ end
61
+
62
+
63
+ it "should provide dir mappings" do
64
+ @config.mappings.should == {
65
+ '/__root__' => @config.project_root,
66
+ '/__spec__' => @config.spec_dir
67
+ }
68
+ end
69
+
70
+ it "should provide a list of all spec files with full paths" do
71
+ @config.spec_files_full_paths.should == [
72
+ File.join(@template_dir, 'spec/javascripts/ExampleSpec.js'),
73
+ File.join(@template_dir, 'spec/javascripts/SpecHelper.js')
74
+ ]
75
+ end
76
+
77
+ end
@@ -0,0 +1,15 @@
1
+ require 'jasmine'
2
+
3
+ class JasmineSelfTestConfig < Jasmine::Config
4
+ def project_root
5
+ File.expand_path(File.join(File.dirname(__FILE__), ".."))
6
+ end
7
+
8
+ def src_dir
9
+ File.join(project_root, 'src')
10
+ end
11
+
12
+ def spec_dir
13
+ File.join(project_root, 'jasmine/spec')
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
2
+
3
+ require 'jasmine_self_test_config'
4
+
5
+ jasmine_config = JasmineSelfTestConfig.new
6
+ spec_builder = Jasmine::SpecBuilder.new(jasmine_config)
7
+
8
+ should_stop = false
9
+
10
+ Spec::Runner.configure do |config|
11
+ config.after(:suite) do
12
+ spec_builder.stop if should_stop
13
+ end
14
+ end
15
+
16
+ spec_builder.start
17
+ should_stop = true
18
+ spec_builder.declare_suites
@@ -0,0 +1,65 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
2
+
3
+ def read(body)
4
+ return body if body.is_a?(String)
5
+ out = ""
6
+ body.each {|data| out += data }
7
+ out
8
+ end
9
+
10
+ describe Jasmine::Server do
11
+ before(:each) do
12
+ config = Jasmine::Config.new
13
+ config.stub!(:mappings).and_return({
14
+ "/src" => File.join(Jasmine.root, "src"),
15
+ "/spec" => File.join(Jasmine.root, "spec")
16
+ })
17
+
18
+ config.stub!(:js_files).and_return(["/src/file1.js", "/spec/file2.js"])
19
+
20
+ @server = Jasmine::Server.new(0, config)
21
+ @thin_app = @server.thin.app
22
+ end
23
+
24
+ after(:each) do
25
+ @server.thin.stop if @server && @server.thin.running?
26
+ end
27
+
28
+ it "should serve static files" do
29
+ code, headers, body = @thin_app.call("PATH_INFO" => "/spec/suites/EnvSpec.js", "SCRIPT_NAME" => "xxx")
30
+ code.should == 200
31
+ headers["Content-Type"].should == "application/javascript"
32
+ read(body).should == File.read(File.join(Jasmine.root, "spec/suites/EnvSpec.js"))
33
+ end
34
+
35
+ it "should serve Jasmine static files under /__JASMINE_ROOT__/" do
36
+ code, headers, body = @thin_app.call("PATH_INFO" => "/__JASMINE_ROOT__/lib/jasmine.css", "SCRIPT_NAME" => "xxx")
37
+ code.should == 200
38
+ headers["Content-Type"].should == "text/css"
39
+ read(body).should == File.read(File.join(Jasmine.root, "lib/jasmine.css"))
40
+ end
41
+
42
+ it "should redirect /run.html to /" do
43
+ code, headers, body = @thin_app.call("PATH_INFO" => "/run.html", "SCRIPT_NAME" => "xxx")
44
+ code.should == 302
45
+ headers["Location"].should == "/"
46
+ end
47
+
48
+ describe "/ page" do
49
+ it "should load each js file in order" do
50
+ code, headers, body = @thin_app.call("PATH_INFO" => "/", "SCRIPT_NAME" => "xxx")
51
+ code.should == 200
52
+ body = read(body)
53
+ body.should include("\"/src/file1.js")
54
+ body.should include("\"/spec/file2.js")
55
+ body.should satisfy {|s| s.index("/src/file1.js") < s.index("/spec/file2.js") }
56
+ end
57
+ end
58
+
59
+ it "should display an error using JS for 404's" do
60
+ code, headers, body = @thin_app.call("PATH_INFO" => "/spec/NonExistantFile.js", "SCRIPT_NAME" => "xxx")
61
+ code.should == 200 # todo: shouldn't this be 404? will that work with all browsers?
62
+ headers["Content-Type"].should == "application/javascript"
63
+ read(body).should == "document.write('<p>Couldn\\'t load /spec/NonExistantFile.js!</p>');"
64
+ end
65
+ end
@@ -0,0 +1,3 @@
1
+ require 'spec'
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), "../lib/jasmine"))
metadata ADDED
@@ -0,0 +1,143 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jasmine
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
+ platform: ruby
6
+ authors:
7
+ - Rajan Agaskar
8
+ - Christian Williams
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2010-01-26 00:00:00 -08:00
14
+ default_executable: jasmine
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rspec
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 1.1.5
25
+ version:
26
+ - !ruby/object:Gem::Dependency
27
+ name: json
28
+ type: :runtime
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 1.1.9
35
+ version:
36
+ - !ruby/object:Gem::Dependency
37
+ name: rack
38
+ type: :runtime
39
+ version_requirement:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 1.0.0
45
+ version:
46
+ - !ruby/object:Gem::Dependency
47
+ name: thin
48
+ type: :runtime
49
+ version_requirement:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.2.4
55
+ version:
56
+ - !ruby/object:Gem::Dependency
57
+ name: selenium-rc
58
+ type: :runtime
59
+ version_requirement:
60
+ version_requirements: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 2.1.0
65
+ version:
66
+ - !ruby/object:Gem::Dependency
67
+ name: selenium-client
68
+ type: :runtime
69
+ version_requirement:
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.2.17
75
+ version:
76
+ description: Javascript BDD test framework
77
+ email: ragaskar@gmail.com
78
+ executables:
79
+ - jasmine
80
+ extensions: []
81
+
82
+ extra_rdoc_files:
83
+ - README.markdown
84
+ files:
85
+ - generators/jasmine/jasmine_generator.rb
86
+ - generators/jasmine/templates/INSTALL
87
+ - generators/jasmine/templates/lib/tasks/jasmine.rake
88
+ - generators/jasmine/templates/spec/javascripts/ExampleSpec.js
89
+ - generators/jasmine/templates/spec/javascripts/SpecHelper.js
90
+ - generators/jasmine/templates/spec/javascripts/support/jasmine_config.rb
91
+ - generators/jasmine/templates/spec/javascripts/support/jasmine_spec.rb
92
+ - generators/jasmine/templates/spec/javascripts/support/sources-rails.yaml
93
+ - generators/jasmine/templates/spec/javascripts/support/sources.yaml
94
+ - jasmine/contrib/ruby/jasmine_runner.rb
95
+ - jasmine/contrib/ruby/jasmine_spec_builder.rb
96
+ - jasmine/contrib/ruby/run.html
97
+ - jasmine/lib/TrivialReporter.js
98
+ - jasmine/lib/consolex.js
99
+ - jasmine/lib/jasmine-0.10.0.js
100
+ - jasmine/lib/jasmine.css
101
+ - jasmine/lib/json2.js
102
+ - lib/jasmine.rb
103
+ - lib/jasmine/base.rb
104
+ - lib/jasmine/config.rb
105
+ - lib/jasmine/run.html.erb
106
+ - lib/jasmine/selenium_driver.rb
107
+ - lib/jasmine/server.rb
108
+ - lib/jasmine/spec_builder.rb
109
+ - README.markdown
110
+ has_rdoc: true
111
+ homepage: http://github.com/pivotal/jasmine-ruby
112
+ licenses: []
113
+
114
+ post_install_message:
115
+ rdoc_options:
116
+ - --charset=UTF-8
117
+ require_paths:
118
+ - lib
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: "0"
124
+ version:
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: "0"
130
+ version:
131
+ requirements: []
132
+
133
+ rubyforge_project:
134
+ rubygems_version: 1.3.5
135
+ signing_key:
136
+ specification_version: 3
137
+ summary: Jasmine Ruby Runner
138
+ test_files:
139
+ - spec/config_spec.rb
140
+ - spec/jasmine_self_test_config.rb
141
+ - spec/jasmine_self_test_spec.rb
142
+ - spec/server_spec.rb
143
+ - spec/spec_helper.rb