public void GenerateModel_writes_errors_returned_from_ProcessModel() { var modelGenCache = new ModelGenErrorCache(); var mockPackage = new Mock <IEdmPackage>(); mockPackage.Setup(p => p.ModelGenErrorCache).Returns(modelGenCache); PackageManager.Package = mockPackage.Object; var mockHostContext = new Mock <ModelBuilderEngineHostContext>(); var mockModelBuilderSettings = CreateMockModelBuilderSettings(); var mockModelBuilderEngine = new Mock <ModelBuilderEngine> { CallBase = true }; var error = new EdmSchemaError("testError", 42, EdmSchemaErrorSeverity.Warning); mockModelBuilderEngine .Setup(m => m.GenerateModels(It.IsAny <string>(), It.IsAny <ModelBuilderSettings>(), It.IsAny <List <EdmSchemaError> >())) .Returns(new DbModel(new DbProviderInfo("System.Data.SqlClient", "2008"), Mock.Of <DbProviderManifest>())); mockModelBuilderEngine .Protected() .Setup( "ProcessModel", ItExpr.IsAny <DbModel>(), ItExpr.IsAny <string>(), ItExpr.IsAny <ModelBuilderSettings>(), ItExpr.IsAny <ModelBuilderEngineHostContext>(), ItExpr.IsAny <List <EdmSchemaError> >()) .Callback( (DbModel model, string storeModelNamespace, ModelBuilderSettings settings, ModelBuilderEngineHostContext hostContext, List <EdmSchemaError> errors) => errors.Add(error)); mockModelBuilderEngine.Object.GenerateModel(mockModelBuilderSettings.Object, Mock.Of <IVsUtils>(), mockHostContext.Object); mockModelBuilderEngine .Verify(m => m.GenerateModels( It.IsAny <string>(), It.IsAny <ModelBuilderSettings>(), It.IsAny <List <EdmSchemaError> >()), Times.Once()); mockHostContext.Verify(h => h.LogMessage(It.IsAny <string>()), Times.Exactly(3)); mockHostContext .Verify(h => h.LogMessage(It.IsRegex(Resources.Engine_ModelGenErrors.Substring(1, 20))), Times.Once()); mockHostContext .Verify(h => h.LogMessage(It.IsRegex(Resources.Engine_ModelGenException)), Times.Never()); Assert.Same(error, modelGenCache.GetErrors(mockModelBuilderSettings.Object.ModelPath).Single()); }
private void AddErrors(ProjectItem projectItem) { var edmSchemaErrors = _errorCache.GetErrors(_contextFilePath); if (edmSchemaErrors != null && edmSchemaErrors.Any()) { using (var serviceProvider = new ServiceProvider((IOleServiceProvider)projectItem.ContainingProject.DTE)) { var hierarchy = _vsUtils.GetVsHierarchy(projectItem.ContainingProject, serviceProvider); var itemId = _vsUtils.GetProjectItemId(hierarchy, projectItem); _errorListHelper.AddErrorInfosToErrorList( edmSchemaErrors.Select( e => new ErrorInfo( e.Severity == EdmSchemaErrorSeverity.Error ? ErrorInfo.Severity.ERROR : ErrorInfo.Severity.WARNING, e.Message, _contextFilePath, e.ErrorCode, ErrorClass.Runtime_All)).ToList(), hierarchy, itemId); } } }