public void CopyFilesWhenIndicated(bool shouldInitialize) { var initializationDeterminer = new MockLevelInitializationDeterminer(shouldInitialize); var copyDir = new MockCopyDir(); var levelId = "level"; var levelToInitialize = new Level(id: levelId, folderFilepath: "."); var levelsProvider = new FakeLevelsProvider(new[] { levelToInitialize }); var mockFileSystem = new MockFileSystem(); mockFileSystem.AddDirectory(levelToInitialize.GetMasterFolder()); //will throw error if no master folder var masterFolderLevelInitializer = new MasterFolderLevelInitializer(initializationDeterminer, copyDir, levelsProvider, mockFileSystem.Path); var someUser = "******"; masterFolderLevelInitializer.InitializeIfNecessary(levelId, someUser); Assert.Equal(shouldInitialize, copyDir.DidCopy); Assert.Equal(shouldInitialize, initializationDeterminer.IsMarkedAsInitialized); }
public void RemoveContentsOfProjectFolder(MockFileSystem fs, FakeLevelsProvider provider, Level level, string user) { var initializer = new MasterFolderLevelInitializer(new MockLevelInitializationDeterminer(false), new MockCopyDir(), provider, fs.Path); initializer.Clean(level.Id, user); Assert.Empty(fs.Directory.EnumerateFileSystemEntries("C:\\" + level.GetProjectFolder(user))); }
public void UnmarkUserFolder(FakeLevelsProvider provider, string levelId, string user, string expectedUserFolder) { var determiner = new MockLevelInitializationDeterminer(false, true); var initializer = new MasterFolderLevelInitializer(determiner, new MockCopyDir(), provider, new MockPath(new MockFileSystem())); //This Assert.Throws code is necessary, as we are not testing for any actual IO operations Assert.Throws <DirectoryNotFoundException>(() => initializer.Clean(levelId, user)); Assert.False(determiner.IsMarkedAsInitialized); Assert.Equal(expectedUserFolder, determiner.SuppliedUserFolderPath); }
public void ThrowExceptionIfMasterFolderDoesNotExist(FakeLevelsProvider fakeLevelsProvider, string levelId, string user, string expectedSourceDir, string expectedDestDir) { var determinerIndicatingInitialization = new MockLevelInitializationDeterminer(true); var copyDir = new MockCopyDir(); var path = new MockPath(new MockFileSystem()); var masterFolderLevelInitializer = new MasterFolderLevelInitializer(determinerIndicatingInitialization, copyDir, fakeLevelsProvider, path); var exception = Assert.Throws <DirectoryNotFoundException>(() => masterFolderLevelInitializer.InitializeIfNecessary(levelId, user)); Assert.Equal($"Master folder for level {levelId} not found.", exception.Message); }
public void CopyCorrectFilesToCorrectLocation(FakeLevelsProvider fakeLevelsProvider, string levelId, string user, string expectedSourceDir, string expectedDestDir) { var determinerIndicatingInitialization = new MockLevelInitializationDeterminer(true); var copyDir = new MockCopyDir(); var mockFileSystem = new MockFileSystem(); foreach (var level in fakeLevelsProvider.GetLevels()) { mockFileSystem.AddDirectory(level.GetMasterFolder()); //put master folder in every level folder to prevent error } var masterFolderLevelInitializer = new MasterFolderLevelInitializer(determinerIndicatingInitialization, copyDir, fakeLevelsProvider, mockFileSystem.Path); masterFolderLevelInitializer.InitializeIfNecessary(levelId, user); Assert.Equal(expectedSourceDir, copyDir.SuppliedSourceDir); Assert.Equal(expectedDestDir, copyDir.SuppliedDestDir); }
public static IExecutable MakeApp(string rootPath = ".") { var main = new RouterCommand(); var fs = new FileSystem(); var provider = new FileSystemLevelsProvider(fs, rootPath); var initializer = new MasterFolderLevelInitializer( new UserJsonLevelInitializationDeterminer(fs), new CopyDir(fs), provider, fs.Path); main.Register("levels", new GetLevelsCommand(provider)); main.Register("open", new OpenLevelCommand( initializer, provider)); main.Register("instructions", new GetInstructionsPathCommand(provider)); main.Register("verify", new VerifyCommand( provider, new JarFileVerifier(new JarFileProcessFactory()) )); main.Register("reset", new ResetLevelCommand(initializer)); return(main); }