public void StageDischargeRecord_SelfValidateWithAllRequiredValues_DoesNotThrow()
        {
            var    stageDischargeRecord = StageDischargeCsvFileBuilder.CreateFullRecord(_fixture);
            Action noThrowAction        = () => stageDischargeRecord.Validate();

            noThrowAction.ShouldNotThrow();
        }
        public void StageDischargeRecord_SelfValidate_WithStageAtStartButNoStageUnits_DetectsNull()
        {
            var stageDischargeRecord = StageDischargeCsvFileBuilder.CreateFullRecord(_fixture);

            stageDischargeRecord.StageUnits = null;
            stageDischargeRecord.StageAtEnd = null;

            CheckExpectedExceptionForProperty <ArgumentException>(stageDischargeRecord, nameof(stageDischargeRecord.StageAtStart));
        }
        private Stream CreateMinimalValidFileStream()
        {
            StageDischargeReadingRecord stageDischargeReadingRecord = StageDischargeCsvFileBuilder.CreateFullRecord(_fixture);

            stageDischargeReadingRecord.ChannelWidth = null;
            stageDischargeReadingRecord.ChannelArea  = null;
            stageDischargeReadingRecord.Party        = null;
            stageDischargeReadingRecord.Comments     = null;
            return(CreateMemoryStream(stageDischargeReadingRecord));
        }
        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");
        }
        public void StageDischargeRecord_SelfValidateWithNullableProperties_DoesNotThrow(string propertyName)
        {
            var stageDischargeRecord = StageDischargeCsvFileBuilder.CreateFullRecord(_fixture);

            CheckNoExceptionWhenSpecifiedFieldIsNull(stageDischargeRecord, propertyName);
        }
        public void StageDischargeRecord_SelfValidateWithNullPropertyValue_DetectsNull(string propertyName)
        {
            var stageDischargeRecord = StageDischargeCsvFileBuilder.CreateFullRecord(_fixture);

            CheckExpectedExceptionAndMessageWhenSpecifiedFieldIsNull <ArgumentNullException>(stageDischargeRecord, propertyName);
        }
        private Stream CreateValidCsvFileStream()
        {
            StageDischargeReadingRecord originalRecord = StageDischargeCsvFileBuilder.CreateFullRecord(_fixture);

            return(CreateMemoryStream(originalRecord));
        }