|
6 | 6 | using Rubberduck.Parsing.VBA;
|
7 | 7 | using Rubberduck.Refactorings;
|
8 | 8 | using Rubberduck.Refactorings.MoveToFolder;
|
| 9 | +using Rubberduck.VBEditor.SafeComWrappers; |
| 10 | +using RubberduckTests.Mocks; |
9 | 11 |
|
10 | 12 | namespace RubberduckTests.Refactoring.MoveToFolder
|
11 | 13 | {
|
@@ -91,6 +93,62 @@ End Sub
|
91 | 93 | Assert.AreEqual(expectedCode, refactoredCode);
|
92 | 94 | }
|
93 | 95 |
|
| 96 | + [Test] |
| 97 | + [Category("Refactorings")] |
| 98 | + public void MoveToFolderBaseRefactoring_HasAnnotation_SameFolder_DoesNotDoAnything() |
| 99 | + { |
| 100 | + const string code = @" |
| 101 | +'@Folder(""MyOldFolder.MyOldSubfolder.SubSub"") |
| 102 | +Public Sub Foo() |
| 103 | +End Sub |
| 104 | +"; |
| 105 | + const string expectedCode = code; |
| 106 | + Func<RubberduckParserState, MoveToFolderModel> modelBuilder = (state) => |
| 107 | + { |
| 108 | + var module = state.DeclarationFinder |
| 109 | + .UserDeclarations(DeclarationType.ProceduralModule) |
| 110 | + .Single() as ModuleDeclaration; |
| 111 | + return new MoveToFolderModel(module, "MyOldFolder.MyOldSubfolder.SubSub"); |
| 112 | + }; |
| 113 | + |
| 114 | + var refactoredCode = RefactoredCode(code, modelBuilder); |
| 115 | + |
| 116 | + Assert.AreEqual(expectedCode, refactoredCode); |
| 117 | + } |
| 118 | + |
| 119 | + [Test] |
| 120 | + [Category("Refactorings")] |
| 121 | + public void MoveToFolderBaseRefactoring_NoAnnotation_SameFolder_AddsAnnotation() |
| 122 | + { |
| 123 | + const string code = @" |
| 124 | +Public Sub Foo() |
| 125 | +End Sub |
| 126 | +"; |
| 127 | + const string expectedCode = @"'@Folder ""TestProject"" |
| 128 | +
|
| 129 | +Public Sub Foo() |
| 130 | +End Sub |
| 131 | +"; |
| 132 | + Func<RubberduckParserState, MoveToFolderModel> modelBuilder = (state) => |
| 133 | + { |
| 134 | + var module = state.DeclarationFinder |
| 135 | + .UserDeclarations(DeclarationType.ProceduralModule) |
| 136 | + .Single() as ModuleDeclaration; |
| 137 | + return new MoveToFolderModel(module, "TestProject"); |
| 138 | + }; |
| 139 | + |
| 140 | + var vbe = new MockVbeBuilder() |
| 141 | + .ProjectBuilder("TestProject", ProjectProtection.Unprotected) |
| 142 | + .AddComponent("TestModule", ComponentType.StandardModule, code) |
| 143 | + .AddProjectToVbeBuilder() |
| 144 | + .Build() |
| 145 | + .Object; |
| 146 | + |
| 147 | + var refactoredCode = RefactoredCode(vbe, modelBuilder); |
| 148 | + |
| 149 | + Assert.AreEqual(expectedCode, refactoredCode["TestModule"]); |
| 150 | + } |
| 151 | + |
94 | 152 | protected override IRefactoringAction<MoveToFolderModel> TestBaseRefactoring(RubberduckParserState state, IRewritingManager rewritingManager)
|
95 | 153 | {
|
96 | 154 | var annotationUpdater = new AnnotationUpdater();
|
|
0 commit comments