예제 #1
0
        public void RenameRefactoring_RenameSub_ConflictingNames_Accept()
        {
            //Input
            const string inputCode =
                @"Private Sub Foo()
    Dim Goo As Integer
End Sub";
            var selection = new Selection(1, 14, 1, 14);

            //Expectation
            const string expectedCode =
                @"Private Sub Goo()
    Dim Goo As Integer
End Sub";

            IVBComponent component;
            var          vbe   = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection);
            var          state = MockParser.CreateAndParse(vbe.Object);

            var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection);

            var vbeWrapper = vbe.Object;
            var model      = new RenameModel(vbeWrapper, state, qualifiedSelection, null)
            {
                NewName = "Goo"
            };

            //SetupFactory
            var factory = SetupFactory(model);

            var messageBox = new Mock <IMessageBox>();

            messageBox.Setup(
                m =>
                m.Show(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MessageBoxButtons>(),
                       It.IsAny <MessageBoxIcon>())).Returns(DialogResult.Yes);

            var refactoring = new RenameRefactoring(vbeWrapper, factory.Object, messageBox.Object, state);

            refactoring.Refactor(qualifiedSelection);

            Assert.AreEqual(expectedCode, component.CodeModule.Content());
        }
예제 #2
0
        public object Rename(RenameModel model)
        {
            var systemPath = model.SourcePath.ToSystemPath(0);

            model.NewName = model.NewName.MakeSafe().Replace("\\", "");

            var newSystemPath = Path.GetDirectoryName(systemPath) + "\\" + model.NewName;

            if (!model.IsFolder)
            {
                newSystemPath += ".md";
            }

            Directory.Move(systemPath, newSystemPath);

            return(new
            {
                Status = "Renamed."
            });
        }
예제 #3
0
        public void RenameRefactoring_RenameFunction()
        {
            //Input
            const string inputCode =
                @"Private Function Foo() As Boolean
    Foo = True
End Function";
            var selection = new Selection(1, 21, 1, 21);

            //Expectation
            const string expectedCode =
                @"Private Function Goo() As Boolean
    Goo = True
End Function";

            IVBComponent component;
            var          vbe   = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection);
            var          state = MockParser.CreateAndParse(vbe.Object);

            var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection);

            var msgbox = new Mock <IMessageBox>();

            msgbox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButtons.YesNo, It.IsAny <MessageBoxIcon>()))
            .Returns(DialogResult.Yes);

            var vbeWrapper = vbe.Object;
            var model      = new RenameModel(vbeWrapper, state, qualifiedSelection, msgbox.Object)
            {
                NewName = "Goo"
            };

            //SetupFactory
            var factory = SetupFactory(model);

            var refactoring = new RenameRefactoring(vbeWrapper, factory.Object, msgbox.Object, state);

            refactoring.Refactor(qualifiedSelection);

            Assert.AreEqual(expectedCode, component.CodeModule.Content());
        }
예제 #4
0
        public void RenameRefactoring_RenameParameter_UpdatesReferences()
        {
            //Input
            const string inputCode =
                @"Private Sub Foo(ByVal arg1 As String)
    arg1 = ""test""
End Sub";
            var selection = new Selection(1, 25, 1, 25);

            //Expectation
            const string expectedCode =
                @"Private Sub Foo(ByVal arg2 As String)
    arg2 = ""test""
End Sub";

            IVBComponent component;
            var          vbe   = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection);
            var          state = MockParser.CreateAndParse(vbe.Object);

            var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection);

            var msgbox = new Mock <IMessageBox>();

            msgbox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButtons.YesNo, It.IsAny <MessageBoxIcon>()))
            .Returns(DialogResult.Yes);

            var vbeWrapper = vbe.Object;
            var model      = new RenameModel(vbeWrapper, state, qualifiedSelection, msgbox.Object)
            {
                NewName = "arg2"
            };

            //SetupFactory
            var factory = SetupFactory(model);

            var refactoring = new RenameRefactoring(vbeWrapper, factory.Object, msgbox.Object, state);

            refactoring.Refactor(qualifiedSelection);

            Assert.AreEqual(expectedCode, component.CodeModule.Content());
        }
예제 #5
0
        public async Task Rename()
        {
            var tree = await Facade.GetTreeAsync();

            var child = tree.Children.First();

            using var client = Fixture.Server.CreateClient();

            var model = new RenameModel
            {
                Id      = child.Id,
                Type    = child.Type,
                NewName = "new name"
            };

            await client.PutAsJsonAsync("component/rename", model)
            .Status(HttpStatusCode.OK);

            child = tree.Children.First(x => x.Id == child.Id);

            Assert.Equal("new name", child.Name);
        }
예제 #6
0
        public void RenameRefactoring_RenameCodeModule()
        {
            const string newName = "RenameModule";

            //Input
            const string inputCode =
                @"Private Sub Foo(ByVal a As Integer, ByVal b As String)
End Sub";

            var selection = new Selection(3, 27, 3, 27);

            IVBComponent component;
            var          vbe   = MockVbeBuilder.BuildFromSingleModule(inputCode, "Class1", ComponentType.ClassModule, out component, selection);
            var          state = MockParser.CreateAndParse(vbe.Object);

            var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection);

            var msgbox = new Mock <IMessageBox>();

            msgbox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButtons.YesNo, It.IsAny <MessageBoxIcon>()))
            .Returns(DialogResult.Yes);

            var vbeWrapper = vbe.Object;
            var model      = new RenameModel(vbeWrapper, state, qualifiedSelection, msgbox.Object)
            {
                NewName = newName
            };

            model.Target = model.Declarations.FirstOrDefault(i => i.DeclarationType == DeclarationType.ClassModule && i.IdentifierName == "Class1");

            //SetupFactory
            var factory = SetupFactory(model);

            var refactoring = new RenameRefactoring(vbeWrapper, factory.Object, msgbox.Object, state);

            refactoring.Refactor(model.Target);

            Assert.AreSame(newName, component.CodeModule.Name);
        }
예제 #7
0
        public void CanMutateMock_Direct_Dialog()
        {
            var vbe    = MockVbeBuilder.BuildFromSingleStandardModule(string.Empty, out var component);
            var parser = MockParser.Create(vbe.Object);

            using (var state = parser.State)
            {
                var actual = new RenameModel(state.DeclarationFinder,
                                             new QualifiedSelection(new QualifiedModuleName(component), new Selection(2, 2)));
                var container = RefactoringContainerInstaller.GetContainer();
                var factory   = container.Resolve <IRefactoringPresenterFactory>();

                var model = new RenameModel(state.DeclarationFinder,
                                            new QualifiedSelection(new QualifiedModuleName(component), new Selection(1, 1)));
                var presenter = (RenamePresenter)factory.Create <IRenamePresenter, RenameModel>(model);

                var mock = Mock.Get(presenter.Dialog);
                mock.SetupGet(m => m.Model).Returns(actual);

                var expected = presenter.Dialog.Model;
                Assert.AreEqual(actual, expected);
            }
        }
예제 #8
0
        void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            RenameWorkerArgument workerArgs = (RenameWorkerArgument)e.Argument;

            RenameModel      model            = workerArgs.model;
            BackgroundWorker backgroundWorker = (BackgroundWorker)sender;

            backgroundWorker.ReportProgress(0);

            // create worker
            RenameWorker worker = new RenameWorker();

            worker.currentPicture = this.currentPicture;
            worker.rootDirectory  = this.currentDirectory;
            worker.SetFileList(workerArgs.filenames);
            worker.OneFileProcessed += delegate(object s, ProgressChangedEventArgs args) { backgroundWorker.ReportProgress(args.ProgressPercentage); };

            // start working
            worker.ProcessFiles(model);

            worker.ChangeDirectorynames = model.ChangeDirectorynames;
            e.Result = worker;
        }
예제 #9
0
        public void RenameRefactoring_RenameProject()
        {
            const string oldName = "TestProject1";
            const string newName = "Renamed";

            var builder = new MockVbeBuilder();
            var vbe     = builder.ProjectBuilder(oldName, ProjectProtection.Unprotected)
                          .AddComponent("Module1", ComponentType.StandardModule, string.Empty)
                          .MockVbeBuilder()
                          .Build();


            var state = MockParser.CreateAndParse(vbe.Object);

            var msgbox = new Mock <IMessageBox>();

            msgbox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButtons.YesNo, It.IsAny <MessageBoxIcon>()))
            .Returns(DialogResult.Yes);

            var vbeWrapper = vbe.Object;
            var model      = new RenameModel(vbeWrapper, state, default(QualifiedSelection), msgbox.Object)
            {
                NewName = newName
            };

            model.Target = model.Declarations.First(i => i.DeclarationType == DeclarationType.Project && !i.IsBuiltIn);

            //SetupFactory
            var factory = SetupFactory(model);

            var refactoring = new RenameRefactoring(vbeWrapper, factory.Object, msgbox.Object, state);

            refactoring.Refactor(model.Target);

            Assert.AreEqual(newName, vbe.Object.VBProjects[0].Name);
        }
예제 #10
0
        public void RenameRefactoring_InterfaceRenamed_RejectPrompt()
        {
            //Input
            const string inputCode1 =
                @"Implements IClass1

Private Sub IClass1_DoSomething(ByVal a As Integer, ByVal b As String)
End Sub";
            const string inputCode2 =
                @"Public Sub DoSomething(ByVal a As Integer, ByVal b As String)
End Sub";

            var selection = new Selection(3, 23, 3, 27);

            var builder = new MockVbeBuilder();
            var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected)
                          .AddComponent("Class1", ComponentType.ClassModule, inputCode1)
                          .AddComponent("IClass1", ComponentType.ClassModule, inputCode2)
                          .Build();
            var vbe = builder.AddProject(project).Build();

            var state = MockParser.CreateAndParse(vbe.Object);

            var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(project.Object.VBComponents[0]), selection);

            var messageBox = new Mock <IMessageBox>();

            messageBox.Setup(
                m => m.Show(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MessageBoxButtons>(), It.IsAny <MessageBoxIcon>()))
            .Returns(DialogResult.No);

            var vbeWrapper = vbe.Object;
            var model      = new RenameModel(vbeWrapper, state, qualifiedSelection, messageBox.Object);

            Assert.AreEqual(null, model.Target);
        }
예제 #11
0
        public void Rename_Click(object sender, EventArgs e)
        {
            // get the model
            RenameModel model = renameView.GetModel();

            if (model.ChangeDirectorynames == false && model.ChangeFilenames == false)
            {
                return; // nothing to do
            }
            List <string> files = this.GetAllFileList(this.processFilesInSubdirectories);

            if (files.Count == 0)
            {
                return; // nothing to do
            }
            // do gui / settings work
            renameView.SaveLastModel();
            Settings.Default.FilenameFormats.AddIfGrowing(model.FilenamePattern);
            Settings.Default.DirectorynameFormats.AddIfGrowing(model.DirectoryPattern);

            StopOtherWorker();

            backgroundWorker.RunWorkerAsync(new RenameWorkerArgument(files, model));
        }
예제 #12
0
        public override void SetModel(RenameModel m)
        {
            base.SetModel(m);

            this.bindingSource.DataSource = this.model;
        }
예제 #13
0
        private static Mock <IRefactoringPresenterFactory <IRenamePresenter> > SetupFactory(RenameModel model)
        {
            var presenter = new Mock <IRenamePresenter>();

            presenter.Setup(p => p.Show()).Returns(model);
            presenter.Setup(p => p.Show(It.IsAny <Declaration>())).Returns(model);

            var factory = new Mock <IRefactoringPresenterFactory <IRenamePresenter> >();

            factory.Setup(f => f.Create()).Returns(presenter.Object);
            return(factory);
        }
예제 #14
0
 public RenameWorkerArgument(List <string> filenames, RenameModel model)
 {
     this.filenames = filenames;
     this.model     = model;
 }
예제 #15
0
 public async Task RenameAsync(RenameModel renameModel) => await GridFSBucket.RenameAsync(renameModel.DocumentId.ToObjectId(), renameModel.NewFileName);
예제 #16
0
        public void RenameRefactoring_RenameFirstPropertyParameter_UpdatesAllRelatedParameters()
        {
            //Input
            const string inputCode =
                @"Property Get Foo(ByVal index As Integer) As Variant
    Dim d As Integer
    d = index
End Property

Property Let Foo(ByVal index As Integer, ByVal value As Variant)
    Dim d As Integer
    d = index
End Property

Property Set Foo(ByVal index As Integer, ByVal value As Variant)
    Dim d As Integer
    d = index
End Property";
            var selection = new Selection(1, 28, 1, 28);

            //Expectation
            const string expectedCode =
                @"Property Get Foo(ByVal renamed As Integer) As Variant
    Dim d As Integer
    d = renamed
End Property

Property Let Foo(ByVal renamed As Integer, ByVal value As Variant)
    Dim d As Integer
    d = renamed
End Property

Property Set Foo(ByVal renamed As Integer, ByVal value As Variant)
    Dim d As Integer
    d = renamed
End Property";

            IVBComponent component;
            var          vbe   = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection);
            var          state = MockParser.CreateAndParse(vbe.Object);

            var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection);

            var msgbox = new Mock <IMessageBox>();

            msgbox.Setup(m => m.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButtons.YesNo, It.IsAny <MessageBoxIcon>()))
            .Returns(DialogResult.Yes);

            var vbeWrapper = vbe.Object;
            var model      = new RenameModel(vbeWrapper, state, qualifiedSelection, msgbox.Object)
            {
                NewName = "renamed"
            };

            //SetupFactory
            var factory = SetupFactory(model);

            var refactoring = new RenameRefactoring(vbeWrapper, factory.Object, msgbox.Object, state);

            refactoring.Refactor(qualifiedSelection);

            Assert.AreEqual(expectedCode, component.CodeModule.Content());
        }
예제 #17
0
        public ActionResult Rename(RenameModel model)
        {
            model.TargetUrl = "/" + model.TargetUrl;

            bool processParent = model.TargetUrl != Constants.CdnUrl;

            model.CurrentEntry = new EntryModel(model.TargetUrl, true, processParent);

            if (model.TargetUrl.Contains("..") ||
                !model.TargetUrl.StartsWith(Constants.CdnUrl))
            {
                return(NotFoundView());
            }

            if (!ModelState.IsValid)
            {
                ModelState.AddModelError("", ValidationResources.InvalidState);

                return(View(model));
            }

            if (string.IsNullOrEmpty(model.NewName))
            {
                return(RedirectToAction("List",
                                        new
                {
                    currentUrl =
                        FileManagerModel.EnsureIsDirectoryOrExtractParent(model.TargetUrl)
                }));
            }


            if (Path.GetExtension(model.NewName) == "")
            {
                model.NewName += Path.GetExtension(model.OldName);
            }

            string targetPath = Server.MapPath(model.TargetUrl);

            DirectoryInfo parent = Directory.GetParent(targetPath);

            string newPath = Path.Combine(parent.FullName, model.NewName);

            if (string.Compare(targetPath, newPath, StringComparison.OrdinalIgnoreCase) == 0)
            {
                return(RedirectToAction("List", new { currentUrl = model.TargetUrl }));
            }

            if ((!Directory.Exists(targetPath) && !System.IO.File.Exists(targetPath)))
            {
                return(NotFoundView());
            }

            bool isSaved;

            try
            {
                if (Directory.Exists(targetPath))
                {
                    Directory.Move(targetPath, newPath);
                }
                else
                {
                    System.IO.File.Move(targetPath, newPath);
                }

                isSaved = true;
            }
            catch
            {
                isSaved = false;
            }

            if (isSaved)
            {
                Logger.SaveLog(new RenameDirectoryOrFileProvider(model));
            }
            else
            {
                TempData["Error"] = ValidationResources.RenameFailure;
            }

            return(RedirectToAction("List", new { currentUrl = _webHelper.MapUrl(parent.FullName) }));
        }
        public static void InitUserSettings()
        {
            if (Settings.Default.Headlines == null)
            {
                Settings.Default.Headlines = new TagList();
            }

            if (Settings.Default.Captions == null)
            {
                Settings.Default.Captions = new TagList();
            }

            if (Settings.Default.Contacts == null)
            {
                Settings.Default.Contacts = new TagList(true);
            }

            if (Settings.Default.Copyrights == null)
            {
                Settings.Default.Copyrights = new TagList(true);
            }

            if (Settings.Default.Authors == null)
            {
                Settings.Default.Authors = new TagList(true);
            }

            if (Settings.Default.Writers == null)
            {
                Settings.Default.Writers = new TagList(true);
            }

            if (Settings.Default.Objectnames == null)
            {
                Settings.Default.Objectnames = new TagList();
            }

            if (Settings.Default.Locations == null)
            {
                Settings.Default.Locations = new LocationList(true);
            }

            if (Settings.Default.FilenameFormats == null)
            {
                Settings.Default.FilenameFormats = new TagList(true);
                Settings.Default.FilenameFormats.Add(DEFAULT_FILE_FORMAT);
            }

            if (Settings.Default.DirectorynameFormats == null)
            {
                Settings.Default.DirectorynameFormats = new TagList(true);
                Settings.Default.DirectorynameFormats.Add(DEFAULT_DIRECTORY_FORMAT);
            }

            if (Settings.Default.GroupedKeywords == null)
            {
                if (Settings.Default.Keywords == null)
                {
                    Settings.Default.GroupedKeywords = new GroupedTagList(true);
                }
                else
                {
                    Settings.Default.GroupedKeywords = new GroupedTagList(Settings.Default.Keywords);
                    Settings.Default.Keywords        = null;
                }
            }

            if (Settings.Default.PresetModels == null)
            {
                Settings.Default.PresetModels = new PresetStore();

                CopyMoveModel cpm = new CopyMoveModel();
                cpm.FilenameFormat      = DEFAULT_FILE_FORMAT;
                cpm.DirectorynameFormat = DEFAULT_DIRECTORY_FORMAT;
                Settings.Default.PresetModels.SaveLastModel(cpm);

                RenameModel rm = new RenameModel();
                rm.FilenamePattern      = DEFAULT_FILE_FORMAT;
                rm.DirectoryPattern     = DEFAULT_DIRECTORY_FORMAT;
                rm.ChangeDirectorynames = false;
                rm.ChangeFilenames      = false;
                Settings.Default.PresetModels.SaveLastModel(rm);
            }

            if (Settings.Default.MacroRecentFiles == null)
            {
                Settings.Default.MacroRecentFiles = new RecentList();
            }
            else
            {
                // remove files that does not exist
                Settings.Default.MacroRecentFiles.RemoveAll(delegate(string s) { return(!File.Exists(s)); });
            }
        }
예제 #19
0
 public async Task RenameAsync([FromBody] RenameModel model)
 {
     await _facade.RenameAsync(model.Type, model.Id, model.NewName);
 }