public IEnumerable<ResultMessageViewModel> ExecuteQualityAssuranceChain(QualityCheckingExecuteDataViewModel data) { var resultMessages = new List<ResultMessageViewModel>(); if (data != null) { var qcChainConfiguration = MapTOChainConfiguration(data); var versioningHelper = new DataVersioningHelper(_wqDefaultValueProvider); var factory = new DataQualityCheckingToolFactory(versioningHelper, _relatedActionTypeRepository); var qualiltyChecker = new WaterQualityDataQualityChecker(qcChainConfiguration, factory, _wqDataRepository); var qcResults = qualiltyChecker.Check(); var resultViewModels = Mapper.Map<IEnumerable<IQualityCheckingResult>, IEnumerable<ResultMessageViewModel>>(qcResults); resultMessages.AddRange(resultViewModels); } else { resultMessages.Add(new ResultMessageViewModel(ResultMessageViewModel.RESULT_LEVEL_FATAL, "QC request data is null. No QC process could be applied.")); } return resultMessages; }
public static void Main(string[] args) { var dbContext = new ODM2Entities(); var relationActionTypeRepository = new Repository<CV_RelationshipType>(dbContext); var wqDataRepository = new WQDataRepository(dbContext); var staticWQDefaultValueProvider = new StaticWQDefaultValueProvider(); staticWQDefaultValueProvider.Init(); Console.WriteLine("Start Quality Checking Process..."); var qcChainConfiguration = ConfigureQualityCheckingChain(true, wqDataRepository, "Test", false, "Water"); var versioningHelper = new DataVersioningHelper(staticWQDefaultValueProvider); var factory = new DataQualityCheckingToolFactory(versioningHelper, relationActionTypeRepository); var qualiltyChecker = new WaterQualityDataQualityChecker(qcChainConfiguration, factory, wqDataRepository); var qcResults = qualiltyChecker.Check(); foreach(var result in qcResults) { Console.WriteLine(string.Format("{0}: {1}", result.Level, result.Message)); } Console.WriteLine("Press any keys to continue..."); Console.ReadLine(); }
public void CompleteDataChecking() { var mockCriteria = new Mock<IDataFetchCriteria>(); mockCriteria.Setup(x => x.CriteriaDescription).Returns("test data fetch criteria"); mockCriteria.Setup(x => x.FetchData()).Returns(() => new List<Hatfield.EnviroData.Core.Action> { new Hatfield.EnviroData.Core.Action() }); var mockRule = new Mock<IDataQualityCheckingRule>(); var testChainConfiguration = new DataQualityCheckingChainConfiguration(); testChainConfiguration.DataFetchCriteria = mockCriteria.Object; testChainConfiguration.NeedToCorrectData = true; testChainConfiguration.ToolsConfiguration = new List<DataQualityCheckingToolConfiguration> { new DataQualityCheckingToolConfiguration{ DataQualityCheckingToolType = typeof(int), DataQualityCheckingRule = mockRule.Object } }; var mockTool = new Mock<IDataQualityCheckingTool>(); mockTool.Setup(x => x.Check(It.IsAny<object>(), It.IsAny<IDataQualityCheckingRule>())).Returns( () => new QualityCheckingResult("test qc result.", true, QualityCheckingResultLevel.Info) ); mockTool.Setup(x => x.Correct(It.IsAny<object>(), It.IsAny<IDataQualityCheckingRule>())).Returns( () => new QualityCheckingResult("Data correction updated.", false, QualityCheckingResultLevel.Info) ); var factory = new Mock<IDataQualityCheckingToolFactory>(); factory.Setup(x => x.GenerateDataQualityCheckingTool(It.IsAny<DataQualityCheckingToolConfiguration>())).Returns(() => mockTool.Object); var repository = new Mock<IWQDataRepository>(); var dataChecker = new WaterQualityDataQualityChecker(testChainConfiguration, factory.Object, repository.Object); var qcResults = dataChecker.Check(); Assert.NotNull(qcResults); Assert.AreEqual(3, qcResults.Count()); Assert.AreEqual("Fetch data for quality chekcing by test data fetch criteria", qcResults.ElementAt(0).Message); Assert.AreEqual(QualityCheckingResultLevel.Info, qcResults.ElementAt(0).Level); Assert.False(qcResults.ElementAt(0).NeedCorrection); Assert.AreEqual("test qc result.", qcResults.ElementAt(1).Message); Assert.AreEqual(QualityCheckingResultLevel.Info, qcResults.ElementAt(1).Level); Assert.True(qcResults.ElementAt(1).NeedCorrection); Assert.AreEqual("Data correction updated.", qcResults.ElementAt(2).Message); Assert.AreEqual(QualityCheckingResultLevel.Info, qcResults.ElementAt(2).Level); Assert.False(qcResults.ElementAt(2).NeedCorrection); }
public void NoDataTest() { var noDataCriteria = new Mock<IDataFetchCriteria>(); noDataCriteria.Setup(x => x.CriteriaDescription).Returns("test data fetch criteria"); noDataCriteria.Setup(x => x.FetchData()).Returns(() => null); var testChainConfiguration = new DataQualityCheckingChainConfiguration(); testChainConfiguration.DataFetchCriteria = noDataCriteria.Object; var factory = new Mock<IDataQualityCheckingToolFactory>(); var repository = new Mock<IWQDataRepository>(); var dataChecker = new WaterQualityDataQualityChecker(testChainConfiguration, factory.Object, repository.Object); var noDataQcResults = dataChecker.Check(); Assert.NotNull(noDataQcResults); Assert.AreEqual(2, noDataQcResults.Count()); }