Skip to content

Commit cc40f48

Browse files
committed
Rename test
1 parent b9b8d5b commit cc40f48

File tree

2 files changed

+59
-4
lines changed

2 files changed

+59
-4
lines changed

RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RenameCommand.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using Rubberduck.Parsing.VBA;
66
using Rubberduck.Refactorings.Rename;
77
using Rubberduck.UI.Command;
8-
using Rubberduck.UI.Refactorings;
98
using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane;
109

1110
namespace Rubberduck.UI.CodeExplorer.Commands
@@ -15,9 +14,9 @@ public class CodeExplorer_RenameCommand : CommandBase, IDisposable
1514
private readonly VBE _vbe;
1615
private readonly RubberduckParserState _state;
1716
private readonly ICodePaneWrapperFactory _wrapperFactory;
18-
private readonly RenameDialog _view;
17+
private readonly IRenameView _view;
1918

20-
public CodeExplorer_RenameCommand(VBE vbe, RubberduckParserState state, ICodePaneWrapperFactory wrapperFactory, RenameDialog view)
19+
public CodeExplorer_RenameCommand(VBE vbe, RubberduckParserState state, ICodePaneWrapperFactory wrapperFactory, IRenameView view)
2120
{
2221
_vbe = vbe;
2322
_state = state;
@@ -61,7 +60,7 @@ private Declaration GetSelectedDeclaration(CodeExplorerItemViewModel node)
6160

6261
public void Dispose()
6362
{
64-
if (_view != null && !_view.IsDisposed)
63+
if (_view != null)
6564
{
6665
_view.Dispose();
6766
}

RubberduckTests/CodeExplorer/CodeExplorerTests.cs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@
77
using Moq;
88
using Rubberduck.Navigation.CodeExplorer;
99
using Rubberduck.Parsing.VBA;
10+
using Rubberduck.Refactorings.Rename;
1011
using Rubberduck.Settings;
1112
using Rubberduck.SmartIndenter;
1213
using Rubberduck.UI;
1314
using Rubberduck.UI.CodeExplorer.Commands;
15+
using Rubberduck.UI.Refactorings;
1416
using Rubberduck.UnitTesting;
1517
using Rubberduck.VBEditor.VBEHost;
1618
using Rubberduck.VBEditor.Extensions;
19+
using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane;
1720
using RubberduckTests.Mocks;
1821

1922
namespace RubberduckTests.CodeExplorer
@@ -182,6 +185,59 @@ Dim d As Boolean
182185
Assert.AreEqual(expectedCode, module.Lines());
183186
}
184187

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+
185241
#region
186242
private Configuration GetDefaultUnitTestConfig()
187243
{

0 commit comments

Comments
 (0)