specterjs 0.0.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.
Files changed (28) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/lib/javascript/assertions/assert.coffee +4 -0
  4. data/lib/javascript/specter.js +79 -0
  5. data/lib/rails/specter.rb +8 -0
  6. data/lib/rails/specter/application/app/assets/javascripts/exec.js +32 -0
  7. data/lib/rails/specter/application/app/assets/javascripts/runner.js +65 -0
  8. data/lib/rails/specter/application/app/assets/javascripts/test.js +104 -0
  9. data/lib/rails/specter/application/app/assets/javascripts/vendors/prism.js +724 -0
  10. data/lib/rails/specter/application/app/assets/stylesheets/application.scss +89 -0
  11. data/lib/rails/specter/application/app/assets/stylesheets/test.scss +37 -0
  12. data/lib/rails/specter/application/app/assets/stylesheets/tests.scss +76 -0
  13. data/lib/rails/specter/application/app/assets/stylesheets/variables.scss +11 -0
  14. data/lib/rails/specter/application/app/assets/stylesheets/vendors/prism.css +197 -0
  15. data/lib/rails/specter/application/app/controllers/application_controller.rb +2 -0
  16. data/lib/rails/specter/application/app/controllers/tests_controller.rb +29 -0
  17. data/lib/rails/specter/application/app/models/specter/test.rb +26 -0
  18. data/lib/rails/specter/application/app/views/layouts/application.html.erb +24 -0
  19. data/lib/rails/specter/application/app/views/tests/index.html.erb +19 -0
  20. data/lib/rails/specter/application/app/views/tests/run.html.erb +20 -0
  21. data/lib/rails/specter/application/app/views/tests/show.html.erb +14 -0
  22. data/lib/rails/specter/application/application.rb +13 -0
  23. data/lib/rails/specter/application/config.ru +12 -0
  24. data/lib/rails/specter/engine.rb +14 -0
  25. data/lib/rails/specter/tasks/specter.rake +47 -0
  26. data/lib/rails/version.rb +3 -0
  27. data/specter.gemspec +28 -0
  28. metadata +97 -0
@@ -0,0 +1,26 @@
1
+ module Specter
2
+ class Test
3
+ attr_reader :pathname
4
+ def initialize(pathname)
5
+ @pathname = pathname
6
+ end
7
+
8
+ def input
9
+ File.open(@pathname + "input.html").read
10
+ end
11
+
12
+ def expected
13
+ File.open(@pathname + "expected.html").read
14
+ end
15
+
16
+ def test
17
+ File.open(@pathname + "test.js").read
18
+ end
19
+
20
+ def valid?
21
+ File.exist?(@pathname + "input.html") &&
22
+ File.exist?(@pathname + "expected.html") &&
23
+ File.exist?(@pathname + "test.js")
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,24 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Specter Test Application</title>
5
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
6
+ <%= csrf_meta_tags %>
7
+ </head>
8
+
9
+ <body>
10
+
11
+ <header>
12
+ <div>
13
+ <h1><a href='/'>Specter</a></h1>
14
+ </div>
15
+ <%= yield :testrun %>
16
+ </header>
17
+
18
+ <%= yield %>
19
+
20
+ <%= javascript_include_tag 'runner', 'data-turbolinks-track' => true %>
21
+ </body>
22
+ </html>
23
+
24
+
@@ -0,0 +1,19 @@
1
+ <%= content_for :testrun do %>
2
+ <a id="Run" data-running="false">Run all tests</a>
3
+ <% end %>
4
+
5
+
6
+ <main>
7
+ <ul class="tests">
8
+ <% @directories.each do |dir| %>
9
+ <%= content_tag :li, class: %w(test), data: { status: 'idle', run: run_test_path(id:dir.basename) } do %>
10
+ <div class="status" data-error="❌" data-success="✓">
11
+ </div>
12
+ <div>
13
+ <%= link_to dir.basename.to_s.capitalize, test_path(id: dir.basename) %>
14
+ <span class="message"></span>
15
+ </div>
16
+ <% end %>
17
+ <% end %>
18
+ </ul>
19
+ </main>
@@ -0,0 +1,20 @@
1
+ <section id="SpecterTestWrapper">
2
+
3
+ <div>
4
+ <%= raw @test.input %>
5
+ </div>
6
+
7
+ <div>
8
+ <%= raw @test.expected %>
9
+ </div>
10
+ </section>
11
+
12
+
13
+ <%= javascript_include_tag 'specter', 'data-turbolinks-track' => true %>
14
+ <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
15
+
16
+ <script>
17
+ <%= raw @test.test %>
18
+ </script>
19
+
20
+ <%= javascript_include_tag 'exec', 'data-turbolinks-track' => true %>
@@ -0,0 +1,14 @@
1
+ <main id="Test">
2
+ <section class="result">
3
+ <header>
4
+ <div class='status'></div>
5
+ <div class='message'></div>
6
+ </header>
7
+ <pre class="real line-numbers"><span class='label'>Result</span><code class='language-html'></code></pre>
8
+ <pre class="expected line-numbers"><span class='label'>Expected</span><code class='language-html'><%= @test.expected %></code></pre>
9
+ </section>
10
+
11
+ <%= content_tag :iframe, nil, src: run_test_path(id: @test.pathname.basename.to_s) %>
12
+ </main>
13
+
14
+ <%= javascript_include_tag 'test', 'data-turbolinks-track' => true %>
@@ -0,0 +1,13 @@
1
+ module Specter
2
+ class Application < Rails::Application
3
+ config.eager_load = false
4
+ secrets.secret_key_base = "Something not so secret :)"
5
+ config.logger = ActiveSupport::Logger.new(STDOUT)
6
+ config.assets.debug = true
7
+ config.assets.precompile += %w(specter runner test exec)
8
+
9
+ config.assets.paths += Rails.application.paths['app/assets'].existent
10
+ config.assets.paths += Specter::Engine.paths['app/assets'].existent
11
+ end
12
+ end
13
+
@@ -0,0 +1,12 @@
1
+ run Specter::Application.initialize!
2
+
3
+ Specter::Application.routes.draw do
4
+ resources :tests, only: [:show, :index] do
5
+ member do
6
+ get :run
7
+ get :expected
8
+ end
9
+ end
10
+ root 'tests#index'
11
+ end
12
+
@@ -0,0 +1,14 @@
1
+ module Specter
2
+ class Engine < Rails::Engine
3
+ def paths
4
+ @paths ||= begin
5
+ paths = super
6
+ paths["lib/tasks"] << "lib/rails/specter/tasks"
7
+ paths.add "app/assets", with: "lib/javascript"
8
+ paths.add "app/views", with: Rails.root + "test/javascript"
9
+ paths.add "test/javascript", with: Rails.root + "test/javascript", glob: "*"
10
+ paths
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,47 @@
1
+ require "rake/testtask"
2
+
3
+ task default: %w[test]
4
+
5
+
6
+ namespace :test do
7
+ desc 'Run JavaScript test in browser'
8
+ task :javascript do
9
+ root = Rails.root
10
+
11
+ Dir.chdir File.expand_path("../../application", __FILE__) do
12
+ require 'bundler/setup'
13
+ ENV['RAILS_ENV'] ||= 'test'
14
+ Bundler.require(:default, ENV['RAILS_ENV'])
15
+
16
+ require "rails"
17
+
18
+ %w(
19
+ action_controller
20
+ action_view
21
+ sprockets
22
+ ).each do |framework|
23
+ begin
24
+ require "#{framework}/railtie"
25
+ rescue LoadError
26
+ end
27
+ end
28
+
29
+ Rails.env = ENV['RAILS_ENV']
30
+ require 'thin'
31
+ require 'rails/commands/server'
32
+ require_relative '../application/application'
33
+
34
+ config = Rails.application.config.assets
35
+ config.paths << (root + "test/javascript/").to_s
36
+
37
+ server = Rails::Server.new
38
+ server.options[:Port] ||= 3000
39
+ server.options[:Host] ||= '0.0.0.0'
40
+ server.options[:server] = 'thin'
41
+
42
+ server.start
43
+ end
44
+ end
45
+
46
+ end
47
+
@@ -0,0 +1,3 @@
1
+ module Specter
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,28 @@
1
+ lib = File.expand_path('../lib/rails', __FILE__)
2
+ $:.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'specterjs'
8
+ s.version = Specter::VERSION
9
+ s.summary = 'Testing solution for JavaScript environment'
10
+
11
+ s.required_ruby_version = '>= 2.0.0'
12
+
13
+ s.license = 'MIT'
14
+
15
+ s.author = 'Pier-Olivier Thibault'
16
+ s.email = 'pothibo@gmail.com'
17
+ s.homepage = 'http://pothibo.com'
18
+
19
+ s.files = `git ls-files -z`.split("\x0")
20
+ s.files += Dir['README.md']
21
+
22
+ s.require_path = 'lib/rails'
23
+
24
+ s.add_runtime_dependency 'thin', '~> 1.6'
25
+ s.add_runtime_dependency 'rails', '~> 4.2'
26
+
27
+ end
28
+
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: specterjs
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Pier-Olivier Thibault
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thin
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.2'
41
+ description:
42
+ email: pothibo@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - ".gitignore"
48
+ - lib/javascript/assertions/assert.coffee
49
+ - lib/javascript/specter.js
50
+ - lib/rails/specter.rb
51
+ - lib/rails/specter/application/app/assets/javascripts/exec.js
52
+ - lib/rails/specter/application/app/assets/javascripts/runner.js
53
+ - lib/rails/specter/application/app/assets/javascripts/test.js
54
+ - lib/rails/specter/application/app/assets/javascripts/vendors/prism.js
55
+ - lib/rails/specter/application/app/assets/stylesheets/application.scss
56
+ - lib/rails/specter/application/app/assets/stylesheets/test.scss
57
+ - lib/rails/specter/application/app/assets/stylesheets/tests.scss
58
+ - lib/rails/specter/application/app/assets/stylesheets/variables.scss
59
+ - lib/rails/specter/application/app/assets/stylesheets/vendors/prism.css
60
+ - lib/rails/specter/application/app/controllers/application_controller.rb
61
+ - lib/rails/specter/application/app/controllers/tests_controller.rb
62
+ - lib/rails/specter/application/app/models/specter/test.rb
63
+ - lib/rails/specter/application/app/views/layouts/application.html.erb
64
+ - lib/rails/specter/application/app/views/tests/index.html.erb
65
+ - lib/rails/specter/application/app/views/tests/run.html.erb
66
+ - lib/rails/specter/application/app/views/tests/show.html.erb
67
+ - lib/rails/specter/application/application.rb
68
+ - lib/rails/specter/application/config.ru
69
+ - lib/rails/specter/engine.rb
70
+ - lib/rails/specter/tasks/specter.rake
71
+ - lib/rails/version.rb
72
+ - specter.gemspec
73
+ homepage: http://pothibo.com
74
+ licenses:
75
+ - MIT
76
+ metadata: {}
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib/rails
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 2.0.0
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubyforge_project:
93
+ rubygems_version: 2.4.5.1
94
+ signing_key:
95
+ specification_version: 4
96
+ summary: Testing solution for JavaScript environment
97
+ test_files: []