public void shouldExtractTheTextForTheNewProcByCallingConstructLinesOfProc() { var newProc = @" Public Sub NewMethod() DebugPrint ""a"" End Sub"; var extraction = new Mock <ExtractMethodExtraction>() { CallBase = true }; IExtractMethodExtraction SUT = extraction.Object; var codeModule = new Mock <ICodeModuleWrapper>(); var model = new Mock <IExtractMethodModel>(); var selection = new Selection(1, 1, 1, 1); var methodMock = new Mock <ExtractedMethod>() { CallBase = true }; var method = methodMock.Object; method.Accessibility = Accessibility.Private; method.Parameters = new List <ExtractedParameter>(); method.MethodName = "NewMethod"; methodMock.Setup(m => m.NewMethodCall()).Returns("theMethodCall"); model.Setup(m => m.PositionForNewMethod).Returns(selection); model.Setup(m => m.Method).Returns(method); extraction.Setup(em => em.constructLinesOfProc(It.IsAny <ICodeModuleWrapper>(), It.IsAny <IExtractMethodModel>())).Returns(newProc); SUT.apply(codeModule.Object, model.Object, selection); extraction.Verify(extr => extr.constructLinesOfProc(codeModule.Object, model.Object)); }
public ExtractMethodRefactoring( ICodeModuleWrapper codeModule, Action <Object> onParseRequest, Func <QualifiedSelection?, string, IExtractMethodModel> createMethodModel, IExtractMethodExtraction extraction) { _codeModule = codeModule; _createMethodModel = createMethodModel; _extraction = extraction; _onParseRequest = onParseRequest; }
public void shouldInsertMethodCall() { var extraction = new Mock <ExtractMethodExtraction>() { CallBase = true }; IExtractMethodExtraction SUT = extraction.Object; var codeModule = new Mock <ICodeModuleWrapper>(); var model = new Mock <IExtractMethodModel>(); var selection = new Selection(7, 1, 7, 1); model.Setup(m => m.PositionForNewMethod).Returns(selection); var methodMock = new Mock <ExtractedMethod>() { CallBase = true }; var method = methodMock.Object; method.Accessibility = Accessibility.Private; method.Parameters = new List <ExtractedParameter>(); method.MethodName = "NewMethod"; methodMock.Setup(m => m.NewMethodCall()).Returns("theMethodCall"); model.Setup(m => m.Method).Returns(method); extraction.Setup(em => em.constructLinesOfProc(It.IsAny <ICodeModuleWrapper>(), It.IsAny <IExtractMethodModel>())).Returns("theMethodCall"); extraction.Setup(em => em.removeSelection(It.IsAny <ICodeModuleWrapper>(), It.IsAny <IEnumerable <Selection> >())); var inserted = new List <Tuple <int, string> >(); codeModule.Setup(cm => cm.InsertLines(It.IsAny <int>(), It.IsAny <string>())) .Callback <int, string>((line, data) => inserted.Add(Tuple.Create(line, data))); SUT.apply(codeModule.Object, model.Object, selection); // selection.StartLine = 7 var expected = Tuple.Create(7, "theMethodCall"); var actual = inserted[1]; //Make sure the second insert inserted the methodCall higher up. Assert.AreEqual(expected, actual); }
public void shouldInsertNewMethodAtGivenLineNoBeforeInsertingMethodCall() { var newProc = @" Public Sub NewMethod() DebugPrint ""a"" End Sub"; var extraction = new Mock <ExtractMethodExtraction>() { CallBase = true }; IExtractMethodExtraction SUT = extraction.Object; var codeModule = new Mock <ICodeModuleWrapper>(); var model = new Mock <IExtractMethodModel>(); var selection = new Selection(1, 1, 1, 1); model.Setup(m => m.PositionForNewMethod).Returns(selection); var method = new ExtractedMethod(); method.Accessibility = Accessibility.Private; method.Parameters = new List <ExtractedParameter>(); method.MethodName = "NewMethod"; model.Setup(m => m.Method).Returns(method); extraction.Setup(em => em.constructLinesOfProc(It.IsAny <ICodeModuleWrapper>(), It.IsAny <IExtractMethodModel>())).Returns(newProc); extraction.Setup(em => em.removeSelection(It.IsAny <ICodeModuleWrapper>(), It.IsAny <IEnumerable <Selection> >())); var inserted = new List <Tuple <int, string> >(); codeModule.Setup(cm => cm.InsertLines(It.IsAny <int>(), It.IsAny <string>())).Callback <int, string>((line, data) => inserted.Add(Tuple.Create(line, data))); SUT.apply(codeModule.Object, model.Object, selection); var expected = Tuple.Create(selection.StartLine, newProc); var actual = inserted[0]; //Make sure the first insert inserted the rows. Assert.AreEqual(expected, actual); }