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 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