コード例 #1
0
        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());
        }
コード例 #2
0
        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);
                }
            }
        }