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 GetUpdateFiles() { 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(); //A.CallTo(() => task.CreateUpdateString(A<ITaskContext>.Ignored, A<string>.Ignored)).Returns(""); context.Data["WorkingDirectory"] = ""; context.Data["Mode"] = "release"; // Test modes context.Data["Mode"] = "release"; Assert.DoesNotThrow(() => task.GetUpdateFiles(context)); Assert.AreEqual(24, task.GetUpdateFiles(context).Length); context.Data["Mode"] = "test"; Assert.DoesNotThrow(() => task.GetUpdateFiles(context)); Assert.AreEqual(24, task.GetUpdateFiles(context).Length); context.Data["Mode"] = "a"; Assert.Throws <InvalidOperationException>(() => task.GetUpdateFiles(context)); string[] result = null; // Release Mode Specific Files context.Data["Mode"] = "release"; result = task.GetUpdateFiles(context); Assert.True(result.Any(x => x.Contains("deploy\\currentversion.txt"))); Assert.True(result.Any(x => x.Contains("installer\\Install.nsi"))); Assert.True(result.Any(x => x.Contains("octgnFX\\Octgn\\CurrentReleaseVersion.txt"))); Assert.False(result.Any(x => x.Contains("deploy\\currentversiontest.txt"))); Assert.False(result.Any(x => x.Contains("installer\\InstallTest.nsi"))); Assert.False(result.Any(x => x.Contains("octgnFX\\Octgn\\CurrentTestVersion.txt"))); // Release Mode Specific Files context.Data["Mode"] = "test"; result = task.GetUpdateFiles(context); Assert.True(result.Any(x => x.Contains("deploy\\currentversiontest.txt"))); Assert.True(result.Any(x => x.Contains("installer\\InstallTest.nsi"))); Assert.True(result.Any(x => x.Contains("octgnFX\\Octgn\\CurrentTestVersion.txt"))); Assert.False(result.Any(x => x.Contains("deploy\\currentversion.txt"))); Assert.False(result.Any(x => x.Contains("installer\\Install.nsi"))); Assert.False(result.Any(x => x.Contains("octgnFX\\Octgn\\CurrentReleaseVersion.txt"))); }