nitrolinks-rails 0.2.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02876071ee063c5549016d3b2067f0d2556b0e19
4
- data.tar.gz: 854ba5bc3278599e9ba3875bec3bd1fb21cfe526
3
+ metadata.gz: 5e6a69c055759d75ac97aaa8a376597a8dd61219
4
+ data.tar.gz: 0bf0b7d6e666b9203761d37a670932b403ed0101
5
5
  SHA512:
6
- metadata.gz: 0163b8b372e197a13b997ca96fd0cb929c6cd187b63b32f789d5e64036d270b82c0ffd306bf8141f358dedd212a32e35364e333cd9c444fc6c57ae25ec381299
7
- data.tar.gz: 08facc91ca92d4f09d0c3d047e820bdbf296ac583c07c3886ef4be89ed5c683661019aa6aabca9bfed030d07d87abee2c5f1d17e927e09a201cc244488d6b64d
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,5 @@
1
+ module Nitrolinks
2
+ module Capybara
3
+ end
4
+ end
5
+
@@ -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
+
@@ -1,5 +1,5 @@
1
1
  module Nitrolinks
2
2
  module Rails
3
- VERSION = '0.2.0'
3
+ VERSION = '0.3.0'
4
4
  end
5
5
  end
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.2.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.5.1
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