Skip to content

Commit 42fe165

Browse files
committed
Update tests to incorporate new factories
Tests retain prior coverage and testing logic - changed only to compile with modifications to the refactored object model. Organized tests by refactoring action.
1 parent f468e8e commit 42fe165

File tree

11 files changed

+253
-111
lines changed

11 files changed

+253
-111
lines changed

RubberduckTests/Commands/RefactorCommands/EncapsulateFieldCommandTests.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
using Rubberduck.Parsing.VBA;
88
using Rubberduck.Refactorings;
99
using Rubberduck.Refactorings.EncapsulateField;
10-
using Rubberduck.SmartIndenter;
1110
using Rubberduck.UI.Command;
1211
using Rubberduck.UI.Command.Refactorings;
1312
using Rubberduck.UI.Command.Refactorings.Notifiers;
@@ -20,8 +19,9 @@ namespace RubberduckTests.Commands.RefactorCommands
2019
{
2120
public class EncapsulateFieldCommandTests : RefactorCodePaneCommandTestBase
2221
{
23-
[Category("Commands")]
2422
[Test]
23+
[Category("Commands")]
24+
[Category("Encapsulate Field")]
2525
public void EncapsulateField_CanExecute_LocalVariable()
2626
{
2727
const string input =
@@ -32,8 +32,9 @@ Dim d As Boolean
3232
Assert.IsFalse(CanExecute(input, selection));
3333
}
3434

35-
[Category("Commands")]
3635
[Test]
36+
[Category("Commands")]
37+
[Category("Encapsulate Field")]
3738
public void EncapsulateField_CanExecute_Proc()
3839
{
3940
const string input =
@@ -44,8 +45,9 @@ Sub Foo()
4445
Assert.IsFalse(CanExecute(input, selection));
4546
}
4647

47-
[Category("Commands")]
4848
[Test]
49+
[Category("Commands")]
50+
[Category("Encapsulate Field")]
4951
public void EncapsulateField_CanExecute_Field()
5052
{
5153
const string input =
@@ -68,7 +70,14 @@ protected override CommandBase TestCommand(IVBE vbe, RubberduckParserState state
6870
.Setup(m => m.Invoke(It.IsAny<Action>()))
6971
.Callback((Action action) => action.Invoke());
7072
var userInteraction = new RefactoringUserInteraction<IEncapsulateFieldPresenter, EncapsulateFieldModel>(factory, uiDispatcherMock.Object);
71-
var refactoring = new EncapsulateFieldRefactoring(resolver.Resolve<EncapsulateFieldRefactoringAction>(), resolver.Resolve<EncapsulateFieldPreviewProvider>(), state, userInteraction, rewritingManager, selectionService, selectedDeclarationProvider);
73+
var refactoring = new EncapsulateFieldRefactoring(resolver.Resolve<EncapsulateFieldRefactoringAction>(),
74+
resolver.Resolve<EncapsulateFieldPreviewProvider>(),
75+
resolver.Resolve<IEncapsulateFieldModelFactory>(),
76+
state,
77+
userInteraction,
78+
rewritingManager,
79+
selectionService,
80+
selectedDeclarationProvider);
7281
var notifier = new EncapsulateFieldFailedNotifier(msgBox);
7382
var selectedDeclarationService = new SelectedDeclarationProvider(selectionService, state);
7483
return new RefactorEncapsulateFieldCommand(refactoring, notifier, state, selectionService, selectedDeclarationService);

RubberduckTests/Refactoring/DeclareFieldsAsUDTMembers/DeclareFieldsAsUDTMembersRefactoringActionTests.cs

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class DeclareFieldsAsUDTMembersRefactoringActionTests : RefactoringAction
1515
[TestCase(4)]
1616
[TestCase(2)]
1717
[Category("Refactorings")]
18+
[Category("Encapsulate Field")]
1819
[Category(nameof(DeclareFieldsAsUDTMembersRefactoringAction))]
1920
public void FormatSingleExistingMember(int indentionLevel)
2021
{
@@ -45,6 +46,7 @@ End Type
4546
[TestCase(4)]
4647
[TestCase(2)]
4748
[Category("Refactorings")]
49+
[Category("Encapsulate Field")]
4850
[Category(nameof(DeclareFieldsAsUDTMembersRefactoringAction))]
4951
public void FormatMatchesLastMemberIndent(int indentionLevel)
5052
{
@@ -77,8 +79,9 @@ End Type
7779

7880
[Test]
7981
[Category("Refactorings")]
82+
[Category("Encapsulate Field")]
8083
[Category(nameof(DeclareFieldsAsUDTMembersRefactoringAction))]
81-
public void FormatPreservesComment()
84+
public void FormatPreservesComments()
8285
{
8386
var indention = string.Concat(Enumerable.Repeat(" ", 2));
8487

@@ -106,6 +109,42 @@ End Type
106109
StringAssert.Contains(expectedUDT, results);
107110
}
108111

112+
[Test]
113+
[Category("Refactorings")]
114+
[Category("Encapsulate Field")]
115+
[Category(nameof(DeclareFieldsAsUDTMembersRefactoringAction))]
116+
public void FormatMultipleInsertions()
117+
{
118+
var indention = string.Concat(Enumerable.Repeat(" ", 2));
119+
120+
string inputCode =
121+
$@"
122+
Option Explicit
123+
124+
Private mTest As Long
125+
Private mTest1 As Long
126+
Private mTest2 As Long
127+
128+
Private Type TestType
129+
FirstValue As String
130+
SecondValue As Double
131+
End Type
132+
";
133+
var expectedUDT =
134+
$@"
135+
Private Type TestType
136+
FirstValue As String
137+
SecondValue As Double
138+
Test As Long
139+
Test1 As Long
140+
Test2 As Long
141+
End Type
142+
";
143+
144+
var results = ExecuteTest(inputCode, "TestType", ("mTest", "Test"), ("mTest1", "Test1"), ("mTest2", "Test2"));
145+
StringAssert.Contains(expectedUDT, results);
146+
}
147+
109148
private string ExecuteTest(string inputCode, string udtIdentifier, params (string, string)[] fieldConversions)
110149
{
111150
return RefactoredCode(inputCode, state => TestModel(state, udtIdentifier, fieldConversions));

RubberduckTests/Refactoring/EncapsulateField/EncapsulateFIeldTestSupport.cs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
using Moq;
2-
using Rubberduck.Common;
1+
using Rubberduck.Common;
32
using Rubberduck.Parsing.Rewriter;
43
using Rubberduck.Parsing.Symbols;
5-
using Rubberduck.Parsing.UIContext;
64
using Rubberduck.Parsing.VBA;
75
using Rubberduck.Refactorings;
86
using Rubberduck.Refactorings.EncapsulateField;
9-
using Rubberduck.SmartIndenter;
107
using Rubberduck.VBEditor;
118
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
129
using Rubberduck.VBEditor.Utility;
@@ -21,7 +18,7 @@ public class EncapsulateFieldTestSupport : InteractiveRefactoringTestBase<IEncap
2118
{
2219
public string RhsParameterNameBuilder(string property) => $"{property.ToLowerCaseFirstLetter()}Value";
2320

24-
public string StateUDTDefaultType => $"T{MockVbeBuilder.TestModuleName}";
21+
public string StateUDTDefaultTypeName => $"T{MockVbeBuilder.TestModuleName}";
2522

2623
private TestEncapsulationAttributes UserModifiedEncapsulationAttributes(string field, string property = null, bool isReadonly = false, bool encapsulateFlag = true)
2724
{
@@ -122,7 +119,14 @@ public IRefactoring SupportTestRefactoring(
122119
{
123120
var resolver = new EncapsulateFieldTestComponentResolver(state, rewritingManager);
124121
var selectedDeclarationProvider = new SelectedDeclarationProvider(selectionService, state);
125-
return new EncapsulateFieldRefactoring(resolver.Resolve<EncapsulateFieldRefactoringAction>(), resolver.Resolve<EncapsulateFieldPreviewProvider>(), state, userInteraction, rewritingManager, selectionService, selectedDeclarationProvider);
122+
return new EncapsulateFieldRefactoring(resolver.Resolve<EncapsulateFieldRefactoringAction>(),
123+
resolver.Resolve<EncapsulateFieldPreviewProvider>(),
124+
resolver.Resolve<IEncapsulateFieldModelFactory>(),
125+
state,
126+
userInteraction,
127+
rewritingManager,
128+
selectionService,
129+
selectedDeclarationProvider);
126130
}
127131

128132
public IEncapsulateFieldCandidate RetrieveEncapsulateFieldCandidate(string inputCode, string fieldName)
@@ -143,12 +147,12 @@ public IEncapsulateFieldCandidate RetrieveEncapsulateFieldCandidate(IVBE vbe, st
143147
using (state)
144148
{
145149
var match = state.DeclarationFinder.MatchName(fieldName).Where(m => m.DeclarationType.Equals(declarationType)).Single();
146-
var builder = new EncapsulateFieldElementsBuilder(state, match.QualifiedModuleName);
147-
foreach (var candidate in builder.Candidates)
148-
{
149-
candidate.NameValidator = EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.Default);
150-
}
151-
return builder.Candidates.First();
150+
151+
var resolver = new EncapsulateFieldTestComponentResolver(state, null);
152+
153+
var model = resolver.Resolve<IEncapsulateFieldModelFactory>().Create(match);
154+
155+
return model[match.IdentifierName];
152156
}
153157
}
154158

@@ -178,8 +182,7 @@ public class TestEncapsulationAttributes
178182
{
179183
public TestEncapsulationAttributes(string fieldName, bool encapsulationFlag = true, bool isReadOnly = false)
180184
{
181-
var validator = EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.Default);
182-
_identifiers = new EncapsulationIdentifiers(fieldName, validator);
185+
_identifiers = new EncapsulationIdentifiers(fieldName);
183186
EncapsulateFlag = encapsulationFlag;
184187
IsReadOnly = isReadOnly;
185188
}

RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldTestComponentResolver.cs

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
using Rubberduck.Refactorings;
44
using Rubberduck.Refactorings.DeclareFieldsAsUDTMembers;
55
using Rubberduck.Refactorings.EncapsulateField;
6-
using Rubberduck.SmartIndenter;
7-
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
86
using Rubberduck.Refactorings.ReplaceReferences;
97
using Rubberduck.Refactorings.ReplacePrivateUDTMemberReferences;
108
using Rubberduck.Refactorings.ReplaceDeclarationIdentifier;
119
using Rubberduck.Refactorings.CodeBlockInsert;
10+
using Rubberduck.Refactorings.EncapsulateFieldUseBackingUDTMember;
11+
using Rubberduck.Refactorings.EncapsulateFieldUseBackingField;
12+
using Rubberduck.Refactorings.EncapsulateFieldInsertNewCode;
13+
using System;
1214

1315
namespace RubberduckTests.Refactoring.EncapsulateField
1416
{
@@ -32,27 +34,32 @@ private static T ResolveImpl<T>() where T : class
3234
switch (typeof(T).Name)
3335
{
3436
case nameof(EncapsulateFieldRefactoringAction):
35-
return new EncapsulateFieldRefactoringAction(
37+
return new EncapsulateFieldRefactoringAction(_declarationFinderProvider,
3638
ResolveImpl<EncapsulateFieldUseBackingFieldRefactoringAction>(),
3739
ResolveImpl<EncapsulateFieldUseBackingUDTMemberRefactoringAction>()) as T;
40+
3841
case nameof(ReplaceReferencesRefactoringAction):
3942
return new ReplaceReferencesRefactoringAction(_rewritingManager) as T;
43+
4044
case nameof(ReplaceDeclarationIdentifierRefactoringAction):
4145
return new ReplaceDeclarationIdentifierRefactoringAction(_rewritingManager) as T;
46+
4247
case nameof(CodeBlockInsertRefactoringAction):
4348
return new CodeBlockInsertRefactoringAction(_declarationFinderProvider,
4449
_rewritingManager,
4550
new CodeBuilder()) as T;
51+
4652
case nameof(EncapsulateFieldInsertNewCodeRefactoringAction):
4753
return new EncapsulateFieldInsertNewCodeRefactoringAction(
4854
ResolveImpl<CodeBlockInsertRefactoringAction>(),
4955
_declarationFinderProvider,
5056
_rewritingManager,
5157
new CodeBuilder()) as T;
58+
5259
case nameof(ReplacePrivateUDTMemberReferencesRefactoringAction):
5360
return new ReplacePrivateUDTMemberReferencesRefactoringAction(_rewritingManager) as T;
61+
5462
case nameof(IEncapsulateFieldRefactoringActionsProvider):
55-
case nameof(EncapsulateFieldRefactoringActionsProvider):
5663
return new EncapsulateFieldRefactoringActionsProvider(
5764
_declarationFinderProvider,
5865
_rewritingManager,
@@ -62,30 +69,36 @@ private static T ResolveImpl<T>() where T : class
6269
ResolveImpl<DeclareFieldsAsUDTMembersRefactoringAction>(),
6370
ResolveImpl<EncapsulateFieldInsertNewCodeRefactoringAction >(),
6471
ResolveImpl<CodeBlockInsertRefactoringAction>()) as T;
72+
6573
case nameof(EncapsulateFieldUseBackingFieldRefactoringAction):
6674
return new EncapsulateFieldUseBackingFieldRefactoringAction(
67-
ResolveImpl<EncapsulateFieldRefactoringActionsProvider>(),
75+
ResolveImpl<IEncapsulateFieldRefactoringActionsProvider>(),
6876
ResolveImpl<IReplacePrivateUDTMemberReferencesModelFactory>(),
6977
_declarationFinderProvider,
7078
_rewritingManager) as T;
79+
7180
case nameof(EncapsulateFieldUseBackingUDTMemberRefactoringAction):
7281
return new EncapsulateFieldUseBackingUDTMemberRefactoringAction(
73-
ResolveImpl<EncapsulateFieldRefactoringActionsProvider>(),
82+
ResolveImpl<IEncapsulateFieldRefactoringActionsProvider>(),
7483
ResolveImpl<IReplacePrivateUDTMemberReferencesModelFactory>(),
7584
_declarationFinderProvider,
7685
_rewritingManager,
7786
new CodeBuilder()) as T;
87+
7888
case nameof(IReplacePrivateUDTMemberReferencesModelFactory):
7989
return new ReplacePrivateUDTMemberReferencesModelFactory(_declarationFinderProvider) as T;
90+
8091
case nameof(DeclareFieldsAsUDTMembersRefactoringAction):
8192
return new DeclareFieldsAsUDTMembersRefactoringAction(
8293
_declarationFinderProvider,
8394
_rewritingManager,
8495
new CodeBuilder()) as T;
96+
8597
case nameof(EncapsulateFieldPreviewProvider):
86-
return new EncapsulateFieldPreviewProvider(
98+
return new EncapsulateFieldPreviewProvider(_declarationFinderProvider,
8799
ResolveImpl<EncapsulateFieldUseBackingFieldPreviewProvider>(),
88100
ResolveImpl<EncapsulateFieldUseBackingUDTMemberPreviewProvider>()) as T;
101+
89102
case nameof(EncapsulateFieldUseBackingFieldPreviewProvider):
90103
return new EncapsulateFieldUseBackingFieldPreviewProvider(
91104
ResolveImpl<EncapsulateFieldUseBackingFieldRefactoringAction>(),
@@ -94,13 +107,26 @@ private static T ResolveImpl<T>() where T : class
94107
return new EncapsulateFieldUseBackingUDTMemberPreviewProvider(
95108
ResolveImpl<EncapsulateFieldUseBackingUDTMemberRefactoringAction>(),
96109
_rewritingManager) as T;
97-
}
98-
return null;
99-
}
100110

101-
private static IIndenter CreateIndenter(IVBE vbe = null)
102-
{
103-
return new Indenter(vbe, () => Settings.IndenterSettingsTests.GetMockIndenterSettings());
111+
case nameof(IEncapsulateFieldModelFactory):
112+
return new EncapsulateFieldModelFactory(_declarationFinderProvider,
113+
ResolveImpl<IEncapsulateFieldCandidateFactory>(),
114+
ResolveImpl<EncapsulateFieldUseBackingUDTMemberModelFactory>(),
115+
ResolveImpl<EncapsulateFieldUseBackingFieldModelFactory>()) as T;
116+
117+
case nameof(EncapsulateFieldUseBackingUDTMemberModelFactory):
118+
return new EncapsulateFieldUseBackingUDTMemberModelFactory(_declarationFinderProvider,
119+
ResolveImpl<IEncapsulateFieldCandidateFactory>()) as T;
120+
121+
case nameof(EncapsulateFieldUseBackingFieldModelFactory):
122+
return new EncapsulateFieldUseBackingFieldModelFactory(_declarationFinderProvider,
123+
ResolveImpl<IEncapsulateFieldCandidateFactory>()) as T;
124+
125+
case nameof(IEncapsulateFieldCandidateFactory):
126+
return new EncapsulateFieldCandidateFactory(_declarationFinderProvider, new CodeBuilder()) as T;
127+
128+
}
129+
throw new ArgumentException($"Unable to resolve {typeof(T).Name}") ;
104130
}
105131
}
106132
}

RubberduckTests/Refactoring/EncapsulateField/EncapsulateArrayFieldTests.cs renamed to RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldUseBackingField/EncapsulateArrayFieldTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,6 @@ End Sub
146146
StringAssert.Contains("myArray_1(idx) = idx", actualCode);
147147
}
148148

149-
150149
[Test]
151150
[Category("Refactorings")]
152151
[Category("Encapsulate Field")]

RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldTests.cs renamed to RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldUseBackingField/EncapsulateFieldTests.cs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,9 @@ public void EncapsulateMultipleFields(
5454

5555
var actualCode = RefactoredCode(inputCode, selection, presenterAction);
5656

57-
var notEncapsulated = flags.Keys.Where(k => !flags[k])
58-
.Select(k => k);
57+
var notEncapsulated = flags.Keys.Where(k => !flags[k]).Select(k => k);
5958

60-
var encapsulated = flags.Keys.Where(k => flags[k])
61-
.Select(k => k);
59+
var encapsulated = flags.Keys.Where(k => flags[k]).Select(k => k);
6260

6361
foreach ( var variable in notEncapsulated)
6462
{
@@ -116,8 +114,7 @@ public void EncapsulateMultipleFieldsInList(
116114

117115
var actualCode = RefactoredCode(inputCode, selection, presenterAction);
118116

119-
var remainInList = flags.Keys.Where(k => !flags[k])
120-
.Select(k => $"{k} As Integer");
117+
var remainInList = flags.Keys.Where(k => !flags[k]).Select(k => $"{k} As Integer");
121118

122119
if (remainInList.Any())
123120
{
@@ -173,7 +170,6 @@ public void EncapsulatePublicField_InvalidIdentifierSelected_Throws()
173170
Assert.AreEqual(codeString.Code, actualCode);
174171
}
175172

176-
177173
[Test]
178174
[Category("Refactorings")]
179175
[Category("Encapsulate Field")]
@@ -416,7 +412,7 @@ public void EncapsulatePrivateField_DefaultsAsUDT()
416412

417413
var actualCode = Support.RefactoredCode(inputCode.ToCodeString(), presenterAction);
418414
StringAssert.Contains("Fizz As Integer", actualCode);
419-
StringAssert.Contains($"this As {Support.StateUDTDefaultType}", actualCode);
415+
StringAssert.Contains($"this As {Support.StateUDTDefaultTypeName}", actualCode);
420416
StringAssert.Contains($"this.Fizz = {rhsParameterName}", actualCode);
421417
}
422418

@@ -438,8 +434,7 @@ Sub Bar(ByVal name As Integer)
438434

439435
var presenterAction = Support.SetParametersForSingleTarget("fizz", "Name");
440436

441-
var validator = EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.Default);
442-
var enapsulationIdentifiers = new EncapsulationIdentifiers("fizz", validator) { Property = "Name" };
437+
var enapsulationIdentifiers = new EncapsulationIdentifiers("fizz") { Property = "Name" };
443438
var rhsParameterName = Support.RhsParameterNameBuilder("Name");
444439

445440
var actualCode = Support.RefactoredCode(inputCode.ToCodeString(), presenterAction);

0 commit comments

Comments
 (0)