Skip to content

Commit 996a684

Browse files
committed
Finish testing Rename presenter.
1 parent 8efa91a commit 996a684

File tree

1 file changed

+191
-0
lines changed

1 file changed

+191
-0
lines changed

RubberduckTests/Refactoring/RenameTests.cs

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using Rubberduck.UI;
1111
using Rubberduck.VBEditor;
1212
using Rubberduck.VBEditor.Extensions;
13+
using Rubberduck.VBEditor.VBEInterfaces;
1314
using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane;
1415
using MockFactory = RubberduckTests.Mocks.MockFactory;
1516

@@ -759,6 +760,196 @@ public void Factory_SelectionIsNull()
759760
Assert.AreEqual(null, presenter.Show());
760761
}
761762

763+
[TestMethod]
764+
public void Factory_SelectionIsNotNull_Accept()
765+
{
766+
const string newName = "Goo";
767+
768+
//Input
769+
const string inputCode =
770+
@"Private Sub Foo(ByVal arg1 As String)
771+
End Sub";
772+
var selection = new Selection(1, 25, 1, 25); //startLine, startCol, endLine, endCol
773+
774+
//Arrange
775+
var vbe = MockFactory.CreateVbeMock();
776+
var project = SetupMockProject(inputCode);
777+
var module = project.Object.VBComponents.Item(0).CodeModule;
778+
var codePaneFactory = new RubberduckCodePaneFactory();
779+
var parseResult = new RubberduckParser(codePaneFactory).Parse(project.Object);
780+
781+
var qualifiedSelection = GetQualifiedSelection(selection);
782+
var model = new RenameModel(vbe.Object, parseResult, qualifiedSelection, null) { NewName = newName };
783+
784+
var editor = new Mock<IActiveCodePaneEditor>();
785+
editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection);
786+
787+
int startLine, startColumn, endLine, endColumn;
788+
789+
var codePaneMock = new Mock<CodePane>();
790+
codePaneMock.Setup(c => c.CodeModule).Returns(module);
791+
codePaneMock.Setup(c => c.GetSelection(out startLine, out startColumn, out endLine, out endColumn));
792+
vbe.Setup(v => v.ActiveCodePane).Returns(codePaneMock.Object);
793+
794+
var rubberduckCodePane = new Mock<IRubberduckCodePane>();
795+
rubberduckCodePane.Setup(r => r.CodeModule).Returns(module);
796+
rubberduckCodePane.Setup(r => r.GetSelection(out startLine, out startColumn, out endLine, out endColumn));
797+
rubberduckCodePane.Setup(r => r.Selection).Returns(selection);
798+
799+
var codePaneFactoryMock = new Mock<IRubberduckFactory<IRubberduckCodePane>>();
800+
codePaneFactoryMock.Setup(c => c.Create(codePaneMock.Object)).Returns(rubberduckCodePane.Object);
801+
802+
var view = new Mock<IRenameView>();
803+
view.Setup(v => v.NewName).Returns(newName);
804+
view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK);
805+
806+
var factory = new RenamePresenterFactory(vbe.Object, view.Object, parseResult, null, codePaneFactoryMock.Object);
807+
808+
var presenter = factory.Create();
809+
Assert.AreEqual(model.NewName, presenter.Show().NewName);
810+
}
811+
812+
[TestMethod]
813+
public void Factory_SelectionIsNotNull_Reject()
814+
{
815+
//Input
816+
const string inputCode =
817+
@"Private Sub Foo(ByVal arg1 As String)
818+
End Sub";
819+
var selection = new Selection(1, 25, 1, 25); //startLine, startCol, endLine, endCol
820+
821+
//Arrange
822+
var vbe = MockFactory.CreateVbeMock();
823+
var project = SetupMockProject(inputCode);
824+
var module = project.Object.VBComponents.Item(0).CodeModule;
825+
var codePaneFactory = new RubberduckCodePaneFactory();
826+
var parseResult = new RubberduckParser(codePaneFactory).Parse(project.Object);
827+
828+
var qualifiedSelection = GetQualifiedSelection(selection);
829+
830+
var editor = new Mock<IActiveCodePaneEditor>();
831+
editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection);
832+
833+
int startLine, startColumn, endLine, endColumn;
834+
835+
var codePaneMock = new Mock<CodePane>();
836+
codePaneMock.Setup(c => c.CodeModule).Returns(module);
837+
codePaneMock.Setup(c => c.GetSelection(out startLine, out startColumn, out endLine, out endColumn));
838+
vbe.Setup(v => v.ActiveCodePane).Returns(codePaneMock.Object);
839+
840+
var rubberduckCodePane = new Mock<IRubberduckCodePane>();
841+
rubberduckCodePane.Setup(r => r.CodeModule).Returns(module);
842+
rubberduckCodePane.Setup(r => r.GetSelection(out startLine, out startColumn, out endLine, out endColumn));
843+
rubberduckCodePane.Setup(r => r.Selection).Returns(selection);
844+
845+
var codePaneFactoryMock = new Mock<IRubberduckFactory<IRubberduckCodePane>>();
846+
codePaneFactoryMock.Setup(c => c.Create(codePaneMock.Object)).Returns(rubberduckCodePane.Object);
847+
848+
var view = new Mock<IRenameView>();
849+
view.Setup(v => v.NewName).Returns("Goo");
850+
view.Setup(v => v.ShowDialog()).Returns(DialogResult.Cancel);
851+
852+
var factory = new RenamePresenterFactory(vbe.Object, view.Object, parseResult, null, codePaneFactoryMock.Object);
853+
854+
var presenter = factory.Create();
855+
Assert.AreEqual(null, presenter.Show());
856+
}
857+
858+
[TestMethod]
859+
public void Factory_SelectionIsNotNull_PassInTarget_Accept()
860+
{
861+
const string newName = "Goo";
862+
863+
//Input
864+
const string inputCode =
865+
@"Private Sub Foo(ByVal arg1 As String)
866+
End Sub";
867+
var selection = new Selection(1, 25, 1, 25); //startLine, startCol, endLine, endCol
868+
869+
//Arrange
870+
var vbe = MockFactory.CreateVbeMock();
871+
var project = SetupMockProject(inputCode);
872+
var module = project.Object.VBComponents.Item(0).CodeModule;
873+
var codePaneFactory = new RubberduckCodePaneFactory();
874+
var parseResult = new RubberduckParser(codePaneFactory).Parse(project.Object);
875+
876+
var qualifiedSelection = GetQualifiedSelection(selection);
877+
var model = new RenameModel(vbe.Object, parseResult, qualifiedSelection, null) { NewName = newName };
878+
879+
var editor = new Mock<IActiveCodePaneEditor>();
880+
editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection);
881+
882+
int startLine, startColumn, endLine, endColumn;
883+
884+
var codePaneMock = new Mock<CodePane>();
885+
codePaneMock.Setup(c => c.CodeModule).Returns(module);
886+
codePaneMock.Setup(c => c.GetSelection(out startLine, out startColumn, out endLine, out endColumn));
887+
vbe.Setup(v => v.ActiveCodePane).Returns(codePaneMock.Object);
888+
889+
var rubberduckCodePane = new Mock<IRubberduckCodePane>();
890+
rubberduckCodePane.Setup(r => r.CodeModule).Returns(module);
891+
rubberduckCodePane.Setup(r => r.GetSelection(out startLine, out startColumn, out endLine, out endColumn));
892+
rubberduckCodePane.Setup(r => r.Selection).Returns(selection);
893+
894+
var codePaneFactoryMock = new Mock<IRubberduckFactory<IRubberduckCodePane>>();
895+
codePaneFactoryMock.Setup(c => c.Create(codePaneMock.Object)).Returns(rubberduckCodePane.Object);
896+
897+
var view = new Mock<IRenameView>();
898+
view.Setup(v => v.NewName).Returns(newName);
899+
view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK);
900+
901+
var factory = new RenamePresenterFactory(vbe.Object, view.Object, parseResult, null, codePaneFactoryMock.Object);
902+
903+
var presenter = factory.Create();
904+
Assert.AreEqual(model.NewName, presenter.Show(model.Target).NewName);
905+
}
906+
907+
[TestMethod]
908+
public void Factory_SelectionIsNotNull_PassInTarget_Reject()
909+
{
910+
//Input
911+
const string inputCode =
912+
@"Private Sub Foo(ByVal arg1 As String)
913+
End Sub";
914+
var selection = new Selection(1, 25, 1, 25); //startLine, startCol, endLine, endCol
915+
916+
//Arrange
917+
var vbe = MockFactory.CreateVbeMock();
918+
var project = SetupMockProject(inputCode);
919+
var module = project.Object.VBComponents.Item(0).CodeModule;
920+
var codePaneFactory = new RubberduckCodePaneFactory();
921+
var parseResult = new RubberduckParser(codePaneFactory).Parse(project.Object);
922+
923+
var qualifiedSelection = GetQualifiedSelection(selection);
924+
var model = new RenameModel(vbe.Object, parseResult, qualifiedSelection, null) { NewName = "Goo" };
925+
926+
var editor = new Mock<IActiveCodePaneEditor>();
927+
editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection);
928+
929+
int startLine, startColumn, endLine, endColumn;
930+
931+
var codePaneMock = new Mock<CodePane>();
932+
codePaneMock.Setup(c => c.CodeModule).Returns(module);
933+
codePaneMock.Setup(c => c.GetSelection(out startLine, out startColumn, out endLine, out endColumn));
934+
vbe.Setup(v => v.ActiveCodePane).Returns(codePaneMock.Object);
935+
936+
var rubberduckCodePane = new Mock<IRubberduckCodePane>();
937+
rubberduckCodePane.Setup(r => r.CodeModule).Returns(module);
938+
rubberduckCodePane.Setup(r => r.GetSelection(out startLine, out startColumn, out endLine, out endColumn));
939+
rubberduckCodePane.Setup(r => r.Selection).Returns(selection);
940+
941+
var codePaneFactoryMock = new Mock<IRubberduckFactory<IRubberduckCodePane>>();
942+
codePaneFactoryMock.Setup(c => c.Create(codePaneMock.Object)).Returns(rubberduckCodePane.Object);
943+
944+
var view = new Mock<IRenameView>();
945+
view.Setup(v => v.ShowDialog()).Returns(DialogResult.Cancel);
946+
947+
var factory = new RenamePresenterFactory(vbe.Object, view.Object, parseResult, null, codePaneFactoryMock.Object);
948+
949+
var presenter = factory.Create();
950+
Assert.AreEqual(null, presenter.Show(model.Target));
951+
}
952+
762953
#region setup
763954
private static Mock<IRefactoringPresenterFactory<IRenamePresenter>> SetupFactory(RenameModel model)
764955
{

0 commit comments

Comments
 (0)