public virtual void UpdateSettings()
        {
            if (SaveSettings)
            {
                Step1Settings settings = new Step1Settings
                {
                    FindOnlyUniqueFiles = FindOnlyUniqueFiles,
                    PathsFrom = PathsFrom.ToArray(),
                    SelectedFilesLimitID = SelectedFilesLimit != null ? SelectedFilesLimit.ID : (int?)null,
                    SelectedSizeID = FilesSize.SelectedSize != null ? FilesSize.SelectedSize.ID : (int?)null,
                    SizeLimit = FilesSize.SizeLimit,
                    FilesNumber = FilesNumber.Number,
                    FilesInFolderNumber = FilesAndFolders.FilesNumber,
                    FoldersNumber = FilesAndFolders.FoldersNumber,
                    SaveSettings = SaveSettings
                };

                _settingsService.SaveSettings("Step1Settings", settings);
            }
            else
            {
                _settingsService.RemoveSettings("Step1Settings");
            }
        }
 public virtual FilesSizeLimitSettings GetFilesSizeLimitSettings(Step1Settings settings = null)
 {
     if (settings != null)
     {
         return new FilesSizeLimitSettings(settings.SelectedSizeID, settings.SizeLimit);
     }
     else
     {
         return new FilesSizeLimitSettings();
     }
 }
 public virtual FilesAndFoldersLimitSettings GetFilesAndFoldersLimitSettings(Step1Settings settings = null)
 {
     if (settings != null)
     {
         return new FilesAndFoldersLimitSettings(settings.FoldersNumber, settings.FilesInFolderNumber, settings.OrganizeFiles);
     }
     else
     {
         return new FilesAndFoldersLimitSettings();
     }
 }
 public virtual FilesNumberLimitSettings GetFilesNumberLimitSettings(Step1Settings settings = null)
 {
     if (settings != null)
     {
         return new FilesNumberLimitSettings(settings.FilesNumber);
     }
     else
     {
         return new FilesNumberLimitSettings();
     }
 }
        public void Initialize_LoadSavedSettings_ViewModelIsInitializedWithLoadedSettings()
        {
            Step1Settings savedSettings = new Step1Settings
            {
                PathsFrom = new string [] { "TestPathFrom" },
                SelectedFilesLimitID = 1,
                SaveSettings = true,
                SelectedSizeID = 5,
                FindOnlyUniqueFiles = true,
                SizeLimit = 0.0001,
                FilesNumber = 1111,
                FoldersNumber = 22222,
                FilesInFolderNumber = 3333,
                OrganizeFiles = true
            };

            Mock<FilesSizeLimitSettings> filesSizeLimitSettingsMock = new Mock<FilesSizeLimitSettings>(It.IsAny<int>(), It.IsAny<double>());
            Mock<FilesNumberLimitSettings> filesNumberLimitSettingsMock = new Mock<FilesNumberLimitSettings>(It.IsAny<int>());
            Mock<FilesAndFoldersLimitSettings> filesAndFoldersLimitSettingsMock = new Mock<FilesAndFoldersLimitSettings>(It.IsAny<int>(), It.IsAny<int>(), It.IsAny<bool>());

            _settingsServiceMock.Setup(x => x.LoadSettings<Step1Settings>("Step1Settings")).Returns(savedSettings);

            _step1ViewModelMock.SetupGet(x => x.FilesLimitTypes).Returns(new ReadOnlyCollection<Limit>(new List<Limit>()
            {
                new Limit { ID = 2 },
                new Limit { ID = 1 },
                new Limit { ID = 100 }
            }));

            _step1ViewModelMock.Setup(x => x.GetFilesSizeLimitSettings(savedSettings)).Returns(filesSizeLimitSettingsMock.Object);
            _step1ViewModelMock.Setup(x => x.GetFilesNumberLimitSettings(savedSettings)).Returns(filesNumberLimitSettingsMock.Object);
            _step1ViewModelMock.Setup(x => x.GetFilesAndFoldersLimitSettings(savedSettings)).Returns(filesAndFoldersLimitSettingsMock.Object);

            Assert.AreEqual(savedSettings.PathsFrom, _step1ViewModelMock.Object.PathsFrom);
            Assert.AreEqual(_step1ViewModelMock.Object.FilesLimitTypes[1], _step1ViewModelMock.Object.SelectedFilesLimit);
            Assert.AreEqual(savedSettings.FindOnlyUniqueFiles, _step1ViewModelMock.Object.FindOnlyUniqueFiles);
            Assert.AreEqual(savedSettings.SaveSettings, _step1ViewModelMock.Object.SaveSettings);
            Assert.AreEqual(filesSizeLimitSettingsMock.Object, _step1ViewModelMock.Object.FilesSize);
            Assert.AreEqual(filesNumberLimitSettingsMock.Object, _step1ViewModelMock.Object.FilesNumber);
            Assert.AreEqual(filesAndFoldersLimitSettingsMock.Object, _step1ViewModelMock.Object.FilesAndFolders);
        }