public void ProcessFile() { var fileSystem = A.Fake<IFileSystem>(); A.CallTo(()=>fileSystem.Path).Returns(A.Fake<PathBase>(x=>x.Wrapping(new PathWrapper()))); var context = A.Fake<ITaskContext>(x=>x.Wrapping(new TaskContext(A.Fake<ILog>(),fileSystem))); var task = new IncrementVersionNumbersInFiles(); const string CurrentVersion = "3.0.0.0"; const string CurrentReleaseVersion = "3.0.0.0"; const string CurrentTestVersion = "3.0.0.0"; const string NewVersion = "3.0.0.1"; const string NoVersion = "asldkfjaw faowkjef awoeijf a;sodkfjaw oeifjaw\nfawo\teifj\tawoef"; const string NoVersionResult = NoVersion; const string HasVersion = "falskdjfawoeka wef\n\r\n\tlaskdjfaoweifjaw awoiefjaw" + CurrentVersion + "fjowiejf\n"; var HasVersionResult = HasVersion.Replace(CurrentVersion,NewVersion); var passFile = A.Fake<FileInfoBase>(); context.Data["WorkingDirectory"] = "c:\\asdf\\"; context.Data["Mode"] = "test"; A.CallTo(() => passFile.FullName).Returns(task.GetUpdateFiles(context).First()); var a = task.GetUpdateFiles(context).First(); Debug.WriteLine(a); A.CallTo(() => passFile.Name).Returns(new FileInfo(task.GetUpdateFiles(context).First()).Name); var fileContents = ""; A.CallTo(() => fileSystem.File.WriteAllText(A<string>.Ignored, A<string>.Ignored)) .Invokes(new Action<string, string>((s, s1) => fileContents = s1)); // has version fileContents = ""; A.CallTo(() => fileSystem.File.ReadAllText(A<string>.Ignored)).Returns(HasVersion); Assert.DoesNotThrow(() => task.ProcessFile(context, passFile, CurrentVersion, CurrentReleaseVersion, CurrentTestVersion,NewVersion)); A.CallTo(()=>fileSystem.File.WriteAllText(A<string>.Ignored, A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(()=>fileSystem.File.ReadAllText(A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Once); Assert.AreEqual(HasVersionResult,fileContents); // no version fileContents = ""; A.CallTo(() => fileSystem.File.ReadAllText(A<string>.Ignored)).Returns(NoVersion); Assert.DoesNotThrow(() => task.ProcessFile(context, passFile, CurrentVersion, CurrentReleaseVersion, CurrentTestVersion, NewVersion)); A.CallTo(()=>fileSystem.File.WriteAllText(A<string>.Ignored, A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(()=>fileSystem.File.ReadAllText(A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Times(2)); Assert.AreEqual("",fileContents); }
public void ProcessFile() { var fileSystem = A.Fake<IFileSystem>(); var context = A.Fake<ITaskContext>(x=>x.Wrapping(new TaskContext(A.Fake<ILog>(),fileSystem))); var task = new IncrementVersionNumbersInFiles(); const string CurrentVersion = "3.0.0.0"; const string NewVersion = "3.0.0.1"; const string NoVersion = "asldkfjaw faowkjef awoeijf a;sodkfjaw oeifjaw\nfawo\teifj\tawoef"; const string NoVersionResult = NoVersion; const string HasVersion = "falskdjfawoeka wef\n\r\n\tlaskdjfaoweifjaw awoiefjaw" + CurrentVersion + "fjowiejf\n"; var HasVersionResult = HasVersion.Replace(CurrentVersion,NewVersion); var ignoreFiles = new[] { "ignore1.txt", "ignore2.txt" }; var passFile = A.Fake<FileInfoBase>(); var nonpassFile = A.Fake<FileInfoBase>(); context.Data["WorkingDirectory"] = "c:\\asdf\\"; context.Data["Mode"] = "test"; A.CallTo(() => passFile.FullName).Returns(@"c:\face\brains\t**s.txt"); A.CallTo(() => nonpassFile.FullName).Returns(@"c:\face\brains\ignore2.txt"); A.CallTo(() => passFile.Name).Returns(@"t**s.txt"); A.CallTo(() => nonpassFile.Name).Returns(@"ignore2.txt"); var fileContents = ""; A.CallTo(() => fileSystem.File.WriteAllText(A<string>.Ignored, A<string>.Ignored)) .Invokes(new Action<string, string>((s, s1) => fileContents = s1)); // file allowed, has version fileContents = ""; A.CallTo(() => fileSystem.File.ReadAllText(A<string>.Ignored)).Returns(HasVersion); Assert.DoesNotThrow(()=>task.ProcessFile(context,passFile,ignoreFiles,CurrentVersion,NewVersion)); A.CallTo(()=>fileSystem.File.WriteAllText(A<string>.Ignored, A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(()=>fileSystem.File.ReadAllText(A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Once); Assert.AreEqual(HasVersionResult,fileContents); // file allowed, no version fileContents = ""; A.CallTo(() => fileSystem.File.ReadAllText(A<string>.Ignored)).Returns(NoVersion); Assert.DoesNotThrow(() => task.ProcessFile(context, passFile, ignoreFiles, CurrentVersion, NewVersion)); A.CallTo(()=>fileSystem.File.WriteAllText(A<string>.Ignored, A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(()=>fileSystem.File.ReadAllText(A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Times(2)); Assert.AreEqual("",fileContents); // file not allowed, has version fileContents = ""; A.CallTo(() => fileSystem.File.ReadAllText(A<string>.Ignored)).Returns(HasVersion); Assert.DoesNotThrow(() => task.ProcessFile(context, nonpassFile, ignoreFiles, CurrentVersion, NewVersion)); A.CallTo(()=>fileSystem.File.WriteAllText(A<string>.Ignored, A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(()=>fileSystem.File.ReadAllText(A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Times(2)); Assert.AreEqual("",fileContents); // file not allowed, has no version fileContents = ""; A.CallTo(() => fileSystem.File.ReadAllText(A<string>.Ignored)).Returns(NoVersion); Assert.DoesNotThrow(() => task.ProcessFile(context, nonpassFile, ignoreFiles, CurrentVersion, NewVersion)); A.CallTo(()=>fileSystem.File.WriteAllText(A<string>.Ignored, A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(()=>fileSystem.File.ReadAllText(A<string>.Ignored)).MustHaveHappened(Repeated.Exactly.Times(2)); Assert.AreEqual("",fileContents); }