Skip to content

Commit fdb8c9e

Browse files
committed
Include tests for the XHR
1 parent 3846824 commit fdb8c9e

File tree

1 file changed

+50
-1
lines changed

1 file changed

+50
-1
lines changed

AngleSharp.Scripting.JavaScript.Tests/ScriptEvalTests.cs

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace AngleSharp.Scripting.JavaScript.Tests
22
{
33
using AngleSharp.Dom.Html;
4+
using AngleSharp.Scripting.JavaScript.Tests.Mocks;
45
using NUnit.Framework;
56
using System;
67
using System.Threading.Tasks;
@@ -68,7 +69,55 @@ public async Task CreateCustomEventViaCustomConstructorWithDetailShouldWork()
6869
public async Task CreateXmlHttpRequestShouldWork()
6970
{
7071
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);
72121
}
73122

74123
[Test]

0 commit comments

Comments
 (0)