public void ValidateClashExceptionSameStructureRulesViolation(
            ClashException clashException,
            CustomValidationResult expectedResult
            )
        {
            _ = _fakeClashRepository
                .Setup(r => r.FindByExternal(It.IsAny <string>()))
                .Returns <string>(externalIdentifier =>
                                  ClashExceptionValidationTestData.BunchOfClashes.Where(c => c.Externalref == externalIdentifier)
                                  );

            var result =
                _clashExceptionValidations.ValidateClashExceptionForSameStructureRulesViolation(clashException);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(result.Successful, expectedResult.Successful);
                Assert.AreEqual(result.Message, expectedResult.Message);
            });
        }
Exemplo n.º 2
0
        private void ValidateForSave(List <ClashException> incomingClashExceptions)
        {
            foreach (var clashException in incomingClashExceptions)
            {
                var structureRulesViolationValidationResult = _clashExceptionValidations.ValidateClashExceptionForSameStructureRulesViolation(clashException);
                if (!structureRulesViolationValidationResult.Successful)
                {
                    throw new DataSyncException(DataSyncErrorCode.ClashException_StructureRulesViolation, structureRulesViolationValidationResult.Message);
                }
            }

            const int offsetHours             = 6;
            var       existingClashExceptions = _clashExceptionRepository.GetActive().ToList();

            var timeRangesValidationResult = _clashExceptionValidations.ValidateTimeRanges(incomingClashExceptions, offsetHours, existingClashExceptions);

            if (!timeRangesValidationResult.Successful)
            {
                throw new DataSyncException(DataSyncErrorCode.ClashException_TimeRangesOverlap, timeRangesValidationResult.Message);
            }
        }