diff --git a/src/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs b/src/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs index 375ffdcd7..657521b51 100644 --- a/src/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs +++ b/src/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs @@ -249,7 +249,9 @@ public void MoveDirectory(string sourcePath, string destPath) foreach (var path in affectedPaths) { var newPath = StringOperations.Replace(path, sourcePath, destPath); - files[newPath] = files[path]; + var entry = files[path]; + entry.Path = newPath; + files[newPath] = entry; files.Remove(path); } } diff --git a/tests/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs b/tests/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs index fa0e8ab4d..4fe25c07d 100644 --- a/tests/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs +++ b/tests/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; -using System.Diagnostics; using System.Linq; using System.Reflection; using System.Text; @@ -250,6 +249,20 @@ public void MockFileSystem_AddFilesFromEmbeddedResource_ShouldAddAllTheFiles() Assert.Contains(XFS.Path(@"C:\SecondTestFile.txt"), fileSystem.AllFiles.ToList()); } + [Test] + public void MockFileSystem_MoveDirectoryAndFile_ShouldMoveCorrectly() + { + var fileSystem = new MockFileSystem(); + fileSystem.AddFile(XFS.Path(@"C:\source\project.txt"), string.Empty); + fileSystem.AddFile(XFS.Path(@"C:\source\subdir\other.txt"), string.Empty); + + fileSystem.Directory.Move(XFS.Path(@"C:\source"), XFS.Path(@"C:\target")); + fileSystem.File.Move(XFS.Path(@"C:\target\project.txt"), XFS.Path(@"C:\target\proj.txt")); + + var expected = new[] { XFS.Path(@"C:\target\proj.txt"), XFS.Path(@"C:\target\subdir\other.txt") }; + CollectionAssert.AreEquivalent(expected, fileSystem.AllFiles); + } + [Test] public void MockFileSystem_RemoveFile_RemovesFiles() {