OLD | NEW |
(Empty) | |
| 1 library HistoryTest; |
| 2 import 'package:unittest/unittest.dart'; |
| 3 import 'package:unittest/html_individual_config.dart'; |
| 4 import 'dart:html'; |
| 5 import 'dart:async'; |
| 6 |
| 7 main() { |
| 8 useHtmlIndividualConfiguration(); |
| 9 |
| 10 group('supported_state', () { |
| 11 test('supportsState', () { |
| 12 expect(History.supportsState, true); |
| 13 }); |
| 14 }); |
| 15 |
| 16 group('supported_HashChangeEvent', () { |
| 17 test('supported', () { |
| 18 expect(HashChangeEvent.supported, true); |
| 19 }); |
| 20 }); |
| 21 |
| 22 var expectation = History.supportsState ? returnsNormally : throws; |
| 23 |
| 24 group('history', () { |
| 25 test('pushState', () { |
| 26 expect(() { |
| 27 window.history.pushState(null, document.title, '?dummy'); |
| 28 var length = window.history.length; |
| 29 |
| 30 window.history.pushState(null, document.title, '?foo=bar'); |
| 31 |
| 32 expect(window.location.href.endsWith('foo=bar'), isTrue); |
| 33 |
| 34 }, expectation); |
| 35 }); |
| 36 |
| 37 test('pushState with data', () { |
| 38 expect(() { |
| 39 window.history.pushState({'one' : 1}, document.title, '?dummy'); |
| 40 expect(window.history.state, equals({'one' : 1})); |
| 41 window.history.pushState(null, document.title, '?foo=bar'); |
| 42 |
| 43 expect(window.location.href.endsWith('foo=bar'), isTrue); |
| 44 |
| 45 }, expectation); |
| 46 }); |
| 47 |
| 48 test('back', () { |
| 49 expect(() { |
| 50 window.history.pushState(null, document.title, '?dummy1'); |
| 51 window.history.pushState(null, document.title, '?dummy2'); |
| 52 var length = window.history.length; |
| 53 |
| 54 expect(window.location.href.endsWith('dummy2'), isTrue); |
| 55 |
| 56 // Need to wait a frame or two to let the pushState events occur. |
| 57 new Timer(const Duration(milliseconds: 100), expectAsync(() { |
| 58 window.onPopState.first.then(expectAsync((_){ |
| 59 expect(window.history.length, length); |
| 60 expect(window.location.href.endsWith('dummy1'), isTrue); |
| 61 })); |
| 62 |
| 63 window.history.back(); |
| 64 })); |
| 65 }, expectation); |
| 66 }); |
| 67 |
| 68 test('replaceState', () { |
| 69 expect(() { |
| 70 var length = window.history.length; |
| 71 |
| 72 window.history.replaceState(null, document.title, '?foo=baz'); |
| 73 expect(window.history.length, length); |
| 74 expect(window.location.href.endsWith('foo=baz'), isTrue); |
| 75 }, expectation); |
| 76 }); |
| 77 |
| 78 test('popstatevent', () { |
| 79 expect(() { |
| 80 var event = new Event.eventType('PopStateEvent', 'popstate'); |
| 81 expect(event is PopStateEvent, true); |
| 82 }, expectation); |
| 83 }); |
| 84 |
| 85 test('hashchangeevent', () { |
| 86 var expectation = HashChangeEvent.supported ? returnsNormally : throws; |
| 87 expect(() { |
| 88 var event = new HashChangeEvent('change', oldUrl:'old', newUrl: 'new'); |
| 89 expect(event is HashChangeEvent, true); |
| 90 expect(event.oldUrl, 'old'); |
| 91 expect(event.newUrl, 'new'); |
| 92 }, expectation); |
| 93 }); |
| 94 }); |
| 95 } |
OLD | NEW |