Skip to content

Commit a9dc4a3

Browse files
hangyfgreinacher
andauthored
Copy metadata when a MockFile is moved (#559)
* fix: Copy metadata when a MockFile is moved * Use normalized path Co-authored-by: Florian Greinacher <fgreinacher@users.noreply.github.com>
1 parent 3305021 commit a9dc4a3

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

System.IO.Abstractions.TestingHelpers.Tests/MockFileMoveTests.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,5 +362,24 @@ public void MockFile_Move_ShouldThrowExceptionWhenSourceDoesNotExist_EvenWhenCop
362362

363363
Assert.Throws<FileNotFoundException>(action);
364364
}
365+
366+
[Test]
367+
public void MockFile_Move_ShouldRetainMetadata()
368+
{
369+
string sourceFilePath = XFS.Path(@"c:\something\demo.txt");
370+
string sourceFileContent = "this is some content";
371+
DateTimeOffset creationTime = DateTimeOffset.Now;
372+
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
373+
{
374+
{sourceFilePath, new MockFileData(sourceFileContent){CreationTime = creationTime}},
375+
{XFS.Path(@"c:\somethingelse\dummy.txt"), new MockFileData(new byte[] {0})}
376+
});
377+
378+
string destFilePath = XFS.Path(@"c:\somethingelse\demo1.txt");
379+
380+
fileSystem.File.Move(sourceFilePath, destFilePath);
381+
382+
Assert.That(fileSystem.File.GetCreationTimeUtc(destFilePath), Is.EqualTo(creationTime.UtcDateTime));
383+
}
365384
}
366-
}
385+
}

System.IO.Abstractions.TestingHelpers/MockFile.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ public override void Move(string sourceFileName, string destFileName)
360360
}
361361
VerifyDirectoryExists(destFileName);
362362

363-
mockFileDataAccessor.AddFile(destFileName, new MockFileData(sourceFile.Contents));
363+
mockFileDataAccessor.AddFile(destFileName, new MockFileData(sourceFile));
364364
mockFileDataAccessor.RemoveFile(sourceFileName);
365365
}
366366

0 commit comments

Comments
 (0)