/// <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); }
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); } }