public async void Basic_Web_Call_Succeeds() { string script = @" var client = new httpClient(); var getResult = client.GetAsync('http://www.google.com/').Result; context.Subject.TestValueObject = getResult; context.Subject.TestValueString = getResult.Content.ReadAsStringAsync().Result; "; var testNode = new JavaScriptNode <TestObjectA> { ExecutedScript = script }; testNode.AddScriptType("httpClient", typeof(HttpClient)); var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject); var result = await testNode.ExecuteAsync(context); testObject = result.GetSubjectAs <TestObjectA>(); testObject.TestValueObject.ShouldNotBeNull(); testObject.TestValueString.ShouldNotBeNull(); testObject.TestValueString.ShouldNotBeEmpty(); result.Status.ShouldEqual(NodeResultStatus.Succeeded); testNode.Status.ShouldEqual(NodeRunStatus.Completed); }
public void Errant_Node_Run_With_ThrowOnError_True_Throws() { var testNode = new JavaScriptNode <TestObjectA> { ExecutedScript = "context.Subject.TestValueString = 'Hello JavaScript!'; throw 'An error happened';" }; var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject) { GlobalOptions = { ThrowOnError = true } }; Assert.Throws <Microsoft.ClearScript.ScriptEngineException>(async() => await testNode.ExecuteAsync(context)); }
public async void Node_Is_Not_Run_If_ShouldExecute_False() { var testNode = new JavaScriptNode <TestObjectA> { ExecutedScript = "context.Subject.TestValueString = 'Hello JavaScript!';", ShouldExecuteFunc = c => Task.FromResult(false) }; var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject); var result = await testNode.ExecuteAsync(context); result.Status.ShouldEqual(NodeResultStatus.NotRun); context.Subject.TestValueString.ShouldBeNull(); }
public async void Failed_Node_Run_Status_Is_Failed() { var testNode = new JavaScriptNode <TestObjectA> { ExecutedScript = "context.Subject.TestValueString = 'Hello JavaScript!'; result.IsSuccess = false;" }; var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject); var result = await testNode.ExecuteAsync(context); result.GetSubjectAs <TestObjectA>().TestValueString.ShouldEqual("Hello JavaScript!"); testNode.Status.ShouldEqual(NodeRunStatus.Completed); result.Status.ShouldEqual(NodeResultStatus.Failed); }
public async void Successful_Node_Run_Matches_Expectations() { var testNode = new JavaScriptNode <TestObjectA> { ExecutedScript = "context.Subject.TestValueString = 'Hello JavaScript!'" }; var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject); var result = await testNode.ExecuteAsync(context); result.GetSubjectAs <TestObjectA>().TestValueString.ShouldEqual("Hello JavaScript!"); result.Status.ShouldEqual(NodeResultStatus.Succeeded); testNode.Status.ShouldEqual(NodeRunStatus.Completed); }
public async void Errant_Node_Run_Status_Is_Faulted() { var testNode = new JavaScriptNode <TestObjectA> { ExecutedScript = "context.Subject.TestValueString = 'Hello JavaScript!'; throw 'An error happened';" }; var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject); var result = await testNode.ExecuteAsync(context); result.Exception.ShouldNotBeNull(); result.Status.ShouldEqual(NodeResultStatus.Failed); testNode.Status.ShouldEqual(NodeRunStatus.Faulted); }
public WebresourceNode AddSingleNode(Webresource resource, string[] nameParts, FolderNode folder = null) { var fileName = nameParts.Last(); WebresourceType type = WebresourceType.Auto; if (resource.Type != 0) { type = (WebresourceType)resource.Type; } if (type == WebresourceType.Auto) { if (fileName.IndexOf(".", StringComparison.Ordinal) < 0) { if (resource.Type == 0) { return(null); } type = (WebresourceType)resource.Type; } else { type = Webresource.GetTypeFromExtension(fileName .Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries).Last()); } } WebresourceNode node = null; switch (type) { case WebresourceType.WebPage: node = new WebpageNode(resource, Settings); break; case WebresourceType.Css: node = new CssNode(resource, Settings); break; case WebresourceType.Data: node = new DataNode(resource, Settings); break; case WebresourceType.Gif: node = new GifNode(resource, Settings); break; case WebresourceType.Ico: node = new IcoNode(resource, Settings); break; case WebresourceType.Jpg: node = new JpgNode(resource, Settings); break; case WebresourceType.Png: node = new PngNode(resource, Settings); break; case WebresourceType.Resx: node = new ResxNode(resource, Settings); break; case WebresourceType.Script: node = new JavaScriptNode(resource, Settings); break; case WebresourceType.Silverlight: node = new SilverlightNode(resource, Settings); break; case WebresourceType.Vector: node = new VectorNode(resource, Settings); break; case WebresourceType.Xsl: node = new XslNode(resource, Settings); break; } resource.Node = node; if (folder != null && node != null) { node.ForeColor = resource.State == WebresourceState.Saved ? Color.Blue : resource.State == WebresourceState.Draft ? Color.Red : Color.Black; folder.Nodes.Add(node); (node.Parent as FolderNode)?.SetFolderColor(); } return(node); }
public void Initial_Node_Run_Status_Is_NotRun() { var testNode = new JavaScriptNode <TestObjectA>(); testNode.Status.ShouldEqual(NodeRunStatus.NotRun); }