unpoly-rails 0.23.0 → 0.24.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.

Potentially problematic release.


This version of unpoly-rails might be problematic. Click here for more details.

Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +68 -0
  3. data/dist/unpoly-bootstrap3.js +1 -1
  4. data/dist/unpoly-bootstrap3.min.js +1 -1
  5. data/dist/unpoly.css +18 -8
  6. data/dist/unpoly.js +498 -265
  7. data/dist/unpoly.min.css +1 -1
  8. data/dist/unpoly.min.js +3 -3
  9. data/lib/assets/javascripts/unpoly-bootstrap3/modal-ext.js.coffee +5 -2
  10. data/lib/assets/javascripts/unpoly/flow.js.coffee +3 -1
  11. data/lib/assets/javascripts/unpoly/form.js.coffee +3 -6
  12. data/lib/assets/javascripts/unpoly/layout.js.coffee +1 -1
  13. data/lib/assets/javascripts/unpoly/link.js.coffee +4 -2
  14. data/lib/assets/javascripts/unpoly/log.js.coffee +2 -2
  15. data/lib/assets/javascripts/unpoly/modal.js.coffee +125 -36
  16. data/lib/assets/javascripts/unpoly/motion.js.coffee +75 -37
  17. data/lib/assets/javascripts/unpoly/navigation.js.coffee +38 -26
  18. data/lib/assets/javascripts/unpoly/proxy.js.coffee +77 -52
  19. data/lib/assets/javascripts/unpoly/syntax.js.coffee +1 -0
  20. data/lib/assets/javascripts/unpoly/tooltip.js.coffee +2 -0
  21. data/lib/assets/javascripts/unpoly/util.js.coffee +138 -46
  22. data/lib/assets/stylesheets/unpoly/link.css.sass +1 -1
  23. data/lib/assets/stylesheets/unpoly/modal.css.sass +28 -15
  24. data/lib/unpoly/rails/version.rb +1 -1
  25. data/spec_app/Gemfile.lock +7 -7
  26. data/spec_app/spec/javascripts/helpers/reset_up.js.coffee +2 -0
  27. data/spec_app/spec/javascripts/helpers/to_contain.js.coffee +5 -0
  28. data/spec_app/spec/javascripts/up/flow_spec.js.coffee +2 -2
  29. data/spec_app/spec/javascripts/up/history_spec.js.coffee +6 -4
  30. data/spec_app/spec/javascripts/up/link_spec.js.coffee +114 -5
  31. data/spec_app/spec/javascripts/up/modal_spec.js.coffee +28 -18
  32. data/spec_app/spec/javascripts/up/motion_spec.js.coffee +112 -7
  33. data/spec_app/spec/javascripts/up/navigation_spec.js.coffee +157 -121
  34. data/spec_app/spec/javascripts/up/popup_spec.js.coffee +1 -1
  35. data/spec_app/spec/javascripts/up/proxy_spec.js.coffee +42 -3
  36. data/spec_app/spec/javascripts/up/syntax_spec.js.coffee +1 -2
  37. data/spec_app/spec/javascripts/up/util_spec.js.coffee +26 -1
  38. data/spec_app/vendor/assets/bower_components/jquery/.bower.json +1 -1
  39. metadata +3 -3
  40. data/spec_app/spec/javascripts/helpers/set_timer.js.coffee +0 -3
@@ -10,6 +10,20 @@ describe 'up.proxy', ->
10
10
 
11
11
  describe 'up.ajax', ->
12
12
 
13
+ it 'makes a request with the given URL and params', ->
14
+ up.ajax('/foo', data: { key: 'value' }, method: 'post')
15
+ request = @lastRequest()
16
+ expect(request.url).toEndWith('/foo')
17
+ expect(request.data()).toEqual(key: ['value'])
18
+ expect(request.method).toEqual('POST')
19
+
20
+ it 'also allows to pass the URL as a { url } option instead', ->
21
+ up.ajax(url: '/foo', data: { key: 'value' }, method: 'post')
22
+ request = @lastRequest()
23
+ expect(request.url).toEndWith('/foo')
24
+ expect(request.data()).toEqual(key: ['value'])
25
+ expect(request.method).toEqual('POST')
26
+
13
27
  it 'caches server responses for 5 minutes', ->
14
28
  responses = []
15
29
 
@@ -40,6 +54,30 @@ describe 'up.proxy', ->
40
54
 
41
55
  expect(responses).toEqual(['foo', 'foo', 'bar'])
42
56
 
57
+ it "does not cache responses if config.cacheExpiry is 0", ->
58
+ up.proxy.config.cacheExpiry = 0
59
+ up.ajax(url: '/foo')
60
+ up.ajax(url: '/foo')
61
+ expect(jasmine.Ajax.requests.count()).toEqual(2)
62
+
63
+ it "does not cache responses if config.cacheSize is 0", ->
64
+ up.proxy.config.cacheSize = 0
65
+ up.ajax(url: '/foo')
66
+ up.ajax(url: '/foo')
67
+ expect(jasmine.Ajax.requests.count()).toEqual(2)
68
+
69
+ it 'does not limit the number of cache entries if config.cacheSize is undefined'
70
+
71
+ it 'never discards old cache entries if config.cacheExpiry is undefined'
72
+
73
+ it 'respects a config.cacheSize setting', ->
74
+ up.proxy.config.cacheSize = 2
75
+ up.ajax(url: '/foo')
76
+ up.ajax(url: '/bar')
77
+ up.ajax(url: '/baz')
78
+ up.ajax(url: '/foo')
79
+ expect(jasmine.Ajax.requests.count()).toEqual(4)
80
+
43
81
  it "doesn't reuse responses when asked for the same path, but different selectors", ->
44
82
  up.ajax(url: '/path', target: '.a')
45
83
  up.ajax(url: '/path', target: '.b')
@@ -101,6 +139,7 @@ describe 'up.proxy', ->
101
139
 
102
140
  expect(jasmine.Ajax.requests.count()).toEqual(2)
103
141
 
142
+
104
143
  describe 'with config.wrapMethods set', ->
105
144
 
106
145
  it 'should be set by default', ->
@@ -362,10 +401,10 @@ describe 'up.proxy', ->
362
401
  spyOn(up, 'follow')
363
402
  $element = affix('a[href="/foo"][up-preload]')
364
403
  Trigger.mouseover($element)
365
- @setTimer 1, =>
404
+ u.setTimer 1, =>
366
405
  expect(up.follow.calls.count()).toBe(1)
367
- @setTimer 16, =>
406
+ u.setTimer 16, =>
368
407
  Trigger.mouseover($element)
369
- @setTimer 1, =>
408
+ u.setTimer 1, =>
370
409
  expect(up.follow.calls.count()).toBe(2)
371
410
  done()
@@ -14,9 +14,8 @@ describe 'up.syntax', ->
14
14
 
15
15
  expect(observeClass).not.toHaveBeenCalledWith('container')
16
16
  expect(observeClass).toHaveBeenCalledWith('child')
17
-
18
17
 
19
- destructor = jasmine.createSpy()
18
+ destructor = jasmine.createSpy('destructor')
20
19
  up.compiler '.child', ($element) ->
21
20
  destructor
22
21
 
@@ -2,12 +2,36 @@ describe 'up.util', ->
2
2
 
3
3
  describe 'Javascript functions', ->
4
4
 
5
- # describe 'up.util.argNames', ->
5
+ describe 'up.util.setTimer', ->
6
+
7
+ it 'calls the given function after waiting the given milliseconds', ->
8
+ jasmine.clock().install()
9
+ jasmine.clock().mockDate()
10
+ callback = jasmine.createSpy()
11
+ up.util.setTimer(2000, callback)
12
+ expect(callback).not.toHaveBeenCalled()
13
+ jasmine.clock().tick(1500)
14
+ expect(callback).not.toHaveBeenCalled()
15
+ jasmine.clock().tick(1500)
16
+ expect(callback).toHaveBeenCalled()
17
+
18
+ it 'calls the given function in the current execution frame if the delay is zero', ->
19
+ callback = jasmine.createSpy()
20
+ up.util.setTimer(0, callback)
21
+ expect(callback).toHaveBeenCalled()
22
+
23
+ # describe 'up.util.argNames', ->
6
24
  #
7
25
  # it 'returns an array of argument names for the given function', ->
8
26
  # fun = ($element, data) ->
9
27
  # expect(up.util.argNames(fun)).toEqual(['$element', 'data'])
10
28
 
29
+ describe 'up.util.trim', ->
30
+
31
+ it 'removes leading and trailing whitespace from the given string', ->
32
+ string = "\t\n\r abc \r\n\t"
33
+ expect(up.util.trim(string)).toEqual('abc')
34
+
11
35
  describe 'up.util.only', ->
12
36
 
13
37
  it 'returns a copy of the given object with only the given whitelisted properties', ->
@@ -399,3 +423,4 @@ describe 'up.util', ->
399
423
  expect(array).toEqual([
400
424
  { name: 'my=key', value: 'my=value' },
401
425
  ])
426
+
@@ -1,4 +1,4 @@
1
- {
1
+ {
2
2
  "name": "jquery",
3
3
  "version": "2.1.4",
4
4
  "main": "dist/jquery.js",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unpoly-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.0
4
+ version: 0.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henning Koch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-28 00:00:00.000000000 Z
11
+ date: 2016-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -206,12 +206,12 @@ files:
206
206
  - spec_app/spec/javascripts/helpers/reset_path.js.coffee
207
207
  - spec_app/spec/javascripts/helpers/reset_up.js.coffee
208
208
  - spec_app/spec/javascripts/helpers/restore_body_scroll.js.coffee
209
- - spec_app/spec/javascripts/helpers/set_timer.js.coffee
210
209
  - spec_app/spec/javascripts/helpers/to_be_around.js.coffee
211
210
  - spec_app/spec/javascripts/helpers/to_be_blank.js.coffee
212
211
  - spec_app/spec/javascripts/helpers/to_be_given.js.coffee
213
212
  - spec_app/spec/javascripts/helpers/to_be_missing.js.coffee
214
213
  - spec_app/spec/javascripts/helpers/to_be_present.js.coffee
214
+ - spec_app/spec/javascripts/helpers/to_contain.js.coffee
215
215
  - spec_app/spec/javascripts/helpers/to_end_with.js.coffee
216
216
  - spec_app/spec/javascripts/helpers/to_equal_jquery.js.coffee
217
217
  - spec_app/spec/javascripts/helpers/to_have_request_method.js.coffee
@@ -1,3 +0,0 @@
1
- beforeEach ->
2
- @setTimer = (millis, fun) ->
3
- setTimeout(fun, millis)