public void MatchingSourceNamespace_CreatesTargetClassWithSameNamespace()
            {
                var sourceProject = new SourceWebProject
                {
                    WebPageList = new List <SourceWebPage>()
                    {
                        new SourceWebPage
                        {
                            ClassFullName = "TestTargetNamespace.Test1.TestItem",
                            PageUrl       = "TestWebPage.aspx"
                        }
                    },
                    RootNamespace = "TestSourceNamespace"
                };

                var targetProject = new TargetProject
                {
                    RootNamespace = "TestTargetNamespace.Test1"
                };
                var targetModelGenerator = new TargetModelGenerator();
                var projectResult        = targetModelGenerator.CompareProject(targetProject, sourceProject);

                Assert.AreEqual(1, projectResult.ClassesToAdd.Count);
                Assert.AreEqual(0, projectResult.ClassesToUpdate.Count);
                TestValidators.ValidateTargetClassComparisonResult(classResult: projectResult.ClassesToAdd[0],
                                                                   designerFileRelativePath: @"Client\Pages\TestTargetNamespace\Test1\TestItemPageClient.designer.cs",
                                                                   userFileRelativePath: @"Client\Pages\TestTargetNamespace\Test1\TestItemPageClient.cs",
                                                                   sourceClassFullName: @"TestTargetNamespace.Test1.TestItem",
                                                                   targetClassFullName: @"TestTargetNamespace.Test1.Client.Pages.TestTargetNamespace.Test1.TestItemPageClient",
                                                                   targetObjectType: EnumSourceObjectType.WebPage,
                                                                   expectedUrl: "TestWebPage.aspx");
            }
            public void DifferentSourceNamespace_CreatesTargetClassWithDifferentNamespace()
            {
                var sourceProject = new SourceWebProject
                {
                    WebPageList = new List <SourceWebPage>()
                    {
                        new SourceWebPage
                        {
                            ClassFullName = "SomeOtherNamespace.Test1.TestItem",
                            PageUrl       = "TestWebPage.aspx"
                        }
                    },
                    RootNamespace = "TestSourceNamespace"
                };

                var targetProject = new TargetProject
                {
                    RootNamespace = "TestTargetNamespace"
                };
                var targetModelGenerator = new TargetModelGenerator();
                var projectResult        = targetModelGenerator.CompareProject(targetProject, sourceProject);

                Assert.AreEqual(1, projectResult.ClassesToAdd.Count);
                Assert.AreEqual(0, projectResult.ClassesToUpdate.Count);
                TestValidators.ValidateTargetClassComparisonResult(projectResult.ClassesToAdd[0],
                                                                   @"Client\Pages\SomeOtherNamespace\Test1\TestItemPageClient.designer.cs",
                                                                   @"Client\Pages\SomeOtherNamespace\Test1\TestItemPageClient.cs",
                                                                   @"SomeOtherNamespace.Test1.TestItem",
                                                                   @"TestTargetNamespace.Client.Pages.SomeOtherNamespace.Test1.TestItemPageClient",
                                                                   EnumSourceObjectType.WebPage,
                                                                   "TestWebPage.aspx");
            }
            public void NewTargetClassWithLabel_ShouldCreateNewTargetClassWithLabel()
            {
                SourceWebPage sourceWebPage = new SourceWebPage
                {
                    ClassFullName = "Test1.TestSourceClass",
                    PageUrl       = "TestSourceClass.aspx",
                    Controls      = new List <SourceWebControl>()
                    {
                        new SourceWebControl
                        {
                            ClassFullName = "System.Web.UI.WebControls.Label",
                            FieldName     = "TestTargetField"
                        }
                    }
                };
                TargetClass targetClass          = new TargetClass();
                var         targetModelGenerator = new TargetModelGenerator();

                targetClass = targetModelGenerator.UpdateClass(sourceWebPage, targetClass);
                Assert.AreEqual(1, targetClass.TargetFieldList.Count);
                TestValidators.ValidateTargetField(targetClass.TargetFieldList[0],
                                                   isDirty: true,
                                                   sourceClassFullName: "System.Web.UI.WebControls.Label",
                                                   sourceFieldName: "TestTargetField",
                                                   targetControlType: EnumTargetControlType.Label,
                                                   targetFieldName: "TestTargetField");
            }
            public void ExistingClassExistingIrrelevantFields()
            {
                SourceWebPage sourceWebPage = new SourceWebPage
                {
                    ClassFullName = "Test1.TestSourceClass",
                    PageUrl       = "TestSourceClass.aspx",
                    Controls      = new List <SourceWebControl>()
                    {
                        new SourceWebControl
                        {
                            ClassFullName = "System.Web.UI.WebControls.HyperLink",
                            FieldName     = "NewTargetField"
                        }
                    }
                };
                var targetClass = new TargetClass()
                {
                    TargetFieldList = new List <TargetField>()
                    {
                        new TargetField
                        {
                            IsDirty             = false,
                            SourceClassFullName = "TestSourcenamespace.TestSourceClass",
                            SourceFieldName     = "ExistingTargetField",
                            TargetControlType   = EnumTargetControlType.Unknown,
                            TargetFieldName     = "ExistingTargetFieldName"
                        }
                    }
                };
                var targetModelGenerator = new TargetModelGenerator();

                targetClass = targetModelGenerator.UpdateClass(sourceWebPage, targetClass);
                Assert.AreEqual(2, targetClass.TargetFieldList.Count);

                TestValidators.ValidateTargetField(targetClass.TargetFieldList[0],
                                                   isDirty: false,
                                                   sourceClassFullName: "TestSourcenamespace.TestSourceClass",
                                                   sourceFieldName: "ExistingTargetField",
                                                   targetControlType: EnumTargetControlType.Unknown,
                                                   targetFieldName: "ExistingTargetFieldName");

                TestValidators.ValidateTargetField(targetClass.TargetFieldList[1],
                                                   isDirty: true,
                                                   sourceClassFullName: "System.Web.UI.WebControls.HyperLink",
                                                   sourceFieldName: "NewTargetField",
                                                   targetControlType: EnumTargetControlType.Link,
                                                   targetFieldName: "NewTargetField");
            }
            public void ExistingTargetClassWithDifferentName_ShouldUpdateExistingTargetClass()
            {
                var sourceProject = new SourceWebProject
                {
                    WebPageList = new List <SourceWebPage>()
                    {
                        new SourceWebPage
                        {
                            ClassFullName = "TestSourceNamespace.Test1.TestItem",
                            PageUrl       = "TestWebPage.aspx"
                        }
                    },
                    RootNamespace = "TestSourceNamespace"
                };

                var targetProject = new TargetProject
                {
                    RootNamespace   = "TestTargetNamespace",
                    TargetClassList = new List <TargetClass>()
                    {
                        new TargetClass
                        {
                            SourceClassFullName      = "TestSourceNamespace.Test1.TestItem",
                            DesignerFileRelativePath = @"SomeOtherLocation\SomeOtherClassName.designer.cs",
                            UserFileRelativePath     = @"SomeOtherLocation\SomeOtherClassName.cs",
                            TargetClassFullName      = "SomeOtherLocation.SomeOtherClassName",
                            SourceObjectType         = EnumSourceObjectType.WebPage,
                            ExpectedUrl = "TestWebPage.aspx"
                        }
                    }
                };
                var targetModelGenerator = new TargetModelGenerator();
                var projectResult        = targetModelGenerator.CompareProject(targetProject, sourceProject);

                Assert.AreEqual(0, projectResult.ClassesToAdd.Count);
                Assert.AreEqual(1, projectResult.ClassesToUpdate.Count);
                TestValidators.ValidateTargetClassComparisonResult(projectResult.ClassesToUpdate[0],
                                                                   @"SomeOtherLocation\SomeOtherClassName.designer.cs",
                                                                   @"SomeOtherLocation\SomeOtherClassName.cs",
                                                                   "TestSourceNamespace.Test1.TestItem",
                                                                   "SomeOtherLocation.SomeOtherClassName",
                                                                   EnumSourceObjectType.WebPage,
                                                                   "TestWebPage.aspx");
            }
Ejemplo n.º 6
0
        static void Main()
        {
            //string inputProject = @"C:\Users\admin\Dropbox\Code\screwturn-screwturn-wiki-4-cf9155b27d4c\WebApplication\WebApplication.csproj";
            string inputProjectPath = @"..\..\..\..\BugNet\src\BugNET_WAP\BugNET_WAP.csproj";
            //string outputProjectPath = @"C:\Users\admin\Dropbox\Code\MMDB.UITest\ScrewturnWikiProxySample\ScrewturnWikiProxySample.csproj";
            string outputProjectPath = @"..\..\..\BugNetProxySample\BugNetProxySample.csproj";
            var    sourceProjectFile = new ProjectParser().ParseFile(inputProjectPath);
            var    sourceModel       = new SourceWebModelParser().LoadFromProjectFile(sourceProjectFile, inputProjectPath);

            var targetProjectFile = new ProjectParser().ParseFile(outputProjectPath);
            var targetModel       = new TargetModelParser().LoadFromProjectFile(targetProjectFile, outputProjectPath);

            var comparison = new TargetModelGenerator().CompareProject(targetModel, sourceModel);

            new TargetModelWriter().ApplyChanges(comparison, outputProjectPath);

            //ProxyGenerator.UpdateProxyProject(outputProjectPath, sourceProject);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
            public void ExistingClassChangedTargetFieldType_ShouldUpdateTargetFieldType()
            {
                SourceWebPage sourceWebPage = new SourceWebPage
                {
                    ClassFullName = "Test1.TestSourceClass",
                    PageUrl       = "TestSourceClass.aspx",
                    Controls      = new List <SourceWebControl>()
                    {
                        new SourceWebControl
                        {
                            ClassFullName = typeof(System.Web.UI.WebControls.HyperLink).FullName,
                            FieldName     = "TestTargetField"
                        }
                    }
                };
                var targetClass = new TargetClass()
                {
                    TargetFieldList = new List <TargetField>()
                    {
                        new TargetField
                        {
                            IsDirty             = false,
                            SourceClassFullName = typeof(System.Web.UI.WebControls.HyperLink).FullName,
                            SourceFieldName     = "TestTargetField",
                            TargetControlType   = EnumTargetControlType.TextBox,
                            TargetFieldName     = "TestTargetField"
                        }
                    }
                };
                var targetModelGenerator = new TargetModelGenerator();

                targetClass = targetModelGenerator.UpdateClass(sourceWebPage, targetClass);
                Assert.AreEqual(1, targetClass.TargetFieldList.Count);
                TestValidators.ValidateTargetField(targetClass.TargetFieldList[0],
                                                   isDirty: true,
                                                   sourceClassFullName: typeof(System.Web.UI.WebControls.HyperLink).FullName,
                                                   sourceFieldName: "TestTargetField",
                                                   targetControlType: EnumTargetControlType.Link,
                                                   targetFieldName: "TestTargetField");
            }
            public void ExistingTargetClassWithExpectedNameAndLocation_ShouldUpdateExistingClass()
            {
                var sourceProject = new SourceWebProject
                {
                    WebPageList = new List <SourceWebPage>()
                    {
                        new SourceWebPage
                        {
                            ClassFullName = "TestSourceNamespace.Test1.TestItem",
                            PageUrl       = "TestWebPage.aspx"
                        }
                    },
                    RootNamespace = "TestSourceNamespace"
                };

                var targetProject = new TargetProject
                {
                    RootNamespace   = "TestTargetNamespace",
                    TargetClassList = new List <TargetClass>()
                    {
                        new TargetClass
                        {
                            SourceClassFullName      = "TestSourceNamespace.Test1.TestItem",
                            DesignerFileRelativePath = @"Client\Pages\Test1\TestItemPageClient.designer.cs",
                            UserFileRelativePath     = @"Client\Pages\Test1\TestItemPageClient.cs",
                            TargetClassFullName      = "TestTargetNamespace.Client.Pages.Test1.TestItemPageClient",
                            SourceObjectType         = EnumSourceObjectType.WebPage,
                            ExpectedUrl = "TestWebPage.aspx"
                        }
                    }
                };
                var targetModelGenerator = new TargetModelGenerator();
                var projectResult        = targetModelGenerator.CompareProject(targetProject, sourceProject);

                Assert.AreEqual(0, projectResult.ClassesToAdd.Count);
                Assert.AreEqual(1, projectResult.ClassesToUpdate.Count);
            }