Skip to content

Commit 6748cdc

Browse files
committed
testing MockVbeBuilder API... switched 3 tests to it.
1 parent b44f3eb commit 6748cdc

File tree

6 files changed

+50
-27
lines changed

6 files changed

+50
-27
lines changed

Rubberduck.Parsing/Rubberduck.Parsing.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@
4949
<EmbedInteropTypes>False</EmbedInteropTypes>
5050
<HintPath>..\libs\Microsoft.Vbe.Interop.dll</HintPath>
5151
</Reference>
52-
<Reference Include="NLog">
52+
<Reference Include="NLog, Version=3.2.1.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
53+
<SpecificVersion>False</SpecificVersion>
5354
<HintPath>..\packages\NLog.3.2.1\lib\net45\NLog.dll</HintPath>
5455
</Reference>
5556
<Reference Include="System" />

RubberduckTests/Mocks/MockProjectBuilder.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ public class MockProjectBuilder
1717
private readonly Mock<VBComponents> _vbComponents;
1818
private readonly Mock<References> _vbReferences;
1919

20-
private readonly ICollection<Mock<VBComponent>> _components = new List<Mock<VBComponent>>();
21-
private readonly ICollection<Mock<Reference>> _references = new List<Mock<Reference>>();
20+
private readonly List<VBComponent> _components = new List<VBComponent>();
21+
private readonly List<Reference> _references = new List<Reference>();
2222

2323
public MockProjectBuilder(string name, vbext_ProjectProtection protection, Func<VBE> getVbe)
2424
{
@@ -55,7 +55,7 @@ public MockProjectBuilder AddComponent(string name, vbext_ComponentType type, st
5555
/// <returns>Returns the <see cref="MockProjectBuilder"/> instance.</returns>
5656
public MockProjectBuilder AddComponent(Mock<VBComponent> component)
5757
{
58-
_components.Add(component);
58+
_components.Add(component.Object);
5959
return this;
6060
}
6161

@@ -67,7 +67,8 @@ public MockProjectBuilder AddComponent(Mock<VBComponent> component)
6767
/// <returns>Returns the <see cref="MockProjectBuilder"/> instance.</returns>
6868
public MockProjectBuilder AddReference(string name, string filePath)
6969
{
70-
_references.Add(CreateReferenceMock(name, filePath));
70+
var reference = CreateReferenceMock(name, filePath);
71+
_references.Add(reference.Object);
7172
return this;
7273
}
7374

@@ -111,8 +112,8 @@ private Mock<VBComponents> CreateComponentsMock()
111112
result.Setup(c => c.GetEnumerator()).Returns(() => _components.GetEnumerator());
112113
result.As<IEnumerable>().Setup(c => c.GetEnumerator()).Returns(() => _components.GetEnumerator());
113114

114-
result.Setup(m => m.Item(It.IsAny<int>())).Returns<int>(index => _components.ElementAt(index).Object);
115-
result.Setup(m => m.Item(It.IsAny<string>())).Returns<string>(name => _components.Single(item => item.Object.Name == name).Object);
115+
result.Setup(m => m.Item(It.IsAny<int>())).Returns<int>(index => _components.ElementAt(index));
116+
result.Setup(m => m.Item(It.IsAny<string>())).Returns<string>(name => _components.Single(item => item.Name == name));
116117
result.SetupGet(m => m.Count).Returns(_components.Count);
117118

118119
return result;
@@ -128,7 +129,7 @@ private Mock<References> CreateReferencesMock()
128129
result.Setup(m => m.GetEnumerator()).Returns(() => _references.GetEnumerator());
129130
result.As<IEnumerable>().Setup(m => m.GetEnumerator()).Returns(() => _references.GetEnumerator());
130131

131-
result.Setup(m => m.Item(It.IsAny<int>())).Returns<int>(index => _references.ElementAt(index).Object);
132+
result.Setup(m => m.Item(It.IsAny<int>())).Returns<int>(index => _references.ElementAt(index));
132133
result.SetupGet(m => m.Count).Returns(_references.Count);
133134

134135
return result;

RubberduckTests/Mocks/MockVbeBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,10 @@ private Mock<VBE> CreateVbeMock()
7979
vbe.SetupGet(m => m.MainWindow).Returns(mainWindow.Object);
8080

8181
_vbProjects = CreateProjectsMock();
82-
_vbe.SetupGet(m => m.VBProjects).Returns(() => _vbProjects.Object);
82+
vbe.SetupGet(m => m.VBProjects).Returns(() => _vbProjects.Object);
8383

8484
_vbCodePanes = CreateCodePanesMock();
85-
_vbe.SetupGet(m => m.CodePanes).Returns(() => _vbCodePanes.Object);
85+
vbe.SetupGet(m => m.CodePanes).Returns(() => _vbCodePanes.Object);
8686

8787
return vbe;
8888
}

RubberduckTests/Refactoring/RemoveParametersTests.cs

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using Rubberduck.VBEditor;
1313
using Rubberduck.VBEditor.Extensions;
1414
using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane;
15+
using RubberduckTests.Mocks;
1516

1617
namespace RubberduckTests.Refactoring
1718
{
@@ -1570,7 +1571,7 @@ public void Presenter_Accept_AutoMarksSingleParamAsRemoved()
15701571
}
15711572

15721573
[TestMethod]
1573-
public void Presenter_NoParams()
1574+
public void Presenter_ParameterlessTargetReturnsNullModel()
15741575
{
15751576
//Input
15761577
const string inputCode =
@@ -1579,72 +1580,88 @@ public void Presenter_NoParams()
15791580
var selection = new Selection(1, 15, 1, 15); //startLine, startCol, endLine, endCol
15801581

15811582
//Arrange
1582-
var project = SetupMockProject(inputCode);
1583+
var builder = new MockVbeBuilder();
1584+
var projectBuilder = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none);
1585+
projectBuilder.AddComponent("Module1", vbext_ComponentType.vbext_ct_StdModule, inputCode);
1586+
var project = projectBuilder.Build();
1587+
builder.AddProject(project);
1588+
15831589
var codePaneFactory = new RubberduckCodePaneFactory();
15841590
var parseResult = new RubberduckParser(codePaneFactory).Parse(project.Object);
15851591

1586-
var qualifiedSelection = GetQualifiedSelection(selection);
1592+
var codePane = project.Object.VBComponents.Item(0).CodeModule.CodePane;
1593+
var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(codePane.CodeModule.Parent), selection, codePaneFactory);
15871594

15881595
var editor = new Mock<IActiveCodePaneEditor>();
15891596
editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection);
15901597

15911598
var messageBox = new Mock<IMessageBox>();
15921599
messageBox.Setup(m => m.Show(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<MessageBoxButtons>(), It.IsAny<MessageBoxIcon>())).Returns(DialogResult.OK);
15931600

1594-
var factory = new RemoveParametersPresenterFactory(editor.Object, null,
1595-
parseResult, messageBox.Object);
1596-
1601+
var factory = new RemoveParametersPresenterFactory(editor.Object, null, parseResult, messageBox.Object);
15971602
var presenter = factory.Create();
15981603

15991604
Assert.AreEqual(null, presenter.Show());
16001605
}
16011606

16021607
[TestMethod]
1603-
public void Presenter_TargetIsNull()
1608+
public void Presenter_NullTargetReturnsNullModel()
16041609
{
16051610
//Input
16061611
const string inputCode =
16071612
@"
16081613
Private Sub Foo(ByVal arg1 As Integer, ByVal arg2 As String)
16091614
End Sub";
1610-
var selection = new Selection(1, 1, 1, 1); //startLine, startCol, endLine, endCol
1615+
var selection = Selection.Home;
16111616

16121617
//Arrange
1613-
var project = SetupMockProject(inputCode);
1618+
var builder = new MockVbeBuilder();
1619+
var projectBuilder = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none);
1620+
projectBuilder.AddComponent("Module1", vbext_ComponentType.vbext_ct_StdModule, inputCode);
1621+
var project = projectBuilder.Build();
1622+
builder.AddProject(project);
1623+
16141624
var codePaneFactory = new RubberduckCodePaneFactory();
16151625
var parseResult = new RubberduckParser(codePaneFactory).Parse(project.Object);
16161626

1617-
var qualifiedSelection = GetQualifiedSelection(selection);
1627+
var codePane = project.Object.VBComponents.Item(0).CodeModule.CodePane;
1628+
var ext = codePaneFactory.Create(codePane);
1629+
ext.Selection = selection;
1630+
1631+
var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(codePane.CodeModule.Parent), selection, codePaneFactory);
16181632

16191633
var editor = new Mock<IActiveCodePaneEditor>();
16201634
editor.Setup(e => e.GetSelection()).Returns(qualifiedSelection);
16211635

1622-
var factory = new RemoveParametersPresenterFactory(editor.Object, null,
1623-
parseResult, null);
1636+
var factory = new RemoveParametersPresenterFactory(editor.Object, null, parseResult, null);
16241637

16251638
var presenter = factory.Create();
16261639

16271640
Assert.AreEqual(null, presenter.Show());
16281641
}
16291642

16301643
[TestMethod]
1631-
public void Factory_SelectionIsNull()
1644+
public void Factory_NullSelectionNullReturnsNullPresenter()
16321645
{
16331646
//Input
16341647
const string inputCode =
16351648
@"Private Sub Foo()
16361649
End Sub";
16371650

16381651
//Arrange
1639-
var project = SetupMockProject(inputCode);
1652+
var builder = new MockVbeBuilder();
1653+
var projectBuilder = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none);
1654+
projectBuilder.AddComponent("Module1", vbext_ComponentType.vbext_ct_StdModule, inputCode);
1655+
var project = projectBuilder.Build();
1656+
builder.AddProject(project);
1657+
16401658
var codePaneFactory = new RubberduckCodePaneFactory();
16411659
var parseResult = new RubberduckParser(codePaneFactory).Parse(project.Object);
16421660

16431661
var editor = new Mock<IActiveCodePaneEditor>();
16441662
editor.Setup(e => e.GetSelection()).Returns((QualifiedSelection?) null);
16451663

1646-
var factory = new RemoveParametersPresenterFactory(editor.Object, null,
1647-
parseResult, null);
1664+
var factory = new RemoveParametersPresenterFactory(editor.Object, null, parseResult, null);
16481665

16491666
Assert.AreEqual(null, factory.Create());
16501667
}

RubberduckTests/RubberduckTests.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@
153153
<HintPath>..\packages\Ninject.3.2.2.0\lib\net45-full\Ninject.dll</HintPath>
154154
<Private>True</Private>
155155
</Reference>
156+
<Reference Include="NLog">
157+
<HintPath>..\packages\NLog.3.2.1\lib\net45\NLog.dll</HintPath>
158+
<Private>True</Private>
159+
</Reference>
156160
<Reference Include="Office, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">
157161
<SpecificVersion>False</SpecificVersion>
158162
<EmbedInteropTypes>True</EmbedInteropTypes>

RubberduckTests/VbeTestBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ protected QualifiedSelection GetQualifiedSelection(Selection selection)
3939
_ide.Object.ActiveVBProject = _ide.Object.VBProjects.Item(0);
4040
_ide.Object.ActiveCodePane = _ide.Object.ActiveVBProject.VBComponents.Item(0).CodeModule.CodePane;
4141
}
42-
return new QualifiedSelection(new QualifiedModuleName(_ide.Object.ActiveCodePane.CodeModule.Parent), selection);
42+
return new QualifiedSelection(new QualifiedModuleName(_ide.Object.ActiveCodePane.CodeModule.Parent), selection, new RubberduckCodePaneFactory());
4343
}
4444

4545
protected QualifiedSelection GetQualifiedSelection(Selection selection, VBComponent component)

0 commit comments

Comments
 (0)