コード例 #1
0
        public async Task PublishSubEvent_UnusableListForSubscriptionEvents_ThrowsException()
        {
            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();

            // prepopulate with a collection thats not really a collection
            var eventCollection = new TwoPropertyObject();

            resolutionContext.Request.Items.TryAdd(SubscriptionConstants.RAISED_EVENTS_COLLECTION_KEY, eventCollection);

            var controller = new InvokableController();

            Assert.ThrowsAsync <GraphExecutionException>(async() =>
            {
                var result = await controller.InvokeActionAsync(fieldContextBuilder.GraphMethod.Object, resolutionContext);
            });

            await Task.CompletedTask;
        }
コード例 #2
0
 public Task <IGraphActionResult> WatchForWidgets(TwoPropertyObject data, string nameLike = "*")
 {
     if (data.Property1 == nameLike || nameLike == "*")
     {
         return(Task.FromResult(this.Ok(data)));
     }
     else
     {
         return(Task.FromResult(this.Ok(null)));
     }
 }
        public TwoPropertyObject WatchObjects(TwoPropertyObject data, string propLike = "*")
        {
            if (propLike == "*")
            {
                return(data);
            }

            if (data.Property1.Contains(propLike))
            {
                return(data);
            }

            return(null);
        }
コード例 #4
0
        public void OfTypeButNotType()
        {
            // V1 and V3 implement a  common interface
            var list = new List <ITwoPropertyObject>();

            var obj1 = new TwoPropertyObject();
            var obj3 = new TwoPropertyObjectV3();

            list.Add(obj1);
            list.Add(obj3);

            var result = list.OfTypeButNotType <ITwoPropertyObject, TwoPropertyObject>();

            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(obj3, result.First());
        }
コード例 #5
0
        public List <TwoPropertyObject> CollectionQueryMethod()
        {
            var list = new List <TwoPropertyObject>();

            for (var i = 0; i < 3; i++)
            {
                var obj = new TwoPropertyObject()
                {
                    Property1 = "string" + i,
                    Property2 = i,
                };
                list.Add(obj);
            }

            return(list);
        }
コード例 #6
0
        public async Task ExecutionOfAQueryPlan_WithValidDefaultObject_forSubscription_YieldsResult()
        {
            var server = new TestServerBuilder()
                         .AddGraphType <SubQueryController>()
                         .AddSubscriptionServer()
                         .Build();

            var template = TemplateHelper.CreateActionMethodTemplate <SubQueryController>(nameof(SubQueryController.RetrieveObject));

            var sourceObject = new TwoPropertyObject()
            {
                Property1 = "testA",
                Property2 = 5,
            };

            // Add a default value for the "retrieveObject" method, which is a subscription action
            // this mimics recieving an subscription event data source and executing the default, normal pipeline
            // to produce a final result that can be returned along the client connection
            var builder = server.CreateQueryContextBuilder()
                          .AddQueryText("subscription  { subscriptionData {  retrieveObject { property1 } } }")
                          .AddDefaultValue(template.Route, sourceObject);

            var result = await server.RenderResult(builder);

            var expectedOutput =
                @"{
                            ""data"" : {
                                ""subscriptionData"" : {
                                    ""retrieveObject"" : {
                                        ""property1"" : ""testA""
                                    }
                                }
                            }
                        }";

            CommonAssertions.AreEqualJsonStrings(expectedOutput, result);
        }
コード例 #7
0
 public TwoPropertyObject MultipleDeclaredSourceParams([SubscriptionSource] TwoPropertyObject data2, [SubscriptionSource] TwoPropertyObjectV2 data)
 {
     return(null);
 }
コード例 #8
0
 public TwoPropertyObject ComplexValue(TwoPropertyObject arg1 = null)
 {
     return(arg1);
 }
コード例 #9
0
 public IGraphActionResult TestExtensionMethod(TwoPropertyObject sourceData, int arg1)
 {
     return(null);
 }
コード例 #10
0
 public TwoPropertyObject TestActionMethod(TwoPropertyObject sourceData, string arg1, int arg2)
 {
     return(sourceData);
 }
コード例 #11
0
 public string FetchComplexValue(TwoPropertyObject arg4)
 {
     return(string.Empty);
 }
コード例 #12
0
 public TwoPropertyObject TestActionMethod(string arg1, ulong arg2, TwoPropertyObject itemA)
 {
     return(new TwoPropertyObject());
 }
コード例 #13
0
 public TwoPropertyObject WatchForPropObject(TwoPropertyObject obj)
 {
     return(obj);
 }
コード例 #14
0
 public TwoPropertyObject RetrieveObject(TwoPropertyObject source)
 {
     return(source);
 }
コード例 #15
0
 public TwoPropertyObject DeclaredSourceSecond(TwoPropertyObject data2, [SubscriptionSource] TwoPropertyObjectV2 data)
 {
     return(null);
 }
コード例 #16
0
 public TwoPropertyObject DeclaredSourceFirst([SubscriptionSource] TwoPropertyObjectV2 data, TwoPropertyObject data2)
 {
     return(null);
 }
コード例 #17
0
 public TwoPropertyObject InvalidEventNameMethod(TwoPropertyObject data)
 {
     return(data);
 }
コード例 #18
0
 public TwoPropertyObject SingleMethod(TwoPropertyObject data)
 {
     return(data);
 }