public void EncodeBinaryModeEventData_TextType_NotStringOrBytes()
        {
            var cloudEvent = new CloudEvent().PopulateRequiredAttributes();

            cloudEvent.Data            = new object();
            cloudEvent.DataContentType = "text/anything";
            var formatter = new JsonEventFormatter();

            Assert.Throws <ArgumentException>(() => formatter.EncodeBinaryModeEventData(cloudEvent));
        }
        public void EncodeBinaryModeEventData_ArbitraryType_NotBytes()
        {
            var cloudEvent = new CloudEvent().PopulateRequiredAttributes();

            cloudEvent.Data            = new object();
            cloudEvent.DataContentType = "not_text/or_json";
            var formatter = new JsonEventFormatter();

            Assert.Throws <ArgumentException>(() => formatter.EncodeBinaryModeEventData(cloudEvent));
        }
        public void EncodeBinaryModeEventData_JsonDataType_CustomSerializer()
        {
            var cloudEvent = new CloudEvent().PopulateRequiredAttributes();

            cloudEvent.Data            = new { DateValue = new DateTime(2021, 2, 19, 12, 49, 34, DateTimeKind.Utc) };
            cloudEvent.DataContentType = "application/json";

            var serializer = new JsonSerializer
            {
                DateFormatString = "yyyy-MM-dd"
            };
            var     formatter = new JsonEventFormatter(serializer);
            var     bytes     = formatter.EncodeBinaryModeEventData(cloudEvent);
            JObject data      = ParseJson(bytes);
            var     asserter  = new JTokenAsserter
            {
                { "DateValue", JTokenType.String, "2021-02-19" }
            };

            asserter.AssertProperties(data, assertCount: true);
        }