siesta 0.0.2 → 0.1.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/README.md +58 -4
- data/app/assets/javascripts/siesta/{siesta.js → siesta_config.js} +0 -0
- data/app/helpers/siesta/application_helper.rb +38 -0
- data/app/views/siesta/siesta/index.html.erb +2 -2
- data/lib/siesta.rb +19 -1
- data/lib/siesta/engine.rb +1 -2
- data/lib/siesta/test_suite.rb +52 -0
- data/lib/siesta/version.rb +1 -1
- metadata +23 -5
data/README.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
## Siesta
|
2
2
|
|
3
|
+
[](http://travis-ci.org/towerhe/siesta)
|
5
|
+
[](https://gemnasium.com/towerhe/siesta)
|
7
|
+
[](https://codeclimate.com/github/towerhe/siesta)
|
9
|
+
|
3
10
|
A rails mountable engine setting up
|
4
11
|
[siesta](http://www.bryntum.com/products/siesta/) for testing ExtJS.
|
5
12
|
|
@@ -15,7 +22,7 @@ And then run `bundle install` to install siesta. That's all.
|
|
15
22
|
|
16
23
|
### Usage
|
17
24
|
|
18
|
-
|
25
|
+
* Mount the engine in your rails application.
|
19
26
|
|
20
27
|
```ruby
|
21
28
|
# config/routes
|
@@ -24,7 +31,39 @@ if Rails.env.development?
|
|
24
31
|
end
|
25
32
|
```
|
26
33
|
|
27
|
-
|
34
|
+
* (OPTIONAL) Configure siesta.
|
35
|
+
* spec_dir - Default directory of specs is `spec/javascripts`, so you should create you specs under `spec/javascripts` by default. But you could change the default value through an initializer.
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
# config/initializers/siesta.rb
|
39
|
+
Siesta.configure do |config|
|
40
|
+
config.spec_dir = 'test/javascripts'
|
41
|
+
end
|
42
|
+
```
|
43
|
+
|
44
|
+
* auto_organizing - Organizing the tests by folders, default is true.
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
# config/initializers/siesta.rb
|
48
|
+
Siesta.configure do |config|
|
49
|
+
config.auto_organizing = false
|
50
|
+
end
|
51
|
+
```
|
52
|
+
If you do not enable auto_organizing function, you need to create a
|
53
|
+
`test_harness.js` under `spec_dir` to organize your tests.
|
54
|
+
|
55
|
+
```javascript
|
56
|
+
var Harness = Siesta.Harness.Browser.ExtJS;
|
57
|
+
|
58
|
+
Harness.start({
|
59
|
+
group : 'Sample',
|
60
|
+
items : [
|
61
|
+
'/assets/sample.t.js'
|
62
|
+
]
|
63
|
+
});
|
64
|
+
```
|
65
|
+
|
66
|
+
* Create your specs under the directory of specs.
|
28
67
|
|
29
68
|
```javascript
|
30
69
|
// spec/javascripts/sample.t.js
|
@@ -33,7 +72,7 @@ StartTest(function(t) {
|
|
33
72
|
})
|
34
73
|
```
|
35
74
|
|
36
|
-
|
75
|
+
* Create `spec/javascripts/test_harness.js` to start.
|
37
76
|
|
38
77
|
```javascript
|
39
78
|
// spec/javascript/test_harness.js
|
@@ -45,13 +84,28 @@ Harness.start({
|
|
45
84
|
});
|
46
85
|
```
|
47
86
|
|
48
|
-
|
87
|
+
* Start up the application, and then run your tests through
|
49
88
|
[http://localhost:3000/siesta](http://localhost:3000/siesta).
|
50
89
|
|
51
90
|
```bash
|
52
91
|
rails s
|
53
92
|
```
|
54
93
|
|
94
|
+
* (OPTIONAL) Customize the behavior of siesta. See the [Siesta.Harness.Browser.ExtJS](http://www.bryntum.com/products/siesta/docs/#!/api/Siesta.Harness.Browser.ExtJS) for a detailed description of all available options.
|
95
|
+
|
96
|
+
```javascript
|
97
|
+
// spec/javascripts/siesta_config.js
|
98
|
+
Siesta.Harness.Browser.ExtJS.configure({
|
99
|
+
title: 'Dummy App',
|
100
|
+
loaderPath: { 'DummyApp' : '/assets/extjs/app' },
|
101
|
+
|
102
|
+
preload : [
|
103
|
+
"/assets/extjs/resources/css/ext-all.css",
|
104
|
+
"/assets/extjs/ext-all-debug.js"
|
105
|
+
]
|
106
|
+
});
|
107
|
+
```
|
108
|
+
|
55
109
|
For more detail about how to test your ExtJS, please visit:
|
56
110
|
[http://www.bryntum.com/products/siesta/docs/](http://www.bryntum.com/products/siesta/docs/)
|
57
111
|
|
File without changes
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Siesta
|
2
|
+
module ApplicationHelper
|
3
|
+
def include_siesta_config
|
4
|
+
if asset_exists?('siesta_config.js')
|
5
|
+
javascript_include_tag 'siesta_config'
|
6
|
+
else
|
7
|
+
javascript_include_tag 'siesta/siesta_config'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def include_test_harness
|
12
|
+
if Siesta.config.auto_organizing
|
13
|
+
content_tag(:script, test_harness, { type: 'text/javascript' }, false)
|
14
|
+
else
|
15
|
+
javascript_include_tag 'test_harness'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
def asset_exists?(asset)
|
21
|
+
Rails.application.assets.find_asset(asset)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_harness
|
25
|
+
@suite ||= TestSuite.new(File.join(Rails.root, Siesta.config.spec_dir))
|
26
|
+
|
27
|
+
groups = @suite.groups.inject([]) do |c, g|
|
28
|
+
c << { group: g.name, items: g.items.map(&:url) }
|
29
|
+
end
|
30
|
+
|
31
|
+
<<-SCRIPTS
|
32
|
+
var Harness = Siesta.Harness.Browser.ExtJS;
|
33
|
+
|
34
|
+
Harness.start(#{groups.to_json.gsub(/^\[|\]$/, '')});
|
35
|
+
SCRIPTS
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/siesta.rb
CHANGED
@@ -1,4 +1,22 @@
|
|
1
|
-
require
|
1
|
+
require 'rails'
|
2
|
+
require 'virtus'
|
3
|
+
|
4
|
+
require 'siesta/engine'
|
5
|
+
require 'siesta/test_suite'
|
2
6
|
|
3
7
|
module Siesta
|
8
|
+
class << self
|
9
|
+
def config
|
10
|
+
@config ||= ActiveSupport::OrderedOptions.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def configure
|
14
|
+
yield config
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
Siesta.configure do |config|
|
20
|
+
config.spec_dir = 'spec/javascripts'
|
21
|
+
config.auto_organizing = true
|
4
22
|
end
|
data/lib/siesta/engine.rb
CHANGED
@@ -7,8 +7,7 @@ module Siesta
|
|
7
7
|
raise RuntimeError, "siesta requires the asset pipeline to be enabled"
|
8
8
|
end
|
9
9
|
|
10
|
-
app.config.assets.paths << app.root.join(
|
11
|
-
app.config.assets.paths << app.root.join('test/javascripts').to_s
|
10
|
+
app.config.assets.paths << app.root.join(Siesta.config.spec_dir).to_s
|
12
11
|
end
|
13
12
|
end
|
14
13
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Siesta
|
2
|
+
class TestSuite
|
3
|
+
class Group
|
4
|
+
include ::Virtus
|
5
|
+
|
6
|
+
attribute :path, String
|
7
|
+
attribute :suite, TestSuite
|
8
|
+
|
9
|
+
def name
|
10
|
+
@name ||= path.gsub(suite.path, '')
|
11
|
+
|
12
|
+
@name.blank? ? 'global' : @name
|
13
|
+
end
|
14
|
+
|
15
|
+
def items
|
16
|
+
@items ||= Dir.glob(File.join(path, '*.t.js')).inject([]) do |c, f|
|
17
|
+
c << Item.new(path: f, group: self, suite: suite) unless File.directory?(f)
|
18
|
+
|
19
|
+
c
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class Item
|
25
|
+
include ::Virtus
|
26
|
+
|
27
|
+
attribute :path, String
|
28
|
+
attribute :group, Group
|
29
|
+
attribute :suite, TestSuite
|
30
|
+
|
31
|
+
def url
|
32
|
+
@url ||= File.join('/assets', path.gsub(suite.path, ''))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
attr_reader :path
|
37
|
+
|
38
|
+
def initialize(path)
|
39
|
+
@path = path
|
40
|
+
end
|
41
|
+
|
42
|
+
def groups
|
43
|
+
@groups ||= Dir.glob(File.join(path, '**', '*')).inject([]) do |c, f|
|
44
|
+
c << Group.new(path: f, suite: self) if File.directory?(f)
|
45
|
+
|
46
|
+
c
|
47
|
+
end
|
48
|
+
|
49
|
+
@groups << Group.new(path: path, suite: self)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/siesta/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: siesta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 3.2.6
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: virtus
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.5.1
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.5.1
|
30
46
|
description: A rails mountable engine setting up siesta for testing ExtJS
|
31
47
|
email:
|
32
48
|
- towerhe@gmail.com
|
@@ -36,10 +52,12 @@ extra_rdoc_files: []
|
|
36
52
|
files:
|
37
53
|
- app/controllers/siesta/siesta_controller.rb
|
38
54
|
- app/controllers/siesta/application_controller.rb
|
39
|
-
- app/
|
55
|
+
- app/helpers/siesta/application_helper.rb
|
56
|
+
- app/assets/javascripts/siesta/siesta_config.js
|
40
57
|
- app/views/siesta/siesta/index.html.erb
|
41
58
|
- config/routes.rb
|
42
59
|
- lib/siesta.rb
|
60
|
+
- lib/siesta/test_suite.rb
|
43
61
|
- lib/siesta/engine.rb
|
44
62
|
- lib/siesta/version.rb
|
45
63
|
- vendor/assets/stylesheets/extjs/resources/css/ext-all-gray.css
|
@@ -1395,7 +1413,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1395
1413
|
version: '0'
|
1396
1414
|
segments:
|
1397
1415
|
- 0
|
1398
|
-
hash:
|
1416
|
+
hash: 1098804971030861051
|
1399
1417
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1400
1418
|
none: false
|
1401
1419
|
requirements:
|
@@ -1404,7 +1422,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1404
1422
|
version: '0'
|
1405
1423
|
segments:
|
1406
1424
|
- 0
|
1407
|
-
hash:
|
1425
|
+
hash: 1098804971030861051
|
1408
1426
|
requirements: []
|
1409
1427
|
rubyforge_project:
|
1410
1428
|
rubygems_version: 1.8.24
|