public void Given_A_BillingCompanyAddedOpenClosedWindowEvent_It_AllValuesAreSerializable()
        {
            //arrange

            //act
            var billingCompanyAddedOpenClosedWindow = new BillingCompanyAddedOpenClosedWindow(startDate, endDate, isOpen, concurrentScrapingLimit, billingCompanyId);

            //assert

            // all properties can be written and read
            PropertyInfo[] properties = billingCompanyAddedOpenClosedWindow.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
            foreach (var propertyInfo in properties)
            {
                Assert.IsTrue(propertyInfo.CanRead);
                Assert.IsTrue(propertyInfo.CanWrite);
            }
        }
        public void Given_A_SerializedBillingCompanyAddedOpenClosedWindowEvent_It_AllValuesAreDeSerializedCorrectly()
        {
            //arrange
            var billingCompanyAddedOpenClosedWindow = new BillingCompanyAddedOpenClosedWindow(startDate, endDate, isOpen, concurrentScrapingLimit, billingCompanyId);
            var serializedEvent = eventSerializer.SerializeMessage(billingCompanyAddedOpenClosedWindow);

            //act
            var deserializedMessage = eventDeSerializer.DeSerializeMessage(serializedEvent);

            //assert
            PropertyInfo[] properties = billingCompanyAddedOpenClosedWindow.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
            foreach (var propertyInfo in properties)
            {
                var inValue = GetPropValue(billingCompanyAddedOpenClosedWindow, propertyInfo.Name);
                var outValue = GetPropValue(deserializedMessage, propertyInfo.Name);

                Assert.IsTrue(inValue.Equals(outValue),propertyInfo.Name + " does not match");
            }
        }