|
1 | 1 | namespace AngleSharp.Scripting.JavaScript.Tests
|
2 | 2 | {
|
3 | 3 | using AngleSharp.Dom.Html;
|
| 4 | + using AngleSharp.Scripting.JavaScript.Tests.Mocks; |
4 | 5 | using NUnit.Framework;
|
5 | 6 | using System;
|
6 | 7 | using System.Threading.Tasks;
|
@@ -68,7 +69,55 @@ public async Task CreateCustomEventViaCustomConstructorWithDetailShouldWork()
|
68 | 69 | public async Task CreateXmlHttpRequestShouldWork()
|
69 | 70 | {
|
70 | 71 | var result = await EvaluateComplexScriptAsync("var xhr = new XMLHttpRequest(); xhr.open('GET', 'foo');", SetResult("xhr.readyState.toString()"));
|
71 |
| - Assert.AreEqual("0", result); |
| 72 | + Assert.AreEqual("1", result); |
| 73 | + } |
| 74 | + |
| 75 | + [Test] |
| 76 | + public async Task PerformXmlHttpRequestSynchronousToDataUrlShouldWork() |
| 77 | + { |
| 78 | + var cfg = Configuration.Default.WithJavaScript().WithDefaultLoader(); |
| 79 | + var script = "var xhr = new XMLHttpRequest(); xhr.open('GET', 'data:plain/text,Hello World!', false);xhr.send();document.querySelector('#result').textContent = xhr.responseText;"; |
| 80 | + var html = "<!doctype html><div id=result></div><script>" + script + "</script>"; |
| 81 | + var document = await BrowsingContext.New(cfg).OpenAsync(m => m.Content(html)); |
| 82 | + var result = document.QuerySelector("#result").TextContent; |
| 83 | + Assert.AreEqual("Hello World!", result); |
| 84 | + } |
| 85 | + |
| 86 | + [Test] |
| 87 | + public async Task PerformXmlHttpRequestSynchronousToDelayedResponseShouldWork() |
| 88 | + { |
| 89 | + var message = "Hi!"; |
| 90 | + var cfg = Configuration.Default.WithJavaScript().WithDefaultLoader(requesters: new[] { new DelayedRequester(10, message) }); |
| 91 | + var script = @" |
| 92 | +var xhr = new XMLHttpRequest(); |
| 93 | +xhr.open('GET', 'http://example.com/', false); |
| 94 | +xhr.send(); |
| 95 | +document.querySelector('#result').textContent = xhr.responseText;"; |
| 96 | + var html = "<!doctype html><div id=result></div><script>" + script + "</script>"; |
| 97 | + var document = await BrowsingContext.New(cfg).OpenAsync(m => m.Content(html)); |
| 98 | + var result = document.QuerySelector("#result"); |
| 99 | + Assert.AreEqual(message, result.TextContent); |
| 100 | + } |
| 101 | + |
| 102 | + [Test] |
| 103 | + public async Task PerformXmlHttpRequestAsynchronousToDelayedResponseShouldWork() |
| 104 | + { |
| 105 | + var message = "Hi!"; |
| 106 | + var cfg = Configuration.Default.WithJavaScript().WithDefaultLoader(requesters: new [] { new DelayedRequester(10, message) }); |
| 107 | + var script = @" |
| 108 | +var xhr = new XMLHttpRequest(); |
| 109 | +xhr.open('GET', 'http://example.com/'); |
| 110 | +xhr.addEventListener('load', function (ev) { |
| 111 | + document.querySelector('#result').textContent = xhr.responseText; |
| 112 | +}, false); |
| 113 | +xhr.send(); |
| 114 | +document.querySelector('#result').textContent = xhr.responseText;"; |
| 115 | + var html = "<!doctype html><div id=result></div><script>" + script + "</script>"; |
| 116 | + var document = await BrowsingContext.New(cfg).OpenAsync(m => m.Content(html)); |
| 117 | + var result = document.QuerySelector("#result"); |
| 118 | + Assert.AreEqual("", result.TextContent); |
| 119 | + await Task.Delay(50); |
| 120 | + Assert.AreEqual(message, result.TextContent); |
72 | 121 | }
|
73 | 122 |
|
74 | 123 | [Test]
|
|
0 commit comments