Example #1
0
        private JsonApiActionFilter GetActionFilterForTestModel()
        {
            var config      = TestModelConfigurationBuilder.BuilderForEverything.Build();
            var transformer = new JsonApiTransformerBuilder().With(config).Build();

            return(new JsonApiActionFilter(transformer, config, JsonSerializerBuilder.Build()));
        }
Example #2
0
        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);
        }
Example #3
0
        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);
            }
        }