public void ToFile_CommitDocumentHasSubjectAndBody_BodyIsWritten() { const string filePath = "COMMIT_EDITMSG"; var body = new[] { "Line 1", "Line 2" }; var fileSystemMock = new Mock <IFileSystem>(); fileSystemMock.Setup(fs => fs.WriteAllLines(It.IsAny <string>(), It.IsAny <IEnumerable <string> >())) .Callback <string, IEnumerable <string> >(Assert); var commitDocument = new CommitDocument { Subject = "DoesntMatter", Body = body }; var commitFileWriter = new CommitFileWriter(fileSystemMock.Object); commitFileWriter.ToFile(filePath, commitDocument); void Assert(string actualFilePath, IEnumerable <string> actualContents) { actualContents.Should().Contain(body); } }
public void ToFile_CommitDocumentIsNull_ThrowsArgumentException() { var commitFileWriter = new CommitFileWriter(Mock.Of <IFileSystem>()); Action toFile = () => commitFileWriter.ToFile("NotNullString", null); toFile.ShouldThrow <ArgumentException>(); }
public void ToFile_FilePathIsInvalid_ThrowsArgumentException(string filePath) { var commitFileWriter = new CommitFileWriter(Mock.Of <IFileSystem>()); Action toFile = () => commitFileWriter.ToFile(filePath, new CommitDocument()); toFile.ShouldThrow <ArgumentException>(); }
public void ToFile_CommitDocumentHasSubject_SubjectIsWritten() { const string filePath = "COMMIT_EDITMSG"; const string subject = "Commit subject"; var fileSystemMock = new Mock <IFileSystem>(); var commitDocument = new CommitDocument { Subject = subject }; var commitFileWriter = new CommitFileWriter(fileSystemMock.Object); commitFileWriter.ToFile(filePath, commitDocument); fileSystemMock.Verify(fs => fs.WriteAllLines(filePath, It.Is <IEnumerable <string> >(c => c.Contains(subject))), Times.Once()); }
public void ToFile_DiskAccessFails_ThrowsGitModelExceptionWithCorrectInnerException() { var innerException = new UnauthorizedAccessException(); var fileSystemMock = new Mock <IFileSystem>(); fileSystemMock.Setup(fs => fs.WriteAllLines(It.IsAny <string>(), It.IsAny <IEnumerable <string> >())) .Throws(innerException); var commitDocument = new CommitDocument { Subject = "Valid Subject", Body = new[] { "Valid Body" } }; var commitFileWriter = new CommitFileWriter(fileSystemMock.Object); Action toFile = () => commitFileWriter.ToFile("Valid File Path", commitDocument); toFile.ShouldThrow <GitModelException>().Which.InnerException.Should().Be(innerException); }