Skip to content

Commit ad8e1e8

Browse files
committed
Tests for remove presenter and factory
1 parent d36f47a commit ad8e1e8

File tree

5 files changed

+183
-7
lines changed

5 files changed

+183
-7
lines changed

RetailCoder.VBE/Inspections/ParameterNotUsedInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public IEnumerable<CodeInspectionResultBase> GetInspectionResults(VBProjectParse
3636
var quickFixRefactoring =
3737
new RemoveParametersRefactoring(
3838
new RemoveParametersPresenterFactory(new ActiveCodePaneEditor(parseResult.Project.VBE),
39-
new RemoveParametersDialog(), parseResult));
39+
new RemoveParametersDialog(), parseResult, new RubberduckMessageBox()));
4040

4141
var issues = from issue in unused.Where(parameter => !IsInterfaceMemberParameter(parameter, interfaceMemberScopes))
4242
let isInterfaceImplementationMember = IsInterfaceMemberImplementationParameter(issue, interfaceImplementationMemberScopes)

RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ public class RemoveParametersPresenter : IRemoveParametersPresenter
1212
{
1313
private readonly IRemoveParametersView _view;
1414
private readonly RemoveParametersModel _model;
15+
private readonly IMessageBox _messageBox;
1516

16-
public RemoveParametersPresenter(IRemoveParametersView view, RemoveParametersModel model)
17+
public RemoveParametersPresenter(IRemoveParametersView view, RemoveParametersModel model, IMessageBox messageBox)
1718
{
1819
_view = view;
1920
_model = model;
21+
_messageBox = messageBox;
2022
}
2123

2224
public RemoveParametersModel Show()
@@ -26,7 +28,7 @@ public RemoveParametersModel Show()
2628
if (_model.Parameters.Count == 0)
2729
{
2830
var message = string.Format(RubberduckUI.RemovePresenter_NoParametersError, _model.TargetDeclaration.IdentifierName);
29-
MessageBox.Show(message, RubberduckUI.RemoveParamsDialog_TitleText, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
31+
_messageBox.Show(message, RubberduckUI.RemoveParamsDialog_TitleText, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
3032
return null;
3133
}
3234

RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ public class RemoveParametersPresenterFactory : IRefactoringPresenterFactory<Rem
99
private readonly IActiveCodePaneEditor _editor;
1010
private readonly IRemoveParametersView _view;
1111
private readonly VBProjectParseResult _parseResult;
12+
private readonly IMessageBox _messageBox;
1213

1314
public RemoveParametersPresenterFactory(IActiveCodePaneEditor editor, IRemoveParametersView view,
14-
VBProjectParseResult parseResult)
15+
VBProjectParseResult parseResult, IMessageBox messageBox)
1516
{
1617
_editor = editor;
1718
_view = view;
1819
_parseResult = parseResult;
20+
_messageBox = messageBox;
1921
}
2022

2123
public RemoveParametersPresenter Create()
@@ -26,8 +28,8 @@ public RemoveParametersPresenter Create()
2628
return null;
2729
}
2830

29-
var model = new RemoveParametersModel(_parseResult, selection.Value, new RubberduckMessageBox());
30-
return new RemoveParametersPresenter(_view, model);
31+
var model = new RemoveParametersModel(_parseResult, selection.Value, _messageBox);
32+
return new RemoveParametersPresenter(_view, model, _messageBox);
3133
}
3234
}
3335
}

RetailCoder.VBE/UI/RefactorMenu.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ private void RemoveParameter(QualifiedSelection selection)
473473

474474
using (var view = new RemoveParametersDialog())
475475
{
476-
var factory = new RemoveParametersPresenterFactory(_editor, view, result);
476+
var factory = new RemoveParametersPresenterFactory(_editor, view, result, new RubberduckMessageBox());
477477
var refactoring = new RemoveParametersRefactoring(factory);
478478
refactoring.Refactor(selection);
479479
}

RubberduckTests/Refactoring/RemoveParametersTests.cs

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,6 +1131,178 @@ public void RemoveParams_RefactorDeclaration_FailsInvalidTarget()
11311131
}
11321132
}
11331133

1134+
[TestMethod]
1135+
public void Presenter_Accept_ReturnsModelWithParametersChanged()
1136+
{
1137+
//Input
1138+
const string inputCode =
1139+
@"Private Sub Foo(ByVal arg1 As Integer, ByVal arg2 As String)
1140+
End Sub";
1141+
var selection = new Selection(1, 15, 1, 15); //startLine, startCol, endLine, endCol
1142+
1143+
//Arrange
1144+
var project = SetupMockProject(inputCode);
1145+
var parseResult = new RubberduckParser().Parse(project.Object);
1146+
1147+
var qualifiedSelection = GetQualifiedSelection(selection);
1148+
1149+
var editor = new Mock<IActiveCodePaneEditor>();
1150+
editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection);
1151+
1152+
var model = new RemoveParametersModel(parseResult, qualifiedSelection, new RubberduckMessageBox());
1153+
model.Parameters[1].IsRemoved = true;
1154+
1155+
var view = new Mock<IRemoveParametersView>();
1156+
view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK);
1157+
view.Setup(v => v.Parameters).Returns(model.Parameters);
1158+
1159+
var factory = new RemoveParametersPresenterFactory(editor.Object, view.Object,
1160+
parseResult, null);
1161+
1162+
var presenter = factory.Create();
1163+
1164+
Assert.AreEqual(model.Parameters, presenter.Show().Parameters);
1165+
}
1166+
1167+
[TestMethod]
1168+
public void Presenter_Reject_ReturnsNull()
1169+
{
1170+
//Input
1171+
const string inputCode =
1172+
@"Private Sub Foo(ByVal arg1 As Integer, ByVal arg2 As String)
1173+
End Sub";
1174+
var selection = new Selection(1, 15, 1, 15); //startLine, startCol, endLine, endCol
1175+
1176+
//Arrange
1177+
var project = SetupMockProject(inputCode);
1178+
var parseResult = new RubberduckParser().Parse(project.Object);
1179+
1180+
var qualifiedSelection = GetQualifiedSelection(selection);
1181+
1182+
var editor = new Mock<IActiveCodePaneEditor>();
1183+
editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection);
1184+
1185+
var model = new RemoveParametersModel(parseResult, qualifiedSelection, new RubberduckMessageBox());
1186+
model.Parameters[1].IsRemoved = true;
1187+
1188+
var view = new Mock<IRemoveParametersView>();
1189+
view.Setup(v => v.ShowDialog()).Returns(DialogResult.Cancel);
1190+
view.Setup(v => v.Parameters).Returns(model.Parameters);
1191+
1192+
var factory = new RemoveParametersPresenterFactory(editor.Object, view.Object,
1193+
parseResult, null);
1194+
1195+
var presenter = factory.Create();
1196+
1197+
Assert.AreEqual(null, presenter.Show());
1198+
}
1199+
1200+
[TestMethod]
1201+
public void Presenter_Accept_AutoMarksSingleParamAsRemoved()
1202+
{
1203+
//Input
1204+
const string inputCode =
1205+
@"Private Sub Foo(ByVal arg1 As Integer)
1206+
End Sub";
1207+
var selection = new Selection(1, 15, 1, 15); //startLine, startCol, endLine, endCol
1208+
1209+
//Arrange
1210+
var project = SetupMockProject(inputCode);
1211+
var parseResult = new RubberduckParser().Parse(project.Object);
1212+
1213+
var qualifiedSelection = GetQualifiedSelection(selection);
1214+
1215+
var editor = new Mock<IActiveCodePaneEditor>();
1216+
editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection);
1217+
1218+
var model = new RemoveParametersModel(parseResult, qualifiedSelection, new RubberduckMessageBox());
1219+
model.Parameters[0].IsRemoved = true;
1220+
1221+
var factory = new RemoveParametersPresenterFactory(editor.Object, null,
1222+
parseResult, null);
1223+
1224+
var presenter = factory.Create();
1225+
1226+
Assert.IsTrue(model.Parameters[0].Declaration.Equals(presenter.Show().Parameters[0].Declaration));
1227+
}
1228+
1229+
[TestMethod]
1230+
public void Presenter_NoParams()
1231+
{
1232+
//Input
1233+
const string inputCode =
1234+
@"Private Sub Foo()
1235+
End Sub";
1236+
var selection = new Selection(1, 15, 1, 15); //startLine, startCol, endLine, endCol
1237+
1238+
//Arrange
1239+
var project = SetupMockProject(inputCode);
1240+
var parseResult = new RubberduckParser().Parse(project.Object);
1241+
1242+
var qualifiedSelection = GetQualifiedSelection(selection);
1243+
1244+
var editor = new Mock<IActiveCodePaneEditor>();
1245+
editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection);
1246+
1247+
var messageBox = new Mock<IMessageBox>();
1248+
messageBox.Setup(m => m.Show(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<MessageBoxButtons>(), It.IsAny<MessageBoxIcon>())).Returns(DialogResult.OK);
1249+
1250+
var factory = new RemoveParametersPresenterFactory(editor.Object, null,
1251+
parseResult, messageBox.Object);
1252+
1253+
var presenter = factory.Create();
1254+
1255+
Assert.AreEqual(null, presenter.Show());
1256+
}
1257+
1258+
[TestMethod]
1259+
public void Presenter_TargetIsNull()
1260+
{
1261+
//Input
1262+
const string inputCode =
1263+
@"
1264+
Private Sub Foo(ByVal arg1 As Integer, ByVal arg2 As String)
1265+
End Sub";
1266+
var selection = new Selection(1, 1, 1, 1); //startLine, startCol, endLine, endCol
1267+
1268+
//Arrange
1269+
var project = SetupMockProject(inputCode);
1270+
var parseResult = new RubberduckParser().Parse(project.Object);
1271+
1272+
var qualifiedSelection = GetQualifiedSelection(selection);
1273+
1274+
var editor = new Mock<IActiveCodePaneEditor>();
1275+
editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection);
1276+
1277+
var factory = new RemoveParametersPresenterFactory(editor.Object, null,
1278+
parseResult, null);
1279+
1280+
var presenter = factory.Create();
1281+
1282+
Assert.AreEqual(null, presenter.Show());
1283+
}
1284+
1285+
[TestMethod]
1286+
public void Factory_SelectionIsNull()
1287+
{
1288+
//Input
1289+
const string inputCode =
1290+
@"Private Sub Foo()
1291+
End Sub";
1292+
1293+
//Arrange
1294+
var project = SetupMockProject(inputCode);
1295+
var parseResult = new RubberduckParser().Parse(project.Object);
1296+
1297+
var editor = new Mock<IActiveCodePaneEditor>();
1298+
editor.Setup(e => e.GetSelection()).Returns((QualifiedSelection?) null);
1299+
1300+
var factory = new RemoveParametersPresenterFactory(editor.Object, null,
1301+
parseResult, null);
1302+
1303+
Assert.AreEqual(null, factory.Create());
1304+
}
1305+
11341306
#region setup
11351307
private static Mock<IRefactoringPresenterFactory<IRemoveParametersPresenter>> SetupFactory(RemoveParametersModel model)
11361308
{

0 commit comments

Comments
 (0)