public void Win32ProgramRepository_MustCallOnAppRenamedForUrlApps_WhenRenamedEventIsRaised(string directory, string oldpath, string newpath) { // Arrange Win32ProgramRepository _win32ProgramRepository = new Win32ProgramRepository(_fileSystemWatchers, new BinaryStorage <IList <Win32Program> >("Win32"), _settings, _pathsToWatch); RenamedEventArgs e = new RenamedEventArgs(WatcherChangeTypes.Renamed, directory, newpath, oldpath); // File.ReadAllLines must be mocked for url applications var mockFile = new Mock <IFileWrapper>(); mockFile.Setup(m => m.ReadAllLines(It.IsAny <string>())).Returns(new string[] { "URL=steam://rungameid/1258080", "IconFile=iconFile" }); Win32Program.FileWrapper = mockFile.Object; string oldFullPath = directory + "\\" + oldpath; string newFullPath = directory + "\\" + newpath; Win32Program olditem = Win32Program.GetAppFromPath(oldFullPath); Win32Program newitem = Win32Program.GetAppFromPath(newFullPath); _win32ProgramRepository.Add(olditem); // Act _fileSystemMocks[0].Raise(m => m.Renamed += null, e); // Assert Assert.AreEqual(_win32ProgramRepository.Count(), 1); Assert.IsTrue(_win32ProgramRepository.Contains(newitem)); Assert.IsFalse(_win32ProgramRepository.Contains(olditem)); }
public void Win32ProgramRepository_MustCallOnAppRenamedForExeApps_WhenRenamedEventIsRaised(string directory, string oldpath, string newpath) { // Arrange Win32ProgramRepository _win32ProgramRepository = new Win32ProgramRepository(_fileSystemWatchers, new BinaryStorage <IList <Win32Program> >("Win32"), _settings, _pathsToWatch); RenamedEventArgs e = new RenamedEventArgs(WatcherChangeTypes.Renamed, directory, newpath, oldpath); string oldFullPath = directory + "\\" + oldpath; string newFullPath = directory + "\\" + newpath; // FileVersionInfo must be mocked for exe applications var mockFileVersionInfo = new Mock <IFileVersionInfoWrapper>(); mockFileVersionInfo.Setup(m => m.GetVersionInfo(It.IsAny <string>())).Returns((FileVersionInfo)null); Win32Program.FileVersionInfoWrapper = mockFileVersionInfo.Object; Win32Program olditem = Win32Program.GetAppFromPath(oldFullPath); Win32Program newitem = Win32Program.GetAppFromPath(newFullPath); _win32ProgramRepository.Add(olditem); // Act _fileSystemMocks[0].Raise(m => m.Renamed += null, e); // Assert Assert.AreEqual(_win32ProgramRepository.Count(), 1); Assert.IsTrue(_win32ProgramRepository.Contains(newitem)); Assert.IsFalse(_win32ProgramRepository.Contains(olditem)); }
private void OnAppRenamed(object sender, RenamedEventArgs e) { string oldPath = e.OldFullPath; string newPath = e.FullPath; string extension = Path.GetExtension(newPath); Programs.Win32Program newApp = Programs.Win32Program.GetAppFromPath(newPath); Programs.Win32Program oldApp = null; // Once the shortcut application is renamed, the old app does not exist and therefore when we try to get the FullPath we get the lnk path instead of the exe path // This changes the hashCode() of the old application. // Therefore, instead of retrieving the old app using the GetAppFromPath(), we construct the application ourself // This situation is not encountered for other application types because the fullPath is the path itself, instead of being computed by using the path to the app. try { if (extension.Equals(lnkExtension, StringComparison.OrdinalIgnoreCase)) { oldApp = new Win32Program() { Name = Path.GetFileNameWithoutExtension(e.OldName), ExecutableName = newApp.ExecutableName, FullPath = newApp.FullPath }; } else if (extension.Equals(urlExtension, StringComparison.OrdinalIgnoreCase)) { oldApp = new Win32Program() { Name = Path.GetFileNameWithoutExtension(e.OldName), ExecutableName = Path.GetFileName(e.OldName), FullPath = newApp.FullPath }; } else { oldApp = Win32Program.GetAppFromPath(oldPath); } } catch (Exception ex) { Log.Info($"|Win32ProgramRepository|OnAppRenamed-{extension}Program|{oldPath}|Unable to create program from {oldPath}| {ex.Message}"); } // To remove the old app which has been renamed and to add the new application. if (oldApp != null) { Remove(oldApp); } if (newApp != null) { Add(newApp); } }
public void Win32ProgramRepository_MustCallOnAppDeletedForApprefApps_WhenDeletedEventIsRaised(string directory, string path) { // Arrange Win32ProgramRepository _win32ProgramRepository = new Win32ProgramRepository(_fileSystemWatchers, new BinaryStorage <IList <Win32Program> >("Win32"), _settings, _pathsToWatch); FileSystemEventArgs e = new FileSystemEventArgs(WatcherChangeTypes.Deleted, directory, path); string fullPath = directory + "\\" + path; Win32Program item = Win32Program.GetAppFromPath(fullPath); _win32ProgramRepository.Add(item); // Act _fileSystemMocks[0].Raise(m => m.Deleted += null, e); // Assert Assert.AreEqual(_win32ProgramRepository.Count(), 0); }
public void Win32ProgramRepository_MustCallOnAppRenamedForApprefApps_WhenRenamedEventIsRaised(string directory, string oldpath, string newpath) { // Arrange Win32ProgramRepository _win32ProgramRepository = new Win32ProgramRepository(_fileSystemWatchers, new BinaryStorage <IList <Win32Program> >("Win32"), _settings, _pathsToWatch); RenamedEventArgs e = new RenamedEventArgs(WatcherChangeTypes.Renamed, directory, newpath, oldpath); string oldFullPath = directory + "\\" + oldpath; string newFullPath = directory + "\\" + newpath; Win32Program olditem = Win32Program.GetAppFromPath(oldFullPath); Win32Program newitem = Win32Program.GetAppFromPath(newFullPath); _win32ProgramRepository.Add(olditem); // Act _fileSystemMocks[0].Raise(m => m.Renamed += null, e); // Assert Assert.AreEqual(_win32ProgramRepository.Count(), 1); Assert.IsTrue(_win32ProgramRepository.Contains(newitem)); Assert.IsFalse(_win32ProgramRepository.Contains(olditem)); }
public void Win32ProgramRepository_MustCallOnAppDeletedForExeApps_WhenDeletedEventIsRaised(string directory, string path) { // Arrange Win32ProgramRepository _win32ProgramRepository = new Win32ProgramRepository(_fileSystemWatchers, new BinaryStorage <IList <Win32Program> >("Win32"), _settings, _pathsToWatch); FileSystemEventArgs e = new FileSystemEventArgs(WatcherChangeTypes.Deleted, directory, path); // FileVersionInfo must be mocked for exe applications var mockFileVersionInfo = new Mock <IFileVersionInfoWrapper>(); mockFileVersionInfo.Setup(m => m.GetVersionInfo(It.IsAny <string>())).Returns((FileVersionInfo)null); Win32Program.FileVersionInfoWrapper = mockFileVersionInfo.Object; string fullPath = directory + "\\" + path; Win32Program item = Win32Program.GetAppFromPath(fullPath); _win32ProgramRepository.Add(item); // Act _fileSystemMocks[0].Raise(m => m.Deleted += null, e); // Assert Assert.AreEqual(_win32ProgramRepository.Count(), 0); }