|
7 | 7 | using Moq;
|
8 | 8 | using Rubberduck.Navigation.CodeExplorer;
|
9 | 9 | using Rubberduck.Parsing.VBA;
|
| 10 | +using Rubberduck.Refactorings.Rename; |
10 | 11 | using Rubberduck.Settings;
|
11 | 12 | using Rubberduck.SmartIndenter;
|
12 | 13 | using Rubberduck.UI;
|
13 | 14 | using Rubberduck.UI.CodeExplorer.Commands;
|
| 15 | +using Rubberduck.UI.Refactorings; |
14 | 16 | using Rubberduck.UnitTesting;
|
15 | 17 | using Rubberduck.VBEditor.VBEHost;
|
16 | 18 | using Rubberduck.VBEditor.Extensions;
|
| 19 | +using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; |
17 | 20 | using RubberduckTests.Mocks;
|
18 | 21 |
|
19 | 22 | namespace RubberduckTests.CodeExplorer
|
@@ -182,6 +185,59 @@ Dim d As Boolean
|
182 | 185 | Assert.AreEqual(expectedCode, module.Lines());
|
183 | 186 | }
|
184 | 187 |
|
| 188 | + [TestMethod] |
| 189 | + public void RenameProcedure() |
| 190 | + { |
| 191 | + var inputCode = |
| 192 | +@"Sub Foo() |
| 193 | +End Sub |
| 194 | +
|
| 195 | +Sub Bar() |
| 196 | + Foo |
| 197 | +End Sub"; |
| 198 | + |
| 199 | + var expectedCode = |
| 200 | +@"Sub Fizz() |
| 201 | +End Sub |
| 202 | +
|
| 203 | +Sub Bar() |
| 204 | + Fizz |
| 205 | +End Sub"; |
| 206 | + |
| 207 | + var builder = new MockVbeBuilder(); |
| 208 | + VBComponent component; |
| 209 | + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); |
| 210 | + var mockHost = new Mock<IHostApplication>(); |
| 211 | + mockHost.SetupAllProperties(); |
| 212 | + var project = vbe.Object.VBProjects.Item(0); |
| 213 | + var module = project.VBComponents.Item(0).CodeModule; |
| 214 | + |
| 215 | + var configLoader = new Mock<ConfigurationLoader>(null, null); |
| 216 | + configLoader.Setup(c => c.LoadConfiguration()).Returns(GetDefaultUnitTestConfig()); |
| 217 | + |
| 218 | + var view = new Mock<IRenameView>(); |
| 219 | + view.Setup(r => r.ShowDialog()).Returns(DialogResult.OK); |
| 220 | + view.Setup(r => r.Target); |
| 221 | + view.SetupGet(r => r.NewName).Returns("Fizz"); |
| 222 | + |
| 223 | + var state = new RubberduckParserState(); |
| 224 | + var commands = new List<ICommand> |
| 225 | + { |
| 226 | + new CodeExplorer_RenameCommand(vbe.Object, state, new CodePaneWrapperFactory(), view.Object) |
| 227 | + }; |
| 228 | + |
| 229 | + var vm = new CodeExplorerViewModel(state, commands); |
| 230 | + |
| 231 | + var parser = MockParser.Create(vbe.Object, state); |
| 232 | + parser.Parse(); |
| 233 | + if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); } |
| 234 | + |
| 235 | + vm.SelectedItem = vm.Projects.First().Items.First().Items.First().Items.First(); |
| 236 | + vm.RenameCommand.Execute(vm.SelectedItem); |
| 237 | + |
| 238 | + Assert.AreEqual(expectedCode, module.Lines()); |
| 239 | + } |
| 240 | + |
185 | 241 | #region
|
186 | 242 | private Configuration GetDefaultUnitTestConfig()
|
187 | 243 | {
|
|
0 commit comments