private JsonApiActionFilter GetActionFilterForTestModel() { var config = TestModelConfigurationBuilder.BuilderForEverything.Build(); var transformer = new JsonApiTransformerBuilder().With(config).Build(); return(new JsonApiActionFilter(transformer, config, JsonSerializerBuilder.Build())); }
public void PartiallySelectedTypes() { var schema = new UnionSchema(new[] { new RecordSchema(nameof(OrderCancelledEvent)) { Fields = new[] { new RecordField("timestamp", new StringSchema()), }, }, new RecordSchema(nameof(OrderCreatedEvent)) { Fields = new[] { new RecordField("timestamp", new StringSchema()), new RecordField( "total", new BytesSchema { LogicalType = new DecimalLogicalType(5, 2), }), }, }, }); var deserialize = deserializerBuilder.BuildDelegate <OrderCreatedEvent>(schema); var serialize = new JsonSerializerBuilder(JsonSerializerBuilder .CreateDefaultCaseBuilders() .Prepend(builder => new OrderSerializerBuilderCase(builder))) .BuildDelegate <OrderEvent>(schema); var value = new OrderCreatedEvent { Timestamp = DateTime.UtcNow, Total = 40M, }; using (stream) { serialize(value, new Utf8JsonWriter(stream)); } var reader = new Utf8JsonReader(stream.ToArray()); var result = deserialize(ref reader); Assert.Equal(value.Timestamp, result.Timestamp); Assert.Equal(value.Total, result.Total); }
public void SelectedTypes() { var schema = new RecordSchema(nameof(EventContainer)) { Fields = new[] { new RecordField( "event", new UnionSchema(new[] { new RecordSchema(nameof(OrderCreatedEvent)) { Fields = new[] { new RecordField("timestamp", new StringSchema()), new RecordField( "total", new BytesSchema() { LogicalType = new DecimalLogicalType(5, 2), }), }, }, new RecordSchema(nameof(OrderCancelledEvent)) { Fields = new[] { new RecordField("timestamp", new StringSchema()), }, }, })), }, }; var deserialize = new JsonDeserializerBuilder(JsonDeserializerBuilder .CreateDefaultCaseBuilders() .Prepend(builder => new OrderDeserializerBuilderCase(builder))) .BuildDelegate <EventContainer>(schema); var serialize = new JsonSerializerBuilder(JsonSerializerBuilder .CreateDefaultCaseBuilders() .Prepend(builder => new OrderSerializerBuilderCase(builder))) .BuildDelegate <EventContainer>(schema); var creation = new EventContainer { Event = new OrderCreatedEvent { Timestamp = DateTime.UtcNow, Total = 40M, }, }; var cancellation = new EventContainer { Event = new OrderCancelledEvent { Timestamp = DateTime.UtcNow, }, }; using (stream) { serialize(creation, new Utf8JsonWriter(stream)); var reader = new Utf8JsonReader(stream.ToArray()); var result = deserialize(ref reader); Assert.IsType <OrderCreatedEvent>(result.Event); stream.Position = 0; serialize(cancellation, new Utf8JsonWriter(stream)); reader = new Utf8JsonReader(stream.ToArray()); result = deserialize(ref reader); Assert.IsType <OrderCancelledEvent>(result.Event); } }