public async Task ErrorResult() { var server = new TestServerBuilder().Build(); var fieldContextBuilder = server.CreateFieldContextBuilder <InvokableController>(nameof(InvokableController.ErrorResult)); var controller = new InvokableController(); var resolutionContext = fieldContextBuilder.CreateResolutionContext(); var result = await controller.InvokeActionAsync( fieldContextBuilder.GraphMethod.Object, resolutionContext) as GraphFieldErrorActionResult; Assert.IsNotNull(result); Assert.AreEqual("an error happened", result.Message); Assert.AreEqual("12345", result.Code); Assert.IsNotNull(result.Exception); Assert.AreEqual("exception text", result.Exception.Message); }
public async Task PublishSubEvent_PublishesEventWithCorrectData() { var server = new TestServerBuilder() .AddGraphController <InvokableController>() .Build(); var fieldContextBuilder = server.CreateFieldContextBuilder <InvokableController>( nameof(InvokableController.MutationRaisesSubEvent)); var arg1Value = "random string"; fieldContextBuilder.AddInputArgument("arg1", arg1Value); var resolutionContext = fieldContextBuilder.CreateResolutionContext(); var controller = new InvokableController(); var result = await controller.InvokeActionAsync(fieldContextBuilder.GraphMethod.Object, resolutionContext); // ensure the method executed completely Assert.IsNotNull(result); Assert.IsTrue(result is ObjectReturnedGraphActionResult); // ensure the event collection was created on the context Assert.IsTrue(resolutionContext.Request.Items.ContainsKey(SubscriptionConstants.RAISED_EVENTS_COLLECTION_KEY)); var raisedEvents = resolutionContext.Request.Items[SubscriptionConstants.RAISED_EVENTS_COLLECTION_KEY] as List <SubscriptionEventProxy>; // ensure only one event was added Assert.AreEqual(1, raisedEvents.Count); var eventData = raisedEvents[0]; // ensure event properties Assert.AreEqual("event1", eventData.EventName); var obj = eventData.DataObject as TwoPropertyObject; Assert.IsNotNull(obj); Assert.AreEqual(arg1Value, obj.Property1); }
public async Task PublishSubEvent_NoEventNameFailsTheResolver_BubblesExceptionUp() { var server = new TestServerBuilder() .AddGraphController <InvokableController>() .Build(); var fieldContextBuilder = server.CreateFieldContextBuilder <InvokableController>( nameof(InvokableController.MutationRaiseSubEventWithNoEventName)); var arg1Value = "random string"; fieldContextBuilder.AddInputArgument("arg1", arg1Value); var resolutionContext = fieldContextBuilder.CreateResolutionContext(); var controller = new InvokableController(); Assert.ThrowsAsync <ArgumentException>(async() => { var result = await controller.InvokeActionAsync(fieldContextBuilder.GraphMethod.Object, resolutionContext); }); await Task.CompletedTask; }