Пример #1
0
    public async void TestResolveViaForeignServiceType()
    {
        // arrange
        ISchema schema = SchemaBuilder.New()
                         .AddApolloFederation()
                         .AddQueryType <Query>()
                         .Create();

        IResolverContext context = CreateResolverContext(schema);

        // act
        var representations = new List <Representation>
        {
            new()
            {
                TypeName = "ForeignType",
                Data     = new ObjectValueNode(
                    new ObjectFieldNode("Id", "1"),
                    new ObjectFieldNode("SomeExternalField", "someExternalField"))
            }
        };

        // assert
        List <object?> result = await EntitiesResolver._Entities(schema, representations, context);

        ForeignType obj = Assert.IsType <ForeignType>(result[0]);

        Assert.Equal("1", obj.Id);
        Assert.Equal("someExternalField", obj.SomeExternalField);
        Assert.Equal("InternalValue", obj.InternalField);
    }
Пример #2
0
        public string GetNameForForeignTypeDecl(ForeignType foreignType)
        {
            if (foreignTypeDeclNames.TryGetValue(foreignType, out string name))
            {
                return(name);
            }

            name = UniquifyName(NamePrefix + foreignType.CanonicalRepresentation);
            foreignTypeDeclNames.Add(foreignType, name);
            return(name);
        }
Пример #3
0
        public StreamForeign()
        {
            var streamType = new ForeignType("Stream");

            Add("Stream", streamType, Stream);
            Add("Write", new BoundTupleType(new IBoundDecl[] { streamType, Decl.Int }), Decl.Unit, WriteInt);
            Add("WriteByte", new BoundTupleType(new IBoundDecl[] { streamType, Decl.Int }), Decl.Unit, WriteByte);
            Add("Write", new BoundTupleType(new IBoundDecl[] { streamType, Decl.String }), Decl.Unit, WriteString);
            Add("Seek", new BoundTupleType(new IBoundDecl[] { streamType, Decl.Int }), Decl.Unit, Seek);
            Add("Position", streamType, Decl.Int, StreamPosition);
            Add("Close", streamType, Decl.Unit, CloseStream);
            Add("ReadFile", Decl.String, Decl.String, ReadFile);
        }
Пример #4
0
        public StreamForeign()
        {
            var streamType = new ForeignType("Stream");

            Add("Stream", streamType, Stream);
            Add("Write", new BoundTupleType(new IBoundDecl[] { streamType, Decl.Int }), Decl.Unit, WriteInt);
            Add("WriteByte", new BoundTupleType(new IBoundDecl[] { streamType, Decl.Int }), Decl.Unit, WriteByte);
            Add("Write", new BoundTupleType(new IBoundDecl[] { streamType, Decl.String }), Decl.Unit, WriteString);
            Add("Seek", new BoundTupleType(new IBoundDecl[] { streamType, Decl.Int }), Decl.Unit, Seek);
            Add("Position", streamType, Decl.Int, StreamPosition);
            Add("Close", streamType, Decl.Unit, CloseStream);
            Add("ReadFile", Decl.String, Decl.String, ReadFile);
        }
Пример #5
0
 public string GetForeignTypeName(ForeignType foreignType)
 {
     return(char.ToUpper(foreignType.OriginalRepresentation[0]) + foreignType.OriginalRepresentation.Substring(1));
 }