Skip to content

Commit 8a31079

Browse files
committed
Use IProjectsProvider in ExtractInterfaceBaseRefactoring
1 parent d26eef5 commit 8a31079

File tree

4 files changed

+12
-10
lines changed

4 files changed

+12
-10
lines changed

Rubberduck.Refactorings/ExtractInterface/ExtractInterfaceBaseRefactoring.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,29 @@
88
using Rubberduck.Parsing.VBA;
99
using Rubberduck.Parsing.VBA.Parsing;
1010
using Rubberduck.Refactorings.AddInterfaceImplementations;
11+
using Rubberduck.VBEditor.ComManagement;
1112
using Rubberduck.VBEditor.SafeComWrappers;
13+
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
1214

1315
namespace Rubberduck.Refactorings.ExtractInterface
1416
{
1517
public class ExtractInterfaceBaseRefactoring : BaseRefactoringWithSuspensionBase<ExtractInterfaceModel>
1618
{
1719
private readonly ICodeOnlyBaseRefactoring<AddInterfaceImplementationsModel> _addImplementationsRefactoring;
1820
private readonly IParseTreeProvider _parseTreeProvider;
21+
private readonly IProjectsProvider _projectsProvider;
1922

2023
public ExtractInterfaceBaseRefactoring(
2124
AddInterFaceImplementationsBaseRefactoring addImplementationsRefactoring,
2225
IParseTreeProvider parseTreeProvider,
2326
IParseManager parseManager,
24-
IRewritingManager rewritingManager)
27+
IRewritingManager rewritingManager,
28+
IProjectsProvider projectsProvider)
2529
: base(parseManager, rewritingManager)
2630
{
2731
_addImplementationsRefactoring = addImplementationsRefactoring;
2832
_parseTreeProvider = parseTreeProvider;
33+
_projectsProvider = projectsProvider;
2934
}
3035

3136
protected override bool RequiresSuspension(ExtractInterfaceModel model)
@@ -40,20 +45,19 @@ protected override void Refactor(ExtractInterfaceModel model, IRewriteSession re
4045

4146
private void AddInterface(ExtractInterfaceModel model, IRewriteSession rewriteSession)
4247
{
43-
var targetProject = model.TargetDeclaration.Project;
48+
var targetProject = _projectsProvider.Project(model.TargetDeclaration.ProjectId);
4449
if (targetProject == null)
4550
{
4651
return; //The target project is not available.
4752
}
4853

49-
AddInterfaceClass(model.TargetDeclaration, model.InterfaceName, GetInterfaceModuleBody(model));
54+
AddInterfaceClass(targetProject, model.InterfaceName, GetInterfaceModuleBody(model));
5055
AddImplementsStatement(model, rewriteSession);
5156
AddInterfaceMembersToClass(model, rewriteSession);
5257
}
5358

54-
private void AddInterfaceClass(Declaration implementingClass, string interfaceName, string interfaceBody)
59+
private void AddInterfaceClass(IVBProject targetProject, string interfaceName, string interfaceBody)
5560
{
56-
var targetProject = implementingClass.Project;
5761
using (var components = targetProject.VBComponents)
5862
{
5963
using (var interfaceComponent = components.Add(ComponentType.ClassModule))
@@ -120,8 +124,6 @@ private void AddImplementsStatement(ExtractInterfaceModel model, IRewriteSession
120124
return (-1, false);
121125
}
122126

123-
124-
125127
private void AddInterfaceMembersToClass(ExtractInterfaceModel model, IRewriteSession rewriteSession)
126128
{
127129
var targetModule = model.TargetDeclaration.QualifiedModuleName;

RubberduckTests/CodeExplorer/MockedCodeExplorer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ public MockedCodeExplorer ImplementIndenterCommand()
504504
public MockedCodeExplorer ImplementExtractInterfaceCommand()
505505
{
506506
var addImplementationsBaseRefactoring = new AddInterFaceImplementationsBaseRefactoring(null);
507-
var extractInterfaceBaseRefactoring = new ExtractInterfaceBaseRefactoring(addImplementationsBaseRefactoring, State, State, null);
507+
var extractInterfaceBaseRefactoring = new ExtractInterfaceBaseRefactoring(addImplementationsBaseRefactoring, State, State, null, State.ProjectsProvider);
508508
ViewModel.CodeExplorerExtractInterfaceCommand = new CodeExplorerExtractInterfaceCommand(
509509
new ExtractInterfaceRefactoring(extractInterfaceBaseRefactoring, State, null, null, _uiDispatcher.Object),
510510
State, null, VbeEvents.Object);

RubberduckTests/Commands/RefactorCommands/ExtractInterfaceCommandTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ protected override CommandBase TestCommand(IVBE vbe, RubberduckParserState state
172172
.Setup(m => m.Invoke(It.IsAny<Action>()))
173173
.Callback((Action action) => action.Invoke());
174174
var addImplementationsBaseRefactoring = new AddInterFaceImplementationsBaseRefactoring(rewritingManager);
175-
var baseRefactoring = new ExtractInterfaceBaseRefactoring(addImplementationsBaseRefactoring, state, state, rewritingManager);
175+
var baseRefactoring = new ExtractInterfaceBaseRefactoring(addImplementationsBaseRefactoring, state, state, rewritingManager, state.ProjectsProvider);
176176
var refactoring = new ExtractInterfaceRefactoring(baseRefactoring, state, factory, selectionService, uiDispatcherMock.Object);
177177
var notifier = new ExtractInterfaceFailedNotifier(msgBox);
178178
return new RefactorExtractInterfaceCommand(refactoring, notifier, state, selectionService);

RubberduckTests/Refactoring/ExtractInterfaceTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,7 @@ protected override IRefactoring TestRefactoring(IRewritingManager rewritingManag
650650
.Setup(m => m.Invoke(It.IsAny<Action>()))
651651
.Callback((Action action) => action.Invoke());
652652
var addImplementationsBaseRefactoring = new AddInterFaceImplementationsBaseRefactoring(rewritingManager);
653-
var baseRefactoring = new ExtractInterfaceBaseRefactoring(addImplementationsBaseRefactoring, state, state, rewritingManager);
653+
var baseRefactoring = new ExtractInterfaceBaseRefactoring(addImplementationsBaseRefactoring, state, state, rewritingManager, state.ProjectsProvider);
654654
return new ExtractInterfaceRefactoring(baseRefactoring, state, factory, selectionService, uiDispatcherMock.Object);
655655
}
656656
}

0 commit comments

Comments
 (0)