@@ -12,21 +12,12 @@ public class GitHelperTests
1212 public void GetGitCommits_ShouldReturnEmptyArray_OnGitFailure ( )
1313 {
1414 // Arrange
15- var processMock = new Mock < IProcessWrapper > ( ) ;
16- var process = new Mock < Process > ( ) ;
17- processMock . Setup ( p => p . Start ( It . IsAny < ProcessStartInfo > ( ) ) ) . Returns ( process . Object ) ;
15+ var processWrapperMock = new Mock < IProcessWrapper > ( ) ;
1816
19- var outputStream = new MemoryStream ( ) ;
20- var writer = new StreamWriter ( outputStream ) ;
21- writer . Write ( string . Empty ) ;
22- writer . Flush ( ) ;
23- outputStream . Position = 0 ;
17+ var processResult = new ProcessResult ( string . Empty , "Error occurred" , 1 ) ;
18+ processWrapperMock . Setup ( pw => pw . Start ( It . IsAny < ProcessStartInfo > ( ) ) ) . Returns ( processResult ) ;
2419
25- process . Setup ( p => p . StandardOutput ) . Returns ( new StreamReader ( outputStream ) ) ;
26- process . Setup ( p => p . StandardError ) . Returns ( new StreamReader ( new MemoryStream ( ) ) ) ;
27- process . Setup ( p => p . ExitCode ) . Returns ( 1 ) ; // Simulate a failure
28-
29- var gitHelper = new GitHelper ( processMock . Object ) ;
20+ var gitHelper = new GitHelper ( processWrapperMock . Object ) ;
3021
3122 // Act
3223 var result = gitHelper . GetGitCommits ( "invalidCommit" , "anotherInvalidCommit" ) ;
@@ -40,24 +31,87 @@ public void GetGitCommits_ShouldReturnEmptyArray_OnGitFailure()
4031 public void GetCommitTime_ShouldThrowException_OnProcessFailure ( )
4132 {
4233 // Arrange
43- var processMock = new Mock < IProcessWrapper > ( ) ;
44- var process = new Mock < Process > ( ) ;
45- processMock . Setup ( p => p . Start ( It . IsAny < ProcessStartInfo > ( ) ) ) . Returns ( process . Object ) ;
34+ var processWrapperMock = new Mock < IProcessWrapper > ( ) ;
35+
36+ var processResult = new ProcessResult ( string . Empty , "fatal: bad object invalidCommit" , 1 ) ;
37+ processWrapperMock . Setup ( pw => pw . Start ( It . IsAny < ProcessStartInfo > ( ) ) ) . Returns ( processResult ) ;
38+
39+ var gitHelper = new GitHelper ( processWrapperMock . Object ) ;
40+
41+ // Act & Assert
42+ var exception = Assert . Throws < Exception > ( ( ) => gitHelper . GetCommitTime ( "invalidCommit" ) ) ;
43+ Assert . Equal ( "Error getting commit time: fatal: bad object invalidCommit" , exception . Message ) ;
44+ }
45+
46+ [ Fact ]
47+ public void GetCommitTime_ShouldReturnCorrectTime_OnSuccess ( )
48+ {
49+ // Arrange
50+ var processWrapperMock = new Mock < IProcessWrapper > ( ) ;
4651
47- var outputStream = new MemoryStream ( ) ;
48- var writer = new StreamWriter ( outputStream ) ;
49- writer . Write ( string . Empty ) ;
50- writer . Flush ( ) ;
51- outputStream . Position = 0 ;
52+ var processResult = new ProcessResult ( "2023-08-21 12:34:56 +0000" , string . Empty , 0 ) ;
53+ processWrapperMock . Setup ( pw => pw . Start ( It . IsAny < ProcessStartInfo > ( ) ) ) . Returns ( processResult ) ;
5254
53- process . Setup ( p => p . StandardOutput ) . Returns ( new StreamReader ( outputStream ) ) ;
54- process . Setup ( p => p . StandardError ) . Returns ( new StreamReader ( new MemoryStream ( ) ) ) ;
55- process . Setup ( p => p . ExitCode ) . Returns ( 1 ) ; // Simulate a failure
55+ var gitHelper = new GitHelper ( processWrapperMock . Object ) ;
56+
57+ // Act
58+ var result = gitHelper . GetCommitTime ( "validCommitHash" ) ;
59+
60+ // Assert
61+ Assert . Equal ( "2023-08-21 12:34:56 +0000" , result ) ;
62+ }
63+
64+ [ Fact ]
65+ public void RunGitShow_ShouldCreateOutputFile_OnSuccess ( )
66+ {
67+ // Arrange
68+ var processWrapperMock = new Mock < IProcessWrapper > ( ) ;
5669
57- var gitHelper = new GitHelper ( processMock . Object ) ;
70+ var fileContent = "Sample file content from git show" ;
71+ var processResult = new ProcessResult ( fileContent , string . Empty , 0 ) ;
72+ processWrapperMock . Setup ( pw => pw . Start ( It . IsAny < ProcessStartInfo > ( ) ) ) . Returns ( processResult ) ;
73+
74+ var gitHelper = new GitHelper ( processWrapperMock . Object ) ;
75+
76+ var outputFilePath = "test_output.txt" ;
77+
78+ // Ensure the output file does not exist before the test
79+ if ( File . Exists ( outputFilePath ) )
80+ File . Delete ( outputFilePath ) ;
81+
82+ // Act
83+ gitHelper . RunGitShow ( "validCommitHash" , "path/to/file.txt" , outputFilePath ) ;
84+
85+ // Assert
86+ Assert . True ( File . Exists ( outputFilePath ) ) ;
87+ var writtenContent = File . ReadAllText ( outputFilePath ) ;
88+ Assert . Equal ( fileContent , writtenContent ) ;
89+
90+ // Clean up
91+ File . Delete ( outputFilePath ) ;
92+ }
93+
94+ [ Fact ]
95+ public void RunGitShow_ShouldThrowException_OnProcessFailure ( )
96+ {
97+ // Arrange
98+ var processWrapperMock = new Mock < IProcessWrapper > ( ) ;
99+
100+ var processResult = new ProcessResult ( string . Empty , "fatal: path 'file.txt' does not exist in 'invalidCommitHash'" , 1 ) ;
101+ processWrapperMock . Setup ( pw => pw . Start ( It . IsAny < ProcessStartInfo > ( ) ) ) . Returns ( processResult ) ;
102+
103+ var gitHelper = new GitHelper ( processWrapperMock . Object ) ;
104+
105+ var outputFilePath = "test_output.txt" ;
58106
59107 // Act & Assert
60- Assert . Throws < Exception > ( ( ) => gitHelper . GetCommitTime ( "invalidCommit" ) ) ;
108+ var exception = Assert . Throws < Exception > ( ( ) =>
109+ gitHelper . RunGitShow ( "invalidCommitHash" , "file.txt" , outputFilePath ) ) ;
110+
111+ Assert . Equal ( "Error running git show: fatal: path 'file.txt' does not exist in 'invalidCommitHash'" , exception . Message ) ;
112+
113+ // Ensure the output file was not created
114+ Assert . False ( File . Exists ( outputFilePath ) ) ;
61115 }
62116 }
63117}
0 commit comments