public GameSetting GetGameSetting(string gameName, string publisherName, string developerName, string platformFolder, string gameRootFolder, List <DisableIntroductionAction> disablingIntroductionActions, IllustrationPlatformEnum platformType, string illustrationUrl)
        {
            //Determine if illustration is valid
            var action  = new ValidateIllustrationAction(platformType, illustrationUrl);
            var isValid = action.Execute();

            //Determine illustration Code
            var illustration     = IllustrationPlatformEnum.Unknown;
            var illustrationCode = string.Empty;

            if (isValid)
            {
                var extractIllustrationCodeAction = new ExtractIllustrationCodeAction(platformType, illustrationUrl);
                illustrationCode = extractIllustrationCodeAction.Execute();
                illustration     = platformType;
            }

            //Determine rootValidationRule
            var generateRootValidationRulesAction = new GenerateRootValidationRulesAction(_fileSystemDal);
            var validationRules = generateRootValidationRulesAction.Execute(Path.Combine(platformFolder, gameRootFolder)).ToList();

            //Create new game settings
            var generateNewGameSetting = new GenerateNewGameSettingAction(_gameSettingsRepository);

            return(generateNewGameSetting.Execute(gameName, publisherName, developerName, platformFolder,
                                                  gameRootFolder, disablingIntroductionActions, validationRules, illustration, illustrationCode));
        }
        public void GameRootFolderDontExists()
        {
            //Test data
            const string dirFolder = "customDirFolder";

            //Set mocks
            var fileSystemDalMock = MockRepository.GenerateMock <IFileSystemDal>();

            fileSystemDalMock.Expect(x => x.DirectoryExists(Arg <string> .Is.Equal(dirFolder))).Return(false);

            //Run Tests
            var action = new GenerateRootValidationRulesAction(fileSystemDalMock);

            action.Execute(dirFolder).ToList();
        }
        public void GetAllExesRules()
        {
            //Test data
            const string rootDirFolder = "customDirFolder";
            var          dirList       = new List <DirectoryInfo>();

            //Set stubs
            var dir1 = MockRepository.GenerateStub <DirectoryInfo>();

            dir1.Stub(x => x.Name).Return("subfolder1");
            dir1.Stub(x => x.FullName).Return("fullPathSubfolder1");
            dirList.Add(dir1);

            var exe1 = MockRepository.GenerateStub <FileInfo>();

            exe1.Stub(x => x.Name).Return("exe1.exe");
            exe1.Stub(x => x.FullName).Return(@"customDirFolder\exe1.exe");

            var exe2 = MockRepository.GenerateStub <FileInfo>();

            exe2.Stub(x => x.Name).Return("exe2.exe");
            exe2.Stub(x => x.FullName).Return(@"customDirFolder\subfolder1\exe2.exe");

            //Set mocks
            var fileSystemDalMock = MockRepository.GenerateMock <IFileSystemDal>();

            fileSystemDalMock.Expect(x => x.DirectoryExists(Arg <string> .Is.Anything)).Return(true);
            fileSystemDalMock.Expect(x => x.DirectoryGetChildren(Arg <string> .Is.Equal(rootDirFolder))).Return(dirList);
            fileSystemDalMock.Expect(x => x.DirectoryGetChildren(Arg <string> .Is.Anything)).Return(new DirectoryInfo[0]);
            fileSystemDalMock.Expect(x => x.GetFiles(Arg <string> .Is.Equal(rootDirFolder))).Return(new [] { exe1 });
            fileSystemDalMock.Expect(x => x.GetFiles(Arg <string> .Is.Equal(dir1.FullName))).Return(new[] { exe2 });

            //Run Tests
            var action = new GenerateRootValidationRulesAction(fileSystemDalMock);
            var result = action.Execute(rootDirFolder).ToList();

            //Validate
            fileSystemDalMock.VerifyAllExpectations();
            Assert.AreEqual(3, result.Count);
            Assert.AreEqual(RootValidationTypeEnum.FolderValidation, result[0].Type);
            Assert.AreEqual(dir1.Name, result[0].WitnessName);
            Assert.AreEqual(RootValidationTypeEnum.FileValidation, result[1].Type);
            Assert.AreEqual(exe1.Name, result[1].WitnessName);
            Assert.AreEqual(RootValidationTypeEnum.FileValidation, result[2].Type);
            Assert.AreEqual(dir1.Name + "\\" + exe2.Name, result[2].WitnessName);
        }