spec_app/spec/javascripts/up/history_spec.js.coffee in upjs-rails-0.11.0 vs spec_app/spec/javascripts/up/history_spec.js.coffee in upjs-rails-0.11.1

- old
+ new

@@ -12,77 +12,83 @@ describe 'unobtrusive behavior', -> describe '[up-back]', -> - it 'sets an [up-href] attribute to the previous URL and sets the up-restore-scroll attribute to "true"', -> - up.history.push('/one') - up.history.push('/two') - $element = up.ready(affix('a[href="/three"][up-back]').text('text')) - expect($element.attr('href')).toEndWith('/three') - expect($element.attr('up-href')).toEndWith('/one') - expect($element.attr('up-restore-scroll')).toBe('') - expect($element.attr('up-follow')).toBe('') + if up.browser.canPushState() + it 'sets an [up-href] attribute to the previous URL and sets the up-restore-scroll attribute to "true"', -> + up.history.push('/one') + up.history.push('/two') + $element = up.ready(affix('a[href="/three"][up-back]').text('text')) + expect($element.attr('href')).toEndWith('/three') + expect($element.attr('up-href')).toEndWith('/one') + expect($element.attr('up-restore-scroll')).toBe('') + expect($element.attr('up-follow')).toBe('') + it 'does not overwrite an existing up-href or up-restore-scroll attribute' it 'does not set an up-href attribute if there is no previous URL' describe 'scroll restauration', -> - afterEach -> - $('.viewport').remove() + if up.browser.canPushState() - it 'restores the scroll position of viewports when the user hits the back button', (done) -> + afterEach -> + $('.viewport').remove() - longContentHtml = """ - <div class="viewport" style="width: 100px; height: 100px; overflow-y: scroll"> - <div class="content" style="height: 1000px"></div> - </div> - """ + it 'restores the scroll position of viewports when the user hits the back button', (done) -> - respond = (html) => - @lastRequest().respondWith - status: 200 - contentType: 'text/html' - responseText: longContentHtml + longContentHtml = """ + <div class="viewport" style="width: 100px; height: 100px; overflow-y: scroll"> + <div class="content" style="height: 1000px"></div> + </div> + """ - $viewport = $(longContentHtml).appendTo(document.body) + respond = (html) => + @lastRequest().respondWith + status: 200 + contentType: 'text/html' + responseText: longContentHtml - up.layout.defaults(viewports: ['.viewport']) - up.history.defaults(popTargets: ['.viewport']) + $viewport = $(longContentHtml).appendTo(document.body) - $viewport.append(longContentHtml) + up.layout.defaults(viewports: ['.viewport']) + up.history.defaults(popTargets: ['.viewport']) - up.replace('.content', '/one') - respond() - $viewport.scrollTop(50) + $viewport.append(longContentHtml) - up.replace('.content', '/two') - respond() - $('.viewport').scrollTop(150) + up.replace('.content', '/one') + respond() - up.replace('.content', '/three') - respond() - $('.viewport').scrollTop(250) + $viewport.scrollTop(50) - history.back() - @setTimer 50, => - respond() # we need to respond since we've never requested /two with the popTarget - expect($('.viewport').scrollTop()).toBe(150) + up.replace('.content', '/two') + respond() + $('.viewport').scrollTop(150) + + up.replace('.content', '/three') + respond() + $('.viewport').scrollTop(250) + history.back() @setTimer 50, => - respond() # we need to respond since we've never requested /one with the popTarget - expect($('.viewport').scrollTop()).toBe(50) + respond() # we need to respond since we've never requested /two with the popTarget + expect($('.viewport').scrollTop()).toBe(150) - history.forward() + history.back() @setTimer 50, => - # No need to respond since we requested /two with the popTarget - # when we went backwards - expect($('.viewport').scrollTop()).toBe(150) + respond() # we need to respond since we've never requested /one with the popTarget + expect($('.viewport').scrollTop()).toBe(50) history.forward() @setTimer 50, => - respond() # we need to respond since we've never requested /three with the popTarget - expect($('.viewport').scrollTop()).toBe(250) - done() + # No need to respond since we requested /two with the popTarget + # when we went backwards + expect($('.viewport').scrollTop()).toBe(150) + + history.forward() + @setTimer 50, => + respond() # we need to respond since we've never requested /three with the popTarget + expect($('.viewport').scrollTop()).toBe(250) + done()