コード例 #1
0
        /// <summary>
        /// Recorded when the startup services generates a new schema instance.
        /// </summary>
        /// <typeparam name="TSchema">The type of the schema that was generated.</typeparam>
        /// <param name="schema">The schema instance.</param>
        public virtual void SchemaInstanceCreated <TSchema>(TSchema schema)
            where TSchema : class, ISchema
        {
            if (!this.IsEnabled(LogLevel.Debug))
            {
                return;
            }

            var entry = new SchemaInstanceCreatedLogEntry <TSchema>(schema);

            this.LogEvent(LogLevel.Debug, entry);
        }
コード例 #2
0
        public void SchemaInstanceCreatedLogEntry()
        {
            var server = new TestServerBuilder()
                         .AddGraphType <LogTestController>()
                         .Build();

            var entry = new SchemaInstanceCreatedLogEntry <GraphSchema>(server.Schema);

            Assert.AreEqual(null, entry.Message);

            Assert.AreEqual(server.Schema.OperationTypes.Count, entry.SchemaSupportedOperationTypes.Count);
            foreach (var operation in server.Schema.OperationTypes)
            {
                Assert.IsTrue(entry.SchemaSupportedOperationTypes.Contains(operation.Key.ToString().ToLower()));
            }

            Assert.AreEqual(LogEventIds.SchemaInstanceCreated.Id, entry.EventId);
            Assert.AreEqual(GraphSchema.DEFAULT_NAME, entry.SchemaInstanceName);
            Assert.AreEqual(server.Schema.KnownTypes.Count, entry.SchemaGraphTypeCount);
            Assert.AreEqual(typeof(GraphSchema).FriendlyName(true), entry.SchemaTypeName);
            Assert.IsNotNull(entry.ToString());

            foreach (var type in server.Schema.KnownTypes)
            {
                var logGraphType = entry.GraphTypes
                                   .Cast <SchemaGraphTypeLogItem>()
                                   .SingleOrDefault(x => x.GraphTypeName == type.Name);

                Assert.IsNotNull(logGraphType);
                Assert.AreEqual(type.Name, logGraphType.GraphTypeName);
                Assert.AreEqual(type.Kind.ToString(), logGraphType.GraphTypeKind);
                Assert.AreEqual(type.Publish, logGraphType.IsPublished);

                var concreteType = server.Schema.KnownTypes.FindConcreteType(type);
                Assert.AreEqual(concreteType?.FriendlyName(true), logGraphType.GraphTypeType);

                var totalFields = type is IGraphFieldContainer fc ? fc.Fields.Count : 0;
                Assert.AreEqual(totalFields, logGraphType.GraphFieldCount);
            }
        }