private void CheckNoExceptionWhenSpecifiedFieldIsNull(StageDischargeReadingRecord stageDischargeReadingRecord, string propertyName)
        {
            SetValueToNull(ref stageDischargeReadingRecord, propertyName);
            Action validationAction = () => stageDischargeReadingRecord.Validate();

            validationAction.ShouldNotThrow();
        }
        private void CheckExpectedExceptionForProperty <E>(StageDischargeReadingRecord stageDischargeReadingRecord, string propertyName) where E : Exception
        {
            Action validationAction = () => stageDischargeReadingRecord.Validate();

            validationAction
            .ShouldThrow <E>()
            .And.Message.Should().Contain(propertyName);
        }
        public void StageDischargeRecord_SelfValidate_Timestamps()
        {
            StageDischargeReadingRecord stageDischargeReadingRecord = StageDischargeCsvFileBuilder.CreateFullRecord(_fixture);
            Action validationAction = () => stageDischargeReadingRecord.Validate();

            stageDischargeReadingRecord.MeasurementStartDateTime = DateTimeOffset.Now;
            stageDischargeReadingRecord.MeasurementEndDateTime   = stageDischargeReadingRecord.MeasurementStartDateTime;
            validationAction.ShouldNotThrow();

            stageDischargeReadingRecord.MeasurementEndDateTime = DateTimeOffset.Now.AddDays(1);
            validationAction.ShouldNotThrow();

            stageDischargeReadingRecord.MeasurementStartDateTime = DateTimeOffset.Now.AddDays(200);
            validationAction.ShouldThrow <ArgumentException>().And.Message.Should().Contain("MeasurementStartDateTime");
        }