nitrolinks-rails 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +26 -0
- data/app/assets/javascripts/nitrolinks/load-helper.coffee +42 -0
- data/app/assets/javascripts/nitrolinks/testing.coffee +0 -13
- data/lib/nitrolinks/capybara.rb +5 -0
- data/lib/nitrolinks/capybara/jscript.rb +18 -0
- data/lib/nitrolinks/capybara/wait_for_things.rb +22 -0
- data/lib/nitrolinks/rails/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e6a69c055759d75ac97aaa8a376597a8dd61219
|
4
|
+
data.tar.gz: 0bf0b7d6e666b9203761d37a670932b403ed0101
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dec23654252da3c591c593058f2f8c477e940951637be0f98384b6058e3a1b0f1cf9630781ae4b2509e19fe1a91c51bc84eba96f556813ef759568cb440dc607
|
7
|
+
data.tar.gz: 0e0fc1339c39586ad92538c38aee79646596b8cda875773ef8c3dbd995e33a667e653495908d2bdfe1ae55538817b5671b27d1de0c6fe2a9436e2b574c3a9a08
|
data/README.md
CHANGED
@@ -19,11 +19,15 @@ gem 'nitrolinks-rails'
|
|
19
19
|
|
20
20
|
And then execute:
|
21
21
|
|
22
|
+
```sh
|
22
23
|
$ bundle
|
24
|
+
```
|
23
25
|
|
24
26
|
Or install it yourself as:
|
25
27
|
|
28
|
+
```sh
|
26
29
|
$ gem install nitrolinks-rails
|
30
|
+
```
|
27
31
|
|
28
32
|
## Usage
|
29
33
|
|
@@ -33,6 +37,28 @@ Include nitrolinks in your application.js
|
|
33
37
|
//= require nitrolinks
|
34
38
|
```
|
35
39
|
|
40
|
+
### Cucumber
|
41
|
+
|
42
|
+
If you are using cucumber with capybara, add this:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
# features/support/nitrolinks.rb
|
46
|
+
|
47
|
+
require 'nitrolinks/capybara/jscript'
|
48
|
+
require 'nitrolinks/capybara/wait_for_things'
|
49
|
+
|
50
|
+
World(Nitrolinks::Capybara::Jscript)
|
51
|
+
World(Nitrolinks::Capybara::WaitForThings)
|
52
|
+
```
|
53
|
+
|
54
|
+
Then on your application add something like this:
|
55
|
+
|
56
|
+
```html
|
57
|
+
<% if Rails.env == 'test' %>
|
58
|
+
<%= javascript_include_tag 'nitrolinks/load-helper' %>
|
59
|
+
<% end %>
|
60
|
+
```
|
61
|
+
|
36
62
|
## Development
|
37
63
|
|
38
64
|
To install this gem onto your local machine, run `bundle exec rake install`. To
|
@@ -0,0 +1,42 @@
|
|
1
|
+
whenReady = (fn) ->
|
2
|
+
if (if document.attachEvent then document.readyState == 'complete' else document.readyState != 'loading')
|
3
|
+
fn()
|
4
|
+
else
|
5
|
+
document.addEventListener "DOMContentLoaded", ->
|
6
|
+
fn()
|
7
|
+
|
8
|
+
eventListen = (event, handler) ->
|
9
|
+
document.addEventListener event, (e) ->
|
10
|
+
handler.call document, e
|
11
|
+
|
12
|
+
class NitrolinksLoadHelper
|
13
|
+
constructor: (@window, @document) ->
|
14
|
+
@active = false
|
15
|
+
|
16
|
+
body: ->
|
17
|
+
document.querySelector('body')
|
18
|
+
|
19
|
+
markAsLoading: (from)->
|
20
|
+
@active = true
|
21
|
+
@body().classList.add('testing-visiting')
|
22
|
+
|
23
|
+
markAsDoneLoading: ->
|
24
|
+
@active = false
|
25
|
+
@body().classList.remove('testing-visiting')
|
26
|
+
|
27
|
+
listen: ->
|
28
|
+
eventListen 'nitrolinks:visit', =>
|
29
|
+
@markAsLoading('nitrolinks:visit')
|
30
|
+
|
31
|
+
loads = (e) =>
|
32
|
+
@markAsDoneLoading()
|
33
|
+
|
34
|
+
eventListen 'nitrolinks:load', loads
|
35
|
+
eventListen 'nitrolinks:load-blank', loads
|
36
|
+
|
37
|
+
whenReady =>
|
38
|
+
@nitroLoadHelper = new NitrolinksLoadHelper(window, document)
|
39
|
+
@nitroLoadHelper.listen()
|
40
|
+
@nitroLoadHelper.markAsDoneLoading()
|
41
|
+
|
42
|
+
|
@@ -35,21 +35,9 @@ class NitrolinksTesting
|
|
35
35
|
body: ->
|
36
36
|
select('body')
|
37
37
|
|
38
|
-
markAsLoading: (from)->
|
39
|
-
@active = true
|
40
|
-
@body().classList.add('testing-visiting')
|
41
|
-
|
42
|
-
markAsDoneLoading: ->
|
43
|
-
@active = false
|
44
|
-
@body().classList.remove('testing-visiting')
|
45
|
-
|
46
38
|
listen: ->
|
47
|
-
eventListen 'nitrolinks:visit', =>
|
48
|
-
@markAsLoading('nitrolinks:visit')
|
49
|
-
|
50
39
|
loads = (e) =>
|
51
40
|
@loadCount += 1
|
52
|
-
@markAsDoneLoading()
|
53
41
|
@showDebugData()
|
54
42
|
|
55
43
|
eventListen 'nitrolinks:load', loads
|
@@ -68,7 +56,6 @@ class NitrolinksTesting
|
|
68
56
|
return unless select('#nitro-debugging')
|
69
57
|
@addToLoaded(@window.location.href)
|
70
58
|
@showDebugData()
|
71
|
-
@markAsDoneLoading()
|
72
59
|
|
73
60
|
addToFetched: (url) ->
|
74
61
|
@addToArrayStored(@fetchLoadKey, url)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Nitrolinks
|
2
|
+
module Capybara
|
3
|
+
module Jscript
|
4
|
+
def jscript(code)
|
5
|
+
page.evaluate_script(code)
|
6
|
+
end
|
7
|
+
|
8
|
+
def expect_script(code, filter = nil)
|
9
|
+
result = jscript(code)
|
10
|
+
if filter
|
11
|
+
result = result.send(filter)
|
12
|
+
end
|
13
|
+
expect(result)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Nitrolinks
|
2
|
+
module Capybara
|
3
|
+
module WaitForThings
|
4
|
+
def wait_for_page_load
|
5
|
+
Timeout.timeout(::Capybara.default_max_wait_time) do
|
6
|
+
loop until finished_loading?
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def finished_loading?
|
11
|
+
jscript('document.getElementsByClassName("testing-visiting").length').zero?
|
12
|
+
end
|
13
|
+
|
14
|
+
def pause_pls
|
15
|
+
$stderr.write 'Press enter to continue'
|
16
|
+
$stdin.gets
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nitrolinks-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wayne Duran
|
@@ -95,10 +95,14 @@ files:
|
|
95
95
|
- README.md
|
96
96
|
- Rakefile
|
97
97
|
- app/assets/javascripts/nitrolinks.coffee
|
98
|
+
- app/assets/javascripts/nitrolinks/load-helper.coffee
|
98
99
|
- app/assets/javascripts/nitrolinks/testing.coffee
|
99
100
|
- app/assets/javascripts/nitrolinks/utilities.coffee
|
100
101
|
- bin/rails
|
101
102
|
- config/cucumber.yml
|
103
|
+
- lib/nitrolinks/capybara.rb
|
104
|
+
- lib/nitrolinks/capybara/jscript.rb
|
105
|
+
- lib/nitrolinks/capybara/wait_for_things.rb
|
102
106
|
- lib/nitrolinks/rails.rb
|
103
107
|
- lib/nitrolinks/rails/controller.rb
|
104
108
|
- lib/nitrolinks/rails/engine.rb
|
@@ -126,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
130
|
version: '0'
|
127
131
|
requirements: []
|
128
132
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.
|
133
|
+
rubygems_version: 2.6.13
|
130
134
|
signing_key:
|
131
135
|
specification_version: 4
|
132
136
|
summary: Single-page Apps feel with less overhead
|